[PATCH] Add testcase for possible bug in gcc-4_4 ix86 branch

asharif tools asharif.tools@gmail.com
Tue Dec 14 05:20:00 GMT 2010


The jump was only there because I narrowed down the problem code from
a C file and the jump was in the original code.

I was able to reproduce the problem with a simpler testcase, which is
below. This fails with this patch
(http://gcc.gnu.org/viewcvs?view=revision&revision=153780), but passes
otherwise. It passes on gcc trunk as well (I tested after configuring
--with-target= i386 and x86_64).

Comments? OK for a resubmission?

Index: gcc/testsuite/gcc.target/i386/max-stack-align.c
===================================================================
--- gcc/testsuite/gcc.target/i386/max-stack-align.c	(revision 0)
+++ gcc/testsuite/gcc.target/i386/max-stack-align.c	(revision 0)
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-fomit-frame-pointer" } */
+/* { dg-require-effective-target lp64 } */
+
+void foo()
+{
+  int a=0, b=0, c=0, e=0, f=0, g=0, h=0, i=0;
+	__asm__ __volatile__ ("addl 	%%rbp,%%rbp"
+		: "=rbp"(a)
+		: "rbp"(b)
+		: "rbp"
+	);
+}
+
~/a/gcc-svn-rw/trunk


On Mon, Dec 13, 2010 at 5:00 PM, Ian Lance Taylor <iant@google.com> wrote:
> asharif tools <asharif.tools@gmail.com> writes:
>
>> Index: gcc/testsuite/gcc.target/i386/max-stack-align.c
>> ===================================================================
>> --- gcc/testsuite/gcc.target/i386/max-stack-align.c   (revision 0)
>> +++ gcc/testsuite/gcc.target/i386/max-stack-align.c   (revision 0)
>> @@ -0,0 +1,13 @@
>> +/* { dg-do compile } */
>> +/* { dg-options "-fomit-frame-pointer" } */
>> +/* { dg-require-effective-target lp64 } */
>> +
>> +void foo()
>> +{
>> +  int a=0, b=0, c=0, e=0, f=0, g=0, h=0, i=0;
>> +label:
>> +     __asm__ volatile( " jb label "
>> +                       : : "c" (a), "d" (a), "S" (a), "D" (a), "r" (a), "a" (a) ,"r" (a), "r" (a)
>> +                       : "%""rbp" );
>> +}
>
> I don't understand why you want to have a jump in the asm.  But, if you
> do need one, you need to also define the label in the asm, not in the C
> code.  The C label "label" is not going to be named "label" in the
> assembler code.
>
> Ian
>



More information about the Gcc-patches mailing list