diff options
Diffstat (limited to 'gcc/tree-ssa-math-opts.c')
-rw-r--r-- | gcc/tree-ssa-math-opts.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 0b0c866..513ef0b 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -2164,10 +2164,12 @@ perform_symbolic_merge (gimple *source_stmt1, struct symbolic_number *n1, struct symbolic_number *n_start; tree rhs1 = gimple_assign_rhs1 (source_stmt1); - if (TREE_CODE (rhs1) == BIT_FIELD_REF) + if (TREE_CODE (rhs1) == BIT_FIELD_REF + && TREE_CODE (TREE_OPERAND (rhs1, 0)) == SSA_NAME) rhs1 = TREE_OPERAND (rhs1, 0); tree rhs2 = gimple_assign_rhs1 (source_stmt2); - if (TREE_CODE (rhs2) == BIT_FIELD_REF) + if (TREE_CODE (rhs2) == BIT_FIELD_REF + && TREE_CODE (TREE_OPERAND (rhs2, 0)) == SSA_NAME) rhs2 = TREE_OPERAND (rhs2, 0); /* Sources are different, cancel bswap if they are not memory location with |