------- Additional Comments From steven at gcc dot gnu dot org 2005-05-06 08:39 ------- Looks fixed to me. The only problem now is that there is an extra load of 128 as an immediate, I haven't looked at why uncprop doesn't fix this. --------------------------- extern void abort (void) __attribute__ ((__noreturn__)); extern int bar (int, int); int PR19791_test (int mode, int size, unsigned int align) { int align0; int iftmp1; if (mode == 0) { if (align != 128) abort (); } align0 = (int) align; if (mode == 0) { int D1131 = align0 / 8; int D1132 = D1131 + size; int D1133 = D1132 - 1; int D1134 = D1131 - 1; int D1135 = ~D1134; iftmp1 = D1133 & D1135; } else { iftmp1 = size; } return bar (iftmp1, align0); } int PR19791_result (int mode, int size, unsigned int align) { int align0; int iftmp1; if (mode == 0) { if (align != 128) abort (); } align0 = (int) align; if (mode == 0) { int D1131 = ((int) 128) / 8; int D1132 = D1131 + size; int D1133 = D1132 - 1; int D1134 = D1131 - 1; int D1135 = ~D1134; iftmp1 = D1133 & D1135; } else { iftmp1 = size; } return bar (iftmp1, align0); } --------------------------- --------------------------- PR19791_test (mode, size, align) { int D1135; int D1134; int D1133; int D1132; int D1131; int iftmp1; int align0; int D.1579; int D.1578; <bb 0>: if (mode == 0) goto <L0>; else goto <L2>; <L0>:; if (align != 128) goto <L1>; else goto <L4>; <L1>:; abort (); <L2>:; align0 = (int) align; iftmp1 = size; goto <bb 5> (<L6>); <L4>:; iftmp1 = size + 15 & -16; align0 = 128; <L6>:; D.1578 = bar (iftmp1, align0) [tail call]; return D.1578; } PR19791_result (mode, size, align) { int D1135; int D1134; int D1133; int D1132; int D1131; int iftmp1; int align0; int D.1593; int D.1592; <bb 0>: if (mode == 0) goto <L0>; else goto <L2>; <L0>:; if (align != 128) goto <L1>; else goto <L4>; <L1>:; abort (); <L2>:; align0 = (int) align; iftmp1 = size; goto <bb 5> (<L6>); <L4>:; iftmp1 = size + 15 & -16; align0 = 128; <L6>:; D.1592 = bar (iftmp1, align0) [tail call]; return D.1592; } ---------------------------
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19791