aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2009-11-25 13:58:51 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2009-11-25 13:58:51 +0000
commit5115f061bf337a8e3474b95615c716b7bb4a9df6 (patch)
tree9846cda0d69a7923a6ef3f3db3f711ed300bb0a8
parent70dd156abb5ffb078c9c3dc4a3e4a18a6a1fe351 (diff)
downloadgcc-5115f061bf337a8e3474b95615c716b7bb4a9df6.zip
gcc-5115f061bf337a8e3474b95615c716b7bb4a9df6.tar.gz
gcc-5115f061bf337a8e3474b95615c716b7bb4a9df6.tar.bz2
arm.md (consttable_4): Handle (high ...).
2009-11-25 Paul Brook <paul@codesourcery.com> gcc/ * config/arm/arm.md (consttable_4): Handle (high ...). From-SVN: r154648
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/arm/arm.md7
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 855e613..ff72fed 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2009-11-25 Paul Brook <paul@codesourcery.com>
+
+ * config/arm/arm.md (consttable_4): Handle (high ...).
+
2009-11-25 Robert Nelson <robert.nelson@digikey.com>
Richard Earnshaw <rearnsha@arm.com>
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 8527208..9940292 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -10957,6 +10957,13 @@
}
break;
default:
+ /* XXX: Sometimes gcc does something really dumb and ends up with
+ a HIGH in a constant pool entry, usually because it's trying to
+ load into a VFP register. We know this will always be used in
+ combination with a LO_SUM which ignores the high bits, so just
+ strip off the HIGH. */
+ if (GET_CODE (x) == HIGH)
+ x = XEXP (x, 0);
assemble_integer (x, 4, BITS_PER_WORD, 1);
mark_symbol_refs_as_used (x);
break;