aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2012-06-11 16:03:14 -0700
committerRichard Henderson <rth@gcc.gnu.org>2012-06-11 16:03:14 -0700
commit4522854abf2b61d3019fba080ecb1bdb0162a245 (patch)
tree8917b00bbc8080d68429ef401171cf5114b3e7c3 /gcc
parentf938987f60e922ee81a8fee9b14217d7a1b27c81 (diff)
downloadgcc-4522854abf2b61d3019fba080ecb1bdb0162a245.zip
gcc-4522854abf2b61d3019fba080ecb1bdb0162a245.tar.gz
gcc-4522854abf2b61d3019fba080ecb1bdb0162a245.tar.bz2
* config/alpha/alpha.c (alpha_trampoline_init): Split large constants.
From-SVN: r188405
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/alpha/alpha.c11
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 176e621..5f32514 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2012-06-11 Richard Henderson <rth@redhat.com>
+
+ * config/alpha/alpha.c (alpha_trampoline_init): Split large constants.
+
2012-06-12 Hans-Peter Nilsson <hp@axis.com>
* doc/tm.texi.in (Addressing Modes) <TARGET_LEGITIMIZE_ADDRESS>:
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 6d15bf7..3dda9fb 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -5451,6 +5451,8 @@ alpha_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
chain_value = convert_memory_address (Pmode, chain_value);
#endif
+#define HWI_HEX2(X,Y) (((HOST_WIDE_INT)0x ## X ## u) | 0x ## Y ## u)
+
if (TARGET_ABI_OPEN_VMS)
{
const char *fnname;
@@ -5468,7 +5470,8 @@ alpha_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
the function's procedure descriptor with certain fields zeroed IAW
the VMS calling standard. This is stored in the first quadword. */
word1 = force_reg (DImode, gen_const_mem (DImode, fnaddr));
- word1 = expand_and (DImode, word1, GEN_INT (0xffff0fff0000fff0), NULL);
+ word1 = expand_and (DImode, word1,
+ GEN_INT (HWI_HEX2(ffff0fff,0000fff0)), NULL);
}
else
{
@@ -5479,10 +5482,12 @@ alpha_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
nop
We don't bother setting the HINT field of the jump; the nop
is merely there for padding. */
- word1 = GEN_INT (0xa77b0010a43b0018);
- word2 = GEN_INT (0x47ff041f6bfb0000);
+ word1 = GEN_INT (HWI_HEX2 (a77b0010,a43b0018));
+ word2 = GEN_INT (HWI_HEX2 (47ff041f,6bfb0000));
}
+#undef HWI_HEX2
+
/* Store the first two words, as computed above. */
mem = adjust_address (m_tramp, DImode, 0);
emit_move_insn (mem, word1);