summaryrefslogtreecommitdiff
path: root/gnu/gcc
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2016-02-28 04:32:41 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2016-02-28 04:32:41 +0000
commitc6f718c1eb983225056f8a2c025c437d9c706e43 (patch)
tree68175df2244fedb4b5b10a693646c1553e161a35 /gnu/gcc
parent4a83cab9bb31dfec5fb889d6e836e7d141a74fab (diff)
In emit_insxl() force the first operand of the insbl or inswl pattern
into a register. Fixes an ICE when building Mesa with __sync builtins. From Roger Sayle in gcc svn rev 121779 in Feb 2007 before the license change. Tested by miod and matthieu.
Diffstat (limited to 'gnu/gcc')
-rw-r--r--gnu/gcc/gcc/config/alpha/alpha.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gnu/gcc/gcc/config/alpha/alpha.c b/gnu/gcc/gcc/config/alpha/alpha.c
index b9946e3f06c..9d5cf0b3068 100644
--- a/gnu/gcc/gcc/config/alpha/alpha.c
+++ b/gnu/gcc/gcc/config/alpha/alpha.c
@@ -4551,6 +4551,8 @@ emit_insxl (enum machine_mode mode, rtx op1, rtx op2)
else
fn = gen_inswl_le;
}
+ /* The insbl and inswl patterns require a register operand. */
+ op1 = force_reg (mode, op1);
emit_insn (fn (ret, op1, op2));
return ret;