diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2011-09-21 19:37:00 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2011-09-21 19:37:00 +0200 |
commit | bd352290bcbe1c80ce47ea3aa4d66d17a6e8d482 (patch) | |
tree | ae971a93333b822559742d9213ede6fd99d96a3b /gcc/config/i386/sse.md | |
parent | 655d51578160132920f0f88daadf8c9453c20045 (diff) | |
download | gcc-bd352290bcbe1c80ce47ea3aa4d66d17a6e8d482.tar.gz |
re PR target/50464 (Using -Ofast -march=bdver1 results in internal compiler error: in extract_insn, at recog.c:2109)
PR target/50464
* config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
operand 1 predicate to register_operand and operand 2 predicate
to nonimmediate_operand.
* config/i386/i386.c (ix86_expand_sse_movcc): When generating
xop_pcmov, force op_true to register. Also, force op_false to
register if it doesn't satisfy nonimmediate_operand predicate.
testsuite/ChangeLog:
PR target/50464
* g++.dg/other/pr50464.C: New test.
From-SVN: r179053
Diffstat (limited to 'gcc/config/i386/sse.md')
-rw-r--r-- | gcc/config/i386/sse.md | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 7c15e1a9a70..6c20ddbd851 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -10401,8 +10401,8 @@ [(set (match_operand:V 0 "register_operand" "=x,x") (if_then_else:V (match_operand:V 3 "nonimmediate_operand" "x,m") - (match_operand:V 1 "vector_move_operand" "x,x") - (match_operand:V 2 "vector_move_operand" "xm,x")))] + (match_operand:V 1 "register_operand" "x,x") + (match_operand:V 2 "nonimmediate_operand" "xm,x")))] "TARGET_XOP" "vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "sse4arg")]) |