aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2002-12-19 18:06:46 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2002-12-19 17:06:46 +0000
commite54b4cae03726bbceb7c25c8fdcf94bfcb549504 (patch)
tree61a17f1acad917bac38601068e07d2ecf4b0bb3e /gcc/stmt.c
parent7f22efe1d61fc558beafecf6a364cc345f31d69e (diff)
downloadgcc-e54b4cae03726bbceb7c25c8fdcf94bfcb549504.zip
gcc-e54b4cae03726bbceb7c25c8fdcf94bfcb549504.tar.gz
gcc-e54b4cae03726bbceb7c25c8fdcf94bfcb549504.tar.bz2
re PR target/8340 (ICE on x86 inline asm w/ -fPIC)
PR target/8340 * stmt.c (expand_asm_operands): Produce an error when the PIC register is clobbered. From-SVN: r60313
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index af0028f..2fc608c 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1509,7 +1509,16 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
/* Mark clobbered registers. */
if (i >= 0)
- SET_HARD_REG_BIT (clobbered_regs, i);
+ {
+ /* Clobbering the PIC register is an error */
+ if ((unsigned) i == PIC_OFFSET_TABLE_REGNUM)
+ {
+ error ("PIC register `%s' clobbered in `asm'", regname);
+ return;
+ }
+
+ SET_HARD_REG_BIT (clobbered_regs, i);
+ }
}
clear_last_expr ();