From: Uros Bizjak Date: Wed, 22 Feb 2012 19:42:17 +0000 (+0100) Subject: re PR target/52330 (pr50305.c: valgrind problem on invalid asm) X-Git-Tag: releases/gcc-4.5.4~211 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a01c3a8d7b198c0cd206bcd5382286cf1c624855;p=thirdparty%2Fgcc.git re PR target/52330 (pr50305.c: valgrind problem on invalid asm) PR target/52330 * config/i386/i386.c (ix86_print_operand) : Error out if x is not offsettable memory reference. testsuite/ChangeLog: PR target/52330 * gcc.target/i386/pr52330.c: New test. From-SVN: r184491 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 592b954c9bd0..22e48889e13d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-02-22 Uros Bizjak + + PR target/52330 + * config/i386/i386.c (ix86_print_operand) : Error out if x + is not offsettable memory reference. + 2012-02-21 Richard Earnshaw PR target/52294 @@ -54,7 +60,7 @@ 2012-02-09 Peter Bergner - Backport from mainline + Backport from mainline 2012-02-09 Peter Bergner PR middle-end/52140 @@ -62,7 +68,7 @@ 2012-02-09 Andrey Belevantsev - Backport from mainline + Backport from mainline 2012-01-20 Andrey Belevantsev PR target/51106 @@ -79,7 +85,7 @@ family to distinguish PROCESSOR_ATHLON. 2012-02-07 Kai Tietz - Dave Korn + Dave Korn PR target/40068 * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): @@ -90,8 +96,7 @@ Backport from mainline: 2012-01-31 Matthew Gretton-Dann - config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true - condition. + * config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true condition. 2012-01-20 Eric Botcazou diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 07ff3a36c823..dc8920768952 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -11872,6 +11872,13 @@ print_operand (FILE *file, rtx x, int code) return; case 'H': + if (!offsettable_memref_p (x)) + { + output_operand_lossage ("operand is not an offsettable memory " + "reference, invalid operand " + "code 'H'"); + return; + } /* It doesn't actually matter what mode we use here, as we're only going to use this for printing. */ x = adjust_address_nv (x, DImode, 8); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8b1e461c2c6e..bdf80bcc8dc6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-02-22 Uros Bizjak + + PR target/52330 + * gcc.target/i386/pr52330.c: New test. + 2012-02-14 Bin Cheng Backport from mainline. @@ -27,7 +32,7 @@ 2012-02-09 Peter Bergner - Backport from mainline + Backport from mainline 2012-02-09 Peter Bergner PR middle-end/52140 diff --git a/gcc/testsuite/gcc.target/i386/pr52330.c b/gcc/testsuite/gcc.target/i386/pr52330.c new file mode 100644 index 000000000000..22ba0b21aeda --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr52330.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-O0" } */ + +void foo (int a) +{ + asm volatile ("# %H0" : : "r" (a)); /* { dg-error "not an offsettable" } */ +}