This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Question re missed CSEing at tree level
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: gcc at gcc dot gnu dot org
- Date: Wed, 28 Jul 04 22:23:54 EDT
- Subject: Question re missed CSEing at tree level
While looking at the miscompilation of back_end.adb, I noticed the following
in the t56.tailc file, which makes it all the way out:
<L1>:;
saved_stack.134_91 = __builtin_stack_save ();
save_argv.54_96 = save_argv;
T.271_97 = FRAME.267.next_arg;
next_arg.51_98 = (types__TintB)T.271_97;
T.55_99 = (<unnamed type>)next_arg.51_98;
argv_ptr_100 = (*save_argv.54_96)[T.55_99];
save_argv.233_177 = save_argv;
T.236_176 = (*save_argv.233_177)[T.55_99];
T.240_320 = (*T.236_176)[1]{lb: 1 sz: 1};
if (T.240_320 == 0) goto <L3>; else goto <L5>;
The computations for argv_ptr_100 and t.240_320 are identical and the
second dereference should have been suppressed.
Does anybody have any idea why it wasn't?