Message ID | alpine.LSU.2.11.1508051555030.19642@zhemvz.fhfr.qr |
---|---|
State | New |
Headers | show |
Richard Biener <rguenther@suse.de> writes: > For reference see below (testing on aarch64 appreciated). > > Bootstrap & regtest running on x86_64-unknown-linux-gnu. > > Richard. > > 2015-08-05 Richard Biener <rguenther@suse.de> > > * gimple-fold.c (gimple_fold_stmt_to_constant_1): Simplify > bool comparison canonicalization and restrict to integers. Fixes all regressions on aarch64. Andreas.
On Wed, Aug 05, 2015 at 02:56:08PM +0100, Richard Biener wrote: > For reference see below (testing on aarch64 appreciated). Looks good to me on aarch64-none-elf. Thanks, James > Bootstrap & regtest running on x86_64-unknown-linux-gnu. > > Richard. > > 2015-08-05 Richard Biener <rguenther@suse.de> > > * gimple-fold.c (gimple_fold_stmt_to_constant_1): Simplify > bool comparison canonicalization and restrict to integers.
Index: gcc/gimple-fold.c =================================================================== --- gcc/gimple-fold.c (revision 226612) +++ gcc/gimple-fold.c (working copy) @@ -5041,20 +5095,12 @@ gimple_fold_stmt_to_constant_1 (gimple s { tree op1 = (*valueize) (gimple_assign_rhs2 (stmt)); op0 = (*valueize) (op0); - if (subcode == NE_EXPR) - { - if (integer_zerop (op1)) - return op0; - else if (integer_zerop (op0)) - return op1; - } - else - { - if (integer_onep (op1)) - return op0; - else if (integer_onep (op0)) - return op1; - } + if (TREE_CODE (op0) == INTEGER_CST) + std::swap (op0, op1); + if (TREE_CODE (op1) == INTEGER_CST + && ((subcode == NE_EXPR && integer_zerop (op1)) + || (subcode == EQ_EXPR && integer_onep (op1)))) + return op0; } } return NULL_TREE;