diff options
author | Joern Rennecke <joern.rennecke@embecosm.com> | 2012-11-29 02:39:20 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2012-11-29 02:39:20 +0000 |
commit | 9b7542b9c27aad34dfd70f4d6c3cc9034b9327a8 (patch) | |
tree | 8095015d66f0a6bd9b60a890c1be56064e569ee9 /gcc | |
parent | 2d7aa5780cebd11f16917ca3983cfd65b457317a (diff) | |
download | gcc-9b7542b9c27aad34dfd70f4d6c3cc9034b9327a8.zip gcc-9b7542b9c27aad34dfd70f4d6c3cc9034b9327a8.tar.gz gcc-9b7542b9c27aad34dfd70f4d6c3cc9034b9327a8.tar.bz2 |
* config/epiphany/epiphany.md (isub_i+1): Work around generator bug.
From-SVN: r193919
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.md | 17 |
2 files changed, 12 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a4c7ee3..fb11de0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -10,6 +10,8 @@ * config/epiphany/t-epiphany (SPECS): Set. (specs): New rule. + * config/epiphany/epiphany.md (isub_i+1): Work around generator bug. + 2012-11-28 Jakub Jelinek <jakub@redhat.com> PR debug/36728 diff --git a/gcc/config/epiphany/epiphany.md b/gcc/config/epiphany/epiphany.md index 21e619c..fb55e38 100644 --- a/gcc/config/epiphany/epiphany.md +++ b/gcc/config/epiphany/epiphany.md @@ -1024,19 +1024,22 @@ ; use next_active_insn to look at the 'following' insn. That should ; exist, because peephole2 runs after reload, and there has to be ; a return after an fp_int insn. +; ??? However, we can not even ordinarily match the preceding insn; +; there is some bug in the generators such that then it leaves out +; the check for PARALLEL before the length check for the then-second +; main insn. Observed when compiling compatibility-atomic-c++0x.cc +; from libstdc++-v3. (define_peephole2 - [(match_parallel 5 "float_operation" [(match_operand 6 "" "")]) - (match_parallel 3 "float_operation" + [(match_parallel 3 "float_operation" [(set (match_operand:SI 0 "gpr_operand" "") (match_operator:SI 4 "addsub_operator" [(match_operand:SI 1 "gpr_operand" "") (match_operand:SI 2 "gpr_operand" "")])) (clobber (reg:CC_FP CCFP_REGNUM))])] - "get_attr_sched_use_fpu (peep2_next_insn (0)) - && peep2_regno_dead_p (2, CC_REGNUM) - && get_attr_sched_use_fpu (next_active_insn (peep2_next_insn (1)))" - [(match_dup 5) - (parallel [(set (match_dup 0) (match_dup 4)) + "get_attr_sched_use_fpu (prev_active_insn (peep2_next_insn (0))) + && peep2_regno_dead_p (1, CC_REGNUM) + && get_attr_sched_use_fpu (next_active_insn (peep2_next_insn (0)))" + [(parallel [(set (match_dup 0) (match_dup 4)) (clobber (reg:CC CC_REGNUM))])] ) |