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
This commit is contained in:
Kirill Yukhin 2013-11-14 08:33:21 +00:00 committed by Kirill Yukhin
parent d43d39ab6d
commit 2430d1e263
2 changed files with 15 additions and 2 deletions

View File

@ -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>

View File

@ -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