[llvm-dev] MSVC warning noise on "LLVM_ATTRIBUTE_ALWAYS_INLINE inline void foo()"

Aaron Ballman via llvm-dev llvm-dev at lists.llvm.org
Sun Dec 20 15:08:53 PST 2015


On Sun, Dec 20, 2015 at 5:57 PM, Johan Engelen <jbc.engelen at gmail.com> wrote:
>
> On Sun, Dec 20, 2015 at 11:28 PM, Aaron Ballman <aaron at aaronballman.com>
> wrote:
>>
>> On Sun, Dec 20, 2015 at 5:24 PM, Xinliang David Li via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>> > LLVM_ATTRIBUTE_ALWAYS_INLINE is defined to be __forceinline for MSVC. I
>> > wonder why you get that warning.
>>
>> inline and __forceinline don't mix with MSVC -- I believe they may be
>> modeled with the same attribute under the hood. I'm not certain of the
>> best way to solve this aside from suggesting to ignore C4141 locally.
>
>
> Perhaps LLVM_ATTRIBUTE_ALWAYS_INLINE could be defined to "inline" if the
> compiler has no support for always_inline (currently it is set to nothing in
> that case) ?
> I think this would allow removal of the "inline" after
> LLVM_ATTRIBUTE_ALWAYS_INLINE.

Wouldn't this cause functions with MSVC that are marked
LLVM_ATTRIBUTE_ALWAYS_INLINE but not 'inline' to not be inlined? I
suppose a possible way is to make a #define
LLVM_ATTRIBUTE_INLINE_ALWAYS_INLINE that combines the two when not
compiling with MSVC, and then change all the requisite function
signatures to use this new macro instead. Uncertain of the value of
that, however.

~Aaron

>


More information about the llvm-dev mailing list