[Bug other/90381] New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduction in r270934
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90381 Segher Boessenkool changed: What|Removed |Added CC||segher at gcc dot gnu.org --- Comment #4 from Segher Boessenkool --- Are bitfields allocated right to left on all LE configs?
[Bug other/90381] New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduction in r270934
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90381 --- Comment #3 from Li Jia He --- Author: helijia Date: Wed May 8 07:52:26 2019 New Revision: 271002 URL: https://gcc.gnu.org/viewcvs?rev=271002=gcc=rev Log: PR other/90381 * gcc.dg/tree-ssa/pr88676-2.c: Add 'target le' option to limit the test case to run on the little endian machine. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/pr88676-2.c
[Bug other/90381] New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduction in r270934
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90381 --- Comment #2 from Richard Biener --- you can use the be or le target specifiers.
[Bug other/90381] New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduction in r270934
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90381 --- Comment #1 from Li Jia He --- Thanks for pointing this out. I used the following code: struct foo1 { int i:1; }; int test1 (struct foo1 *x) { if (x->i == 0) return 1; else if (x->i == 1) return 1; return 0; } to dumped the pass output in front of phiopt1 on be machine: test1 (struct foo1 * x) { unsigned char _1; int _3; signed char _6; : _1 = BIT_FIELD_REF <*x_5(D), 8, 0>; _6 = (signed char) _1; if (_6 >= 0) goto ; [INV] else goto ; [INV] : // predicted unlikely by early return (on trees) predictor. : # _3 = PHI <1(3), 0(2)> return _3; } but, on le machine: test1 (struct foo1 * x) { unsigned char _1; unsigned char _2; int _3; : _1 = BIT_FIELD_REF <*x_5(D), 8, 0>; _2 = _1 & 1; if (_2 == 0) goto ; [INV] else goto ; [INV] : // predicted unlikely by early return (on trees) predictor. : # _3 = PHI <1(3), 0(2)> return _3; } ‘’’ The difference is the comparison code in the if statement, however two_value_replacement will only optimize for EQ_EXPR or NE_EXPR. Can we limit this test case to the le machine ? Thanks.