eladcohen added inline comments.

================
Comment at: lib/Headers/module.modulemap:133
@@ -131,2 +132,3 @@
     explicit module aes {
+      export sse2
       header "__wmmintrin_aes.h"
----------------
bruno wrote:
> The mmx case above makes sense to me, but I find conceptually odd that we 
> need to re-export sse2 in aes module, why not explicitly #include 
> <emmintrin.h> in the source file?
emmintrin.h is already included explicitly in wmmintrin.h & __wmmintrin_aes.h.

If a user includes <x86intrin.h>/<immintrin.h> there is no problem, since the 
intel submodule has an 'export *' directive and both aes & sse2 will be 
imported.

However, if the user only includes <wmmintrin.h> (like in the 2nd half of the 
test I added), and uses modules, then any use of the '___m128i' type (which is 
used in the aes intrinsics and declared in sse2) will result with the error:
"File tst.c Line 11: missing '#include <emmintrin.h>'; declaration of 
'___m128i' must be imported from module '_Builtin_intrinsics.intel.sse2' before 
it is required"

IIUC the possible fixes for this are adding 'export *' or 'export sse2' to the 
aes submodule.



https://reviews.llvm.org/D24752



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

Reply via email to