Commit 2430d1e2 by Kirill Yukhin Committed by Kirill Yukhin

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
parent d43d39ab
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> 2013-11-14 Jakub Jelinek <jakub@redhat.com>
Uros Bizjak <ubizjak@gmail.com> Uros Bizjak <ubizjak@gmail.com>
...@@ -1529,12 +1529,19 @@ ia64_split_tmode_move (rtx operands[]) ...@@ -1529,12 +1529,19 @@ ia64_split_tmode_move (rtx operands[])
&& reg_overlap_mentioned_p (operands[0], operands[1])) && reg_overlap_mentioned_p (operands[0], operands[1]))
{ {
rtx base = XEXP (operands[1], 0); rtx base = XEXP (operands[1], 0);
rtx first_write = gen_rtx_REG (DImode, REGNO (operands[0]));
while (GET_CODE (base) != REG) while (GET_CODE (base) != REG)
base = XEXP (base, 0); base = XEXP (base, 0);
if (REGNO (base) == REGNO (operands[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 /* 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 element of the target register pair is also the second element of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment