aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKirill Yukhin <kirill.yukhin@intel.com>2013-11-14 08:33:21 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2013-11-14 08:33:21 +0000
commit2430d1e2638aa4ae7576460ed87c2441009c8600 (patch)
tree4b41cf8bc8c0b20f74a3ad3a2bb814621d644b85 /gcc
parentd43d39ab6d313bd05391279a87384b1e66a0dd02 (diff)
downloadgcc-2430d1e2638aa4ae7576460ed87c2441009c8600.zip
gcc-2430d1e2638aa4ae7576460ed87c2441009c8600.tar.gz
gcc-2430d1e2638aa4ae7576460ed87c2441009c8600.tar.bz2
re PR target/57491 ([ia64] internal compiler error: in ia64_split_tmode -O2, quadmath)
PR target/57491 * config/ia64/ia64.c (ia64_split_tmode_move): Relax `dead' flag setting. From-SVN: r204777
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/ia64/ia64.c11
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 598268e..1a591cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-11-14 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ PR target/57491
+ * config/ia64/ia64.c (ia64_split_tmode_move): Relax `dead'
+ flag setting.
+
2013-11-14 Jakub Jelinek <jakub@redhat.com>
Uros Bizjak <ubizjak@gmail.com>
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 2b33187..a28575c 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -1529,12 +1529,19 @@ ia64_split_tmode_move (rtx operands[])
&& reg_overlap_mentioned_p (operands[0], operands[1]))
{
rtx base = XEXP (operands[1], 0);
+ rtx first_write = gen_rtx_REG (DImode, REGNO (operands[0]));
while (GET_CODE (base) != REG)
base = XEXP (base, 0);
if (REGNO (base) == REGNO (operands[0]))
- reversed = true;
- dead = true;
+ {
+ reversed = true;
+ first_write = gen_rtx_REG (DImode, REGNO (operands[0]) + 1);
+ }
+
+ if (GET_CODE (operands[0]) == REG
+ && reg_overlap_mentioned_p (first_write, operands[1]))
+ dead = true;
}
/* Another reason to do the moves in reversed order is if the first
element of the target register pair is also the second element of