Skip to content

how to preprocess c file for c2dace input #4

@luwan01

Description

@luwan01

I tried to compile this c file:

#include <stdio.h>

int GetRad (int PRT)
{

	int rad;
	int j = 0;
    for (int i = 0; i <= 31; i++)
    {
        if ((PRT & (1 << i)) == 0) {
            j++;
        }
        else {
            break;
        }
    }

    if (j % 2 == 0) {
        rad = 4;
    }
    else {
        rad = 2;
    }
    return rad;
}

int main(int argc, char *argv[])
{
    int val = 1;
    int ret = 0;
    ret = GetRad(val);

    printf("ret = %d\n", ret);
    return 0;
}

but failed with error messages:

transforming file: HPCCG_preprocessed/test_rad.c
parsing...
filename:  HPCCG_preprocessed/test_rad.c
copying ast...
FILELIST: []
[ValidateAllAttributesPresent]: found 13 integrity exceptions
saving ast after copying to tmp/before.txt
CALL: <c2d_c_ast.DeclRefExpr object at 0x7fee83c8b580>
[ValidateNodeTypes]: found 0 integrity exceptions
saving ast after transformation to tmp/after.txt
Own AST creation done
FUNC:  main
FUNC:  GetRad
Traceback (most recent call last):
  File "c2dace/c2d.py", line 93, in <module>
    c2d_workflow(_dir, filecore, fileextension, autoopt=False, verbose=True, print_ast=True)
  File "/home/luwan/c2dace/c2dace/c2d_workflow.py", line 221, in c2d_workflow
    translator.translate(changed_ast, globalsdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 659, in tu2sdfg
    self.funcdecl2sdfg(i, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 982, in funcdecl2sdfg
    self.translate(node.body, new_sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 996, in basicblock2sdfg
    self.translate(i, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 1323, in call2sdfg
    self.funcdecl2sdfg(i, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 982, in funcdecl2sdfg
    self.translate(node.body, new_sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 996, in basicblock2sdfg
    self.translate(i, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 1292, in forstmt2sdfg
    self.translate(node.body, new_sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 996, in basicblock2sdfg
    self.translate(i, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 1059, in ifstmt2sdfg
    self.translate(node.body_else[0], sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 996, in basicblock2sdfg
    self.translate(i, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 643, in translate
    self.ast_elements[node.__class__](node, sdfg)
  File "/home/luwan/c2dace/c2dace/c2d_ast2sdfg.py", line 719, in break2sdfg
    sdfg.add_edge(break_state, self.last_loop_break[sdfg],
KeyError: <dace.sdfg.sdfg.SDFG object at 0x7fee7d251880>

my dace version is 0.13.3
should I preprocess the c files, and how to?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions