mibintc added a comment.

In D97764#2685742 <https://reviews.llvm.org/D97764#2685742>, @craig.topper 
wrote:

> In D97764#2685655 <https://reviews.llvm.org/D97764#2685655>, @mibintc wrote:
>
>> I received a bug report that this patch creates error diagnostics for calls 
>> to a builtin, like calling 'abort', 'exit' or one of the target builtins 
>> like __builtin_ia32_packssw then that call should be allowed without remark 
>> but this patch causes the compilation to fail.  We could require that all 
>> builtin's be declared with "no caller saved reg" but that's a big 
>> modification. I'm planning to make a change which igores builtin calls, but 
>> continue to error on any implicitly declared or user declared functions 
>> without the "no caller saved reg" attribute.
>
> Builtins like __builtin_ia32_packssw aren't usually called directly. The user 
> should be calling the always_inline wrapper functions in x86intrin.h. Would 
> that also fail?

Thanks for the suggestion Craig!  I could change the check to look for 
"always_inline" [that means they're always inlined and the call would never be 
created even with optimization disabled right? ] However, I don't see 
_builtin_ia32_packssw declared in <immintrin.h>.  In immintrin it is declared 
implicitly when the usage is seen for example 
_mm_packs_pi16(__m64 __m1, __m64 __m2)
{

  return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);

}

Is it a bug that __builtin_ia32_packsswb is omitted from the x86intrin 
declarations? Is there some tricky reason it's not declared?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97764/new/

https://reviews.llvm.org/D97764

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to