aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cse.cc')
-rw-r--r--gcc/cse.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cse.cc b/gcc/cse.cc
index c468700..f9603fd 100644
--- a/gcc/cse.cc
+++ b/gcc/cse.cc
@@ -4951,8 +4951,15 @@ cse_insn (rtx_insn *insn)
&& is_a <scalar_int_mode> (mode, &int_mode)
&& (extend_op = load_extend_op (int_mode)) != UNKNOWN)
{
+#if GCC_VERSION >= 5000
struct rtx_def memory_extend_buf;
rtx memory_extend_rtx = &memory_extend_buf;
+#else
+ /* Workaround GCC < 5 bug, fixed in r5-3834 as part of PR63362
+ fix. */
+ alignas (rtx_def) unsigned char memory_extended_buf[sizeof (rtx_def)];
+ rtx memory_extend_rtx = (rtx) &memory_extended_buf[0];
+#endif
/* Set what we are trying to extend and the operation it might
have been extended with. */