[Bug tree-optimization/24287] New: pure functions cause things to be call clobbered still
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sun Oct 9 17:24:00 GMT 2005
Take the following source:
int g1(int);
int h(int *a, int *b)__attribute__((pure));
void link_error();
int g(void)
{
int t = 0, t1 = 2;
int t2 = h(&t, &t1);
if (t != 0)
link_error ();
if (t1 != 2)
link_error ();
g1(t2);
if (t != 0)
link_error ();
if (t1 != 2)
link_error ();
return t2 == 2;
}
We should not have link_error referenced at all.
Even on the improved aliasing branch we get:
Variable: t, UID 1278, int, is addressable, call clobbered, default def: t_1
Variable: t1, UID 1279, int, is addressable, call clobbered, default def: t1_3
That is incorrect, as t and t1 are not call clobbered as pure functions cannot
cause something to escape.
--
Summary: pure functions cause things to be call clobbered still
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: missed-optimization, alias
Severity: enhancement
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24287
More information about the Gcc-bugs
mailing list