diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-04-09 09:57:13 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-04-09 09:57:13 +0000 |
commit | 259ad1be81da18d872d0c62f267c51d0372acf72 (patch) | |
tree | 23e7af90aa24af732316cc754ee0cff9a03ebe6c /gcc/config/i386/constraints.md | |
parent | 1f894d5de8f051dc8886427fe13de49a3392419e (diff) | |
download | gcc-259ad1be81da18d872d0c62f267c51d0372acf72.tar.gz |
PR target/52883
* config/i386/predicates.md (x86_64_zext_general_operand): Prevent
VOIDmode immediate operands.
* config/i386/constraints.md (Wz): New constraint.
* config/i386/i386.md (*zero_extendsidi2_rex64): Use Wz instead of Z.
testsuite/ChangeLog:
PR target/52883
* gcc.target/i386/pr52883.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186243 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/constraints.md')
-rw-r--r-- | gcc/config/i386/constraints.md | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md index 9537d934ade..fda1a0488e8 100644 --- a/gcc/config/i386/constraints.md +++ b/gcc/config/i386/constraints.md @@ -18,7 +18,7 @@ ;; <http://www.gnu.org/licenses/>. ;;; Unused letters: -;;; B H T W +;;; B H T ;;; h k v ;; Integer register constraints. @@ -199,6 +199,16 @@ instructions)." (match_operand 0 "x86_64_immediate_operand")) +;; We use W prefix to denote any number of +;; constant-or-symbol-reference constraints + +(define_constraint "Wz" + "32-bit unsigned integer constant, or a symbolic reference known + to fit that range (for zero-extending conversion operations that + require non-VOIDmode immediate operands)." + (and (match_operand 0 "x86_64_zext_immediate_operand") + (match_test "GET_MODE (op) != VOIDmode"))) + (define_constraint "Z" "32-bit unsigned integer constant, or a symbolic reference known to fit that range (for immediate operands in zero-extending x86-64 |