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

Reply via email to