diff options
Diffstat (limited to 'lang/gcc3/patches/patch-ao')
-rw-r--r-- | lang/gcc3/patches/patch-ao | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lang/gcc3/patches/patch-ao b/lang/gcc3/patches/patch-ao new file mode 100644 index 00000000000..7dc5b15d4ec --- /dev/null +++ b/lang/gcc3/patches/patch-ao @@ -0,0 +1,25 @@ +$NetBSD: patch-ao,v 1.1 2004/04/10 16:37:22 seb Exp $ + +--- gcc/config/sparc/sparc.h 23 Jul 2003 02:41:59 -0000 1.1 ++++ gcc/config/sparc/sparc.h 22 Mar 2004 22:56:10 -0000 1.2 +@@ -1233,6 +1233,20 @@ + {-1, -1, -1, 0x20}, /* GENERAL_OR_EXTRA_FP_REGS */ \ + {-1, -1, -1, 0x3f}} /* ALL_REGS */ + ++/* Defines invalid mode changes. Borrowed from pa64-regs.h. ++ ++ SImode loads to floating-point registers are not zero-extended. ++ The definition for LOAD_EXTEND_OP specifies that integer loads ++ narrower than BITS_PER_WORD will be zero-extended. As a result, ++ we inhibit changes from SImode unless they are to a mode that is ++ identical in size. */ ++ ++#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ ++ (TARGET_ARCH64 \ ++ && (FROM) == SImode \ ++ && GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ ++ ? reg_classes_intersect_p (CLASS, FP_REGS) : 0) ++ + /* The same information, inverted: + Return the class number of the smallest class containing + reg number REGNO. This could be a conditional expression |