aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch')
-rw-r--r--recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch b/recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch
new file mode 100644
index 0000000000..c3f3f3d288
--- /dev/null
+++ b/recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch
@@ -0,0 +1,33 @@
+Fix an obvious bug in GCC-4.3.2's ARM code generator.
+
+PR target/37668
+ * arm.c (arm_size_rtx_costs, case NEG): Don't fall through if the
+ result will be in an FPU register.
+
+This has been applied in gcc-4.4.0
+
+ Martin Guy <martinwguy@yahoo.it>
+
+*** gcc-4.3.2/gcc/config/arm/arm.c (revision 142660)
+--- gcc-4.3.2/gcc/config/arm/arm.c (local)
+*************** arm_size_rtx_costs (rtx x, int code, int
+*** 5201,5207 ****
+
+ case NEG:
+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
+! *total = COSTS_N_INSNS (1);
+ /* Fall through */
+ case NOT:
+ *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
+--- 5201,5211 ----
+
+ case NEG:
+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
+! {
+! *total = COSTS_N_INSNS (1);
+! return false;
+! }
+!
+ /* Fall through */
+ case NOT:
+ *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));