[PATCH] D16171: Warning on redeclaring with a conflicting asm label

Zhao, Weiming via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 14 15:05:26 PST 2016

I agree what you said about different code generated with clang and GCC 
generates. In this case, we should throw an error (err_late_asm_label).

But in this example, there is no use of the function. They are just 
redundant declarations and there is no actual code generated.
So I suggest we just give warnings for this case. Otherwise, it will 
break existing code like some SPEC benchmarks.

Please review my 2nd patch.


On 1/14/2016 2:28 PM, Nick Lewycky wrote:
> On 14 January 2016 at 10:38, Weiming Zhao via cfe-commits 
> <cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>> wrote:
>     weimingz added a comment.
>     Hi Nick,
>     Below is a reduced code:
>     t.c:
>       static long double acoshl (long double __x) __asm__ ("" "acosh")
>     ;  // this is from
>     <gcc4.9>/arm-linux-gnueabi/libc/usr/include/bits/mathcalls.h
>       extern long double acoshl (long double) __asm__ (""
>     "__acoshl_finite") ; // this is from existing code
>     GCC gives warning like:
>     /tmp/t.c:2:1: warning: asm declaration ignored due to conflict
>     with previous rename [-Wpragmas]
>      extern long double acoshl (long double) __asm__ (""
>     "__acoshl_finite") ;
> That's the same case as in this testcase:
>   void foo() __asm__("one");
>   void foo() __asm__("two");
>   void test() { foo(); }
> GCC emits a call to 'one' while Clang emits a call to 'two'. This is a 
> real bug. Please don't downgrade this to a warning.
> As an alternative, I would accept a patch which changes how clang 
> generates code so that it also produces a call to 'one', with a 
> warning. It looks like what we need to do is drop subsequent asm label 
> declarations on functions that already have one.
> Nick

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160114/0d119508/attachment.html>

More information about the cfe-commits mailing list