arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS case to VFPv1.

gcc/
	* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
	case to VFPv1.

From-SVN: r171520
This commit is contained in:
Richard Sandiford 2011-03-25 18:26:40 +00:00 committed by Richard Sandiford
parent 3ec1c379f9
commit 75f6ec9afd
2 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2011-03-25 Richard Sandiford <richard.sandiford@linaro.org>
* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
case to VFPv1.
2011-03-25 Nathan Froyd <froydnj@codesourcery.com> 2011-03-25 Nathan Froyd <froydnj@codesourcery.com>
* fold-const.c (expr_location_or): New function. * fold-const.c (expr_location_or): New function.

View File

@ -1167,12 +1167,12 @@ enum reg_class
} }
/* FPA registers can't do subreg as all values are reformatted to internal /* FPA registers can't do subreg as all values are reformatted to internal
precision. VFP registers may only be accessed in the mode they precision. In VFPv1, VFP registers could only be accessed in the mode
were set. */ they were set, so subregs would be invalid there too. However, we don't
#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ support VFPv1 at the moment, and the restriction was lifted in VFPv2. */
(GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ #define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
? reg_classes_intersect_p (FPA_REGS, (CLASS)) \ (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
|| reg_classes_intersect_p (VFP_REGS, (CLASS)) \ ? reg_classes_intersect_p (FPA_REGS, (CLASS)) \
: 0) : 0)
/* The class value for index registers, and the one for base regs. */ /* The class value for index registers, and the one for base regs. */