This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/52437] [4.7 Regression] internal compiler error: in spill_failure, at reload1.c:2120
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 29 Feb 2012 20:32:06 +0000
- Subject: [Bug target/52437] [4.7 Regression] internal compiler error: in spill_failure, at reload1.c:2120
- Auto-submitted: auto-generated
- References: <bug-52437-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52437
--- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2012-02-29 20:32:06 UTC ---
This patch adds missing alternative, and also disparages alternatives that end
with excess register->mem moves.
Index: sse.md
===================================================================
--- sse.md (revision 184630)
+++ sse.md (working copy)
@@ -3895,13 +3895,13 @@
;; see comment above inline_secondary_memory_needed function in i386.c
(define_insn "vec_set<mode>_0"
[(set (match_operand:VI4F_128 0 "nonimmediate_operand"
- "=x,x,x ,x,x,x,x ,x ,m,m ,m")
+ "=x,x,x ,x,x,x,x ,x ,m ,m ,m")
(vec_merge:VI4F_128
(vec_duplicate:VI4F_128
(match_operand:<ssescalarmode> 2 "general_operand"
- " x,m,*r,m,x,x,*rm,*rm,x,fF,*r"))
+ " x,m,*r,m,x,x,*rm,*rm,!x,!*rn,!*fF"))
(match_operand:VI4F_128 1 "vector_move_operand"
- " C,C,C ,C,0,x,0 ,x ,0,0 ,0")
+ " C,C,C ,C,0,x,0 ,x ,0 ,0 ,0")
(const_int 1)))]
"TARGET_SSE"
"@