https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110282

--- Comment #17 from mcccs at gmx dot com ---
Actually my test file in comment 16 is invalid. This means the failure happens
before the optimized pass and it needs the DCE-disabled GCC I described in
comment 15 to reproduce the faulty optimized dump (which is then propagated in
later passes in any GCC).

The problem is that the parameter pointer is not set to the argument so
dereferencing it causes a segfault. Dumping all the passes, this problem is
first present in the output of the pass "x.c.100t.fixup_cfg3.c" as compiled
with the modified GCC with -O3 -fno-dce -fno-ipa-cp -fno-tree-dce -fno-dse
-fno-tree-dse

The previous dump, "x.058t.local-fnsummary2", is sane and looks like this:

int * __GIMPLE (ssa,guessed_local(1073741824))
n (int * o)
{
...
  _3 = __MEM <int> (o_17(D));

...

main ()
{
  __BB(2):
  n (&a);

whereas x.c.100t.fixup_cfg3.c looks like this:

int __GIMPLE (ssa)
main ()
{
  int * o;
...(no assignment to o)...
  _6 = __MEM <int> (o_5(D));


__attribute__((noclone)) to the function fixes the segmentation fault,
__attribute__((noinline)) doesn't.

Reply via email to