On Sun, Dec 16, 2018 at 06:13:57PM +0200, Dimitar Dimitrov wrote: > - /* Clobbering the STACK POINTER register is an error. */ > + /* Clobbered STACK POINTER register is not saved/restored by GCC, > + which is often unexpected by users. See PR52813. */ > if (overlaps_hard_reg_set_p (regset, Pmode, STACK_POINTER_REGNUM)) > { > - error ("Stack Pointer register clobbered by %qs in %<asm%>", regname); > + warning (0, "Stack Pointer register clobbered by %qs in %<asm%>", > + regname); > + warning (0, "GCC has always ignored Stack Pointer %<asm%> clobbers");
Why do we write Stack Pointer rather than stack pointer? That is really weird. The second warning would be a note based on the first one, i.e. if (warning ()) note (); and better have some -W* option to silence the warning. > is_valid = false; > } > > diff --git a/gcc/testsuite/gcc.target/i386/pr52813.c > b/gcc/testsuite/gcc.target/i386/pr52813.c > index 154ebbfc423..644fef15fef 100644 > --- a/gcc/testsuite/gcc.target/i386/pr52813.c > +++ b/gcc/testsuite/gcc.target/i386/pr52813.c > @@ -5,5 +5,5 @@ > void > test1 (void) > { > - asm volatile ("" : : : "%esp"); /* { dg-error "Stack Pointer register > clobbered" } */ > + asm volatile ("" : : : "%esp"); /* { dg-warning "Stack Pointer register > clobbered.\+GCC has always ignored Stack Pointer 'asm' clobbers" } */ > } > -- > 2.11.0 > Jakub