diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2016-02-28 04:32:41 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2016-02-28 04:32:41 +0000 |
commit | c6f718c1eb983225056f8a2c025c437d9c706e43 (patch) | |
tree | 68175df2244fedb4b5b10a693646c1553e161a35 /gnu/gcc | |
parent | 4a83cab9bb31dfec5fb889d6e836e7d141a74fab (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.c | 2 |
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; |