--- Comment #20 from rguenth at gcc dot gnu dot org 2006-04-05 16:05
---
Because they are not the same:
(gdb) call debug_generic_expr(0xb7e31c94)
struct noop_tD.2008
(gdb) call debug_generic_expr(0xb7e3505c)
struct noop_tD.2008
generated by
#0 build1_stat (code=NOP_EXPR, type=0xb7e3
--- Comment #19 from pinskia at gcc dot gnu dot org 2006-01-08 05:32
---
Hmm, maybe there is really something else going on here:
struct noop_tD.1999 D.2016;
struct noop_tD.1999 predD.2575;
predD.2575 = (struct noop_tD.1999) D.2016;
Hmm, why is there a cast there? They are th
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-03
03:35 ---
Even though comment #17 is correct, it is not the full story (I have a fix for
the issue in comment #17).
The real problem is that we don't consider function decls as constants so
consider stuff we shoul
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-03
03:03 ---
The real problem can be seen with:
int f(void);
int h(void);
int g(int a)
{
int (*ff)(void) = f;
int (**g)(void);
g = &ff;
(*g)();
h();
(*g)();
}
we mark the value which we calling as escaping
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-03
02:50 ---
hmm, why are things being marked as call clobered when their addresses don't
escape at all.
Mostly:
D.1928_31, is dereferenced, its value escapes, points-to anything
which is the variable for the function
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-24
06:28 ---
The problem here is:
# predD.1714_2 = V_MUST_DEF ;
predD.1714 = fD.1555;
# predD.1718_36 = V_MAY_DEF ;
predD.1718.predD.1583 = &predD.1714;
# predD.1714_41 = V_MAY_DEF ;
# predD.1718_42