diff options
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r-- | gcc/config/sparc/constraints.md | 4 | ||||
-rw-r--r-- | gcc/config/sparc/linux.h | 3 | ||||
-rw-r--r-- | gcc/config/sparc/linux64.h | 3 |
3 files changed, 6 insertions, 4 deletions
diff --git a/gcc/config/sparc/constraints.md b/gcc/config/sparc/constraints.md index ee0fbbda69a..73c4087d904 100644 --- a/gcc/config/sparc/constraints.md +++ b/gcc/config/sparc/constraints.md @@ -35,10 +35,10 @@ ;; In the non-V9 case, coerce V9 'e' class to 'f', so we can use 'e' in the ;; MD file for V8 and V9. -(define_register_constraint "e" "TARGET_V9 ? EXTRA_FP_REGS : FP_REGS" +(define_register_constraint "e" "(TARGET_FPU ? (TARGET_V9 ? EXTRA_FP_REGS : FP_REGS) : NO_REGS)" "Any floating-point register") -(define_register_constraint "f" "FP_REGS" +(define_register_constraint "f" "(TARGET_FPU ? FP_REGS : NO_REGS)" "Lower floating-point register") (define_register_constraint "h" "(TARGET_V9 && TARGET_V8PLUS ? I64_REGS : NO_REGS)" diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index 530a6ae7065..1272d2aba7d 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -107,7 +107,8 @@ along with GCC; see the file COPYING3. If not see %{Ym,*} \ %{Wa,*:%*} \ -s \ -%{fpic|fPIC|fpie|fPIE|findirect-dispatch:-K PIC} \ +%{fpic|fPIC|fpie|fPIE:-K PIC} \ +%{!.c:%{findirect-dispatch:-K PIC}} \ %(asm_cpu) %(asm_relax)" #undef ASM_OUTPUT_ALIGNED_LOCAL diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index 369c13c8e3c..d8a242758dd 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -236,7 +236,8 @@ along with GCC; see the file COPYING3. If not see %{Ym,*} \ %{Wa,*:%*} \ -s \ -%{fpic|fPIC|fpie|fPIE|findirect-dispatch:-K PIC} \ +%{fpic|fPIC|fpie|fPIE:-K PIC} \ +%{!.c:%{findirect-dispatch:-K PIC}} \ %{mlittle-endian:-EL} \ %(asm_cpu) %(asm_arch) %(asm_relax)" |