--- Comment #5 from pinskia at gcc dot gnu dot org 2006-01-15 21:35 ---
I am going to look into this soon but I don't think it is an aliasing issue as
shown by:
# SFT.0_6 = V_MUST_DEF ;
buf[0] = 3;
# VUSE ;
D.1523_8 = buf[0];
--
pinskia at gcc dot gnu dot org changed:
--- Comment #4 from pinskia at gcc dot gnu dot org 2005-11-06 04:52 ---
Here is another testcase:
extern void bar (unsigned int);
extern void bar1 (const char **);
char buf[1];
int
foo (void)
{
const char *p = buf;
const char **q = &p;
buf[0] = 3;
unsigned int ch;
if(**q)
--- Comment #3 from pinskia at gcc dot gnu dot org 2005-11-06 04:50 ---
(In reply to comment #0)
> This function should be optimized to "return 0;", but it isn't.
> Interestingly, if you change "#if 1" to "#if 0", you are going to get
> this optimized.
Not really because SRA works then,