Fix PR66178, ICE due to misexpansion of constant expressions involving labels.
authorBernd Schmidt <bernds@redhat.com>
Thu, 21 Jan 2016 18:10:03 +0000 (18:10 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Thu, 21 Jan 2016 18:10:03 +0000 (18:10 +0000)
commit9776e6920dec9aa23adbdd7f0c264804c7fe6fdf
tree66b303926820db0d7a4362846c12773014ef8d1e
parenta71c0334f783c44a146b5003a09847571e71f366
Fix PR66178, ICE due to misexpansion of constant expressions involving labels.

PR middle-end/66178
* expr.c (expand_expr_real_2) [PLUS_EXPR, MINUS_EXPR]: Don't
drop EXPAND_INITIALIZER.
* rtl.h (contains_symbolic_reference_p): Declare.
* rtlanal.c (contains_symbolic_reference_p): New function.
* simplify-rtx.c (simplify_binary_operation_1): Don't turn
a subtraction into a NOT if symbolic constants are involved.

testsuite/
PR middle-end/66178
gcc.dg/torture/pr66178.c: New test.

From-SVN: r232689
gcc/ChangeLog
gcc/expr.c
gcc/rtl.h
gcc/rtlanal.c
gcc/simplify-rtx.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr66178.c [new file with mode: 0644]