For this code:
struct X {double m; int x;};
struct Y {int y; short d;};
struct YY {int y; short d; char c;};
int foo(struct X *x, struct Y *y)
{
x->x = 0;
y->y = 1;
if (x->x != 0)
abort ();
}
int foo_no(struct X *x, struct YY *y)
{
x->x = 0;
y->y = 1;
if (x->x != 0)
abort ();
}
the "if" does not get optimized away (by the dom1 pass) for the "foo_no"
function, but it is optimized for "foo"
The only difference between the 2 functions is that foo_no takes as a parameter
a pointer to a struct that has a "char" field that is not accessed in this
function.
It would be nice if both functions were optimized in the same way.
--
Summary: adding unused char field inhibits optimization
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dann at godzilla dot ics dot uci dot edu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27799