[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.
Weiming
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