https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102605
Bug ID: 102605
Summary: address instruction from -fdump-tree-*-gimple doesn't
work with -fgimple
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
Assignee: unassigned at gcc dot gnu.org
Reporter: aldyh at gcc dot gnu.org
Blocks: 101057
Target Milestone: ---
The following snippet:
$ cat y.c
void bar();
char global[10];
void foo(char *p)
{
if (&global[2] == p)
bar();
}
...when converted to GIMPLE:
$ ./cc1 y.c -fdump-tree-ssa-gimple -quiet
$ cat y.c.022t.ssa
void __GIMPLE (ssa)
foo (char * p)
{
__BB(2):
if (p_2(D) == &global[2])
goto __BB3;
else
goto __BB4;
__BB(3):
bar ();
goto __BB4;
__BB(4):
return;
}
Does not compile with -fgimple:
$ mv y.c.022t.ssa z.c
$ ./cc1 z.c -fgimple -quiet
z.c: In function ‘foo’:
z.c:5:17: error: expected expression before ‘&’ token
5 | if (p_2(D) == &global[2])
| ^
z.c: At top level:
z.c:5:27: error: expected identifier or ‘(’ before ‘)’ token
5 | if (p_2(D) == &global[2])
| ^
z.c:7:3: error: expected identifier or ‘(’ before ‘else’
7 | else
| ^~~~
z.c:10:8: error: expected declaration specifiers or ‘...’ before numeric
constant
10 | __BB(3):
| ^
z.c:12:3: error: expected identifier or ‘(’ before ‘goto’
12 | goto __BB4;
| ^~~~
z.c:14:8: error: expected declaration specifiers or ‘...’ before numeric
constant
14 | __BB(4):
| ^
z.c:17:1: error: expected identifier or ‘(’ before ‘}’ token
17 | }
| ^
Is the output from -fdump-tree-*-gimple suppose to be compilable by -fgimple?
If not, what is the appropriate way of representing &global[2] in the gimple
FE?
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101057
[Bug 101057] [gimplefe] GIMPLE frontend issues