diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config.gcc | 1 | ||||
-rw-r--r-- | gcc/simplify-rtx.cc | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc index d98df88..6dbe880 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -273,6 +273,7 @@ esac # Obsolete configurations. case ${target} in ia64*-*-hpux* | ia64*-*-*vms* | ia64*-*-elf* \ + | m32c*-*-* \ ) if test "x$enable_obsolete" != xyes; then echo "*** Configuration ${target} is obsolete." >&2 diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc index 88d31a7..06b52ca 100644 --- a/gcc/simplify-rtx.cc +++ b/gcc/simplify-rtx.cc @@ -1709,6 +1709,17 @@ simplify_context::simplify_unary_operation_1 (rtx_code code, machine_mode mode, if (GET_MODE (op) == mode) return op; + /* (zero_extend:SI (and:QI X (const))) -> (and:SI (lowpart:SI X) const) + where const does not sign bit set. */ + if (GET_CODE (op) == AND + && CONST_INT_P (XEXP (op, 1)) + && INTVAL (XEXP (op, 1)) > 0) + { + rtx tem = rtl_hooks.gen_lowpart_no_emit (mode, XEXP (op, 0)); + if (tem) + return simplify_gen_binary (AND, mode, tem, XEXP (op, 1)); + } + /* Check for a zero extension of a subreg of a promoted variable, where the promotion is zero-extended, and the target mode is the same as the variable's promotion. */ |