vsapsai added a comment.

Having in bitcode something like `@llvm.x86.encls.64` is better than inline 
assembly because we understand the meaning of the bitcode while we don't parse 
assembly and have a very limited understanding of what it is doing.

The use case we need to support is basically

  --- a/clang/test/Modules/compiler_builtins_x86.c
  +++ b/clang/test/Modules/compiler_builtins_x86.c
  @@ -1,6 +1,7 @@
   // RUN: rm -rf %t
   // RUN: %clang_cc1 -triple i686-unknown-unknown -fsyntax-only -fmodules 
-fimplicit-module-maps -fmodules-cache-path=%t %s -verify -ffreestanding
   // RUN: %clang_cc1 -triple i686-unknown-unknown -fsyntax-only -fmodules 
-fmodule-map-file=%resource_dir/module.modulemap -fmodules-cache-path=%t %s 
-verify -ffreestanding
  +// RUN: %clang_cc1 -triple i686-unknown-unknown -fsyntax-only -fmodules 
-fimplicit-module-maps -fmodules-cache-path=%t %s -verify -ffreestanding 
-fno-gnu-inline-asm
   // expected-no-diagnostics
   
   #include<x86intrin.h>

And this case isn't affected by cpuid, so we don't plan to change that as well 
as Windows-specific assembly in immintrin.h.

While writing the response, it occurred to me that another solution might be 
changing `-fno-gnu-inline-asm` to cover only actually called code. If you don't 
call `_pconfig_u32`, it shouldn't matter that in the header it is implemented 
with inline assembly. But this is an early idea, I need to discuss with the 
team if it will work and if there are other constraints I'm missing.


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

https://reviews.llvm.org/D44387



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

Reply via email to