aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/constraints.md
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2009-07-08 09:41:23 -0700
committerRichard Henderson <rth@gcc.gnu.org>2009-07-08 09:41:23 -0700
commitac2e563fcfce40295dc962d8e98796b794726b0f (patch)
treef71db91f4b324227a6722f9b26010f65116c833b /gcc/config/i386/constraints.md
parentacb78844c730bdb9b411442caa4df7ee78309596 (diff)
downloadgcc-ac2e563fcfce40295dc962d8e98796b794726b0f.zip
gcc-ac2e563fcfce40295dc962d8e98796b794726b0f.tar.gz
gcc-ac2e563fcfce40295dc962d8e98796b794726b0f.tar.bz2
re PR target/38900 (ICE: unable to find a register to spill)
PR target/38900 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c. (enum reg_class): Add CLOBBERED_REGS. (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise. * config/i386/i386.c (ix86_conditional_register_usage): Moved from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit. (ix86_function_ok_for_sibcall): Tidy. Disallow MS->SYSV sibcalls. (ix86_expand_call): Use sibcall_insn_operand when needed. Don't force 64-bit sibcalls into R11. * config/i386/constraints.md (U): New constraint. * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it. (sibcall_1_rex64, sibcall_value_1_rex64): Likewise. (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove. From-SVN: r149373
Diffstat (limited to 'gcc/config/i386/constraints.md')
-rw-r--r--gcc/config/i386/constraints.md5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md
index 134ef61..89722bb 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 TU W
+;;; B H T W
;;; h jk vw z
;; Integer register constraints.
@@ -62,6 +62,9 @@
"The @code{a} and @code{d} registers, as a pair (for instructions
that return half the result in one and half in the other).")
+(define_register_constraint "U" "CLOBBERED_REGS"
+ "The call-clobbered integer registers.")
+
;; Floating-point register constraints.
(define_register_constraint "f"
"TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FLOAT_REGS : NO_REGS"