* config/rs6000/predicates.md (easy_fp_constant): Return 0 for
SFmode and DFmode before reload when
flag_unsafe_math_optimizations not enabled.
From-SVN: r97014
+2005-03-24 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/predicates.md (easy_fp_constant): Return 0 for
+ SFmode and DFmode before reload when
+ flag_unsafe_math_optimizations not enabled.
+
2005-03-24 Geoffrey Keating <geoffk@apple.com>
* config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Add
2005-03-24 Geoffrey Keating <geoffk@apple.com>
* config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Add
long k[2];
REAL_VALUE_TYPE rv;
long k[2];
REAL_VALUE_TYPE rv;
- if (TARGET_E500_DOUBLE)
- return 0;
+ /* Force constants to memory before reload to utilize
+ compress_float_constant.
+ Avoid this when flag_unsafe_math_optimizations is enabled
+ because RDIV division to reciprocal optimization is not able
+ to regenerate the division. */
+ if (TARGET_E500_DOUBLE
+ || (!reload_in_progress && !reload_completed
+ && !flag_unsafe_math_optimizations))
+ return 0;
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_DOUBLE (rv, k);
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_DOUBLE (rv, k);
long l;
REAL_VALUE_TYPE rv;
long l;
REAL_VALUE_TYPE rv;
+ /* Force constants to memory before reload to utilize
+ compress_float_constant.
+ Avoid this when flag_unsafe_math_optimizations is enabled
+ because RDIV division to reciprocal optimization is not able
+ to regenerate the division. */
+ if (!reload_in_progress && !reload_completed
+ && !flag_unsafe_math_optimizations)
+ return 0;
+
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_SINGLE (rv, l);
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_SINGLE (rv, l);