mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-24 20:06:12 +08:00
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:
parent
d43d39ab6d
commit
2430d1e263
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user