jtsoftware created this revision.
jtsoftware added reviewers: silvas, probinson.
jtsoftware added a subscriber: cfe-commits.

If someone only includes xmmintrin.h, but references any definitions from 
stdlib.h (included via mm_malloc.h), if module are enabled it will fail, but if 
modules are not enable, it will not fail to compile.  This will fix this (if 
__STDC_HOSTED__ is defined).


http://reviews.llvm.org/D18325

Files:
  lib/Headers/module.modulemap
  test/Headers/xmmintrin.c

Index: test/Headers/xmmintrin.c
===================================================================
--- test/Headers/xmmintrin.c
+++ test/Headers/xmmintrin.c
@@ -23,3 +23,7 @@
   return _mm_add_sd(__a, __b);
 }
 
+#if __STDC_HOSTED__
+// Make sure stdlib.h symbols are accessible.
+void *p = NULL;
+#endif
Index: lib/Headers/module.modulemap
===================================================================
--- lib/Headers/module.modulemap
+++ lib/Headers/module.modulemap
@@ -44,14 +44,17 @@
     }
 
     explicit module sse {
-      export mmx
-      export sse2 // note: for hackish <emmintrin.h> dependency
       header "xmmintrin.h"
+      export mm_malloc
+      export mmx
+      export sse2
     }
 
     explicit module sse2 {
-      export sse
       header "emmintrin.h"
+      export mm_malloc
+      export mmx
+      export sse
     }
 
     explicit module sse3 {


Index: test/Headers/xmmintrin.c
===================================================================
--- test/Headers/xmmintrin.c
+++ test/Headers/xmmintrin.c
@@ -23,3 +23,7 @@
   return _mm_add_sd(__a, __b);
 }
 
+#if __STDC_HOSTED__
+// Make sure stdlib.h symbols are accessible.
+void *p = NULL;
+#endif
Index: lib/Headers/module.modulemap
===================================================================
--- lib/Headers/module.modulemap
+++ lib/Headers/module.modulemap
@@ -44,14 +44,17 @@
     }
 
     explicit module sse {
-      export mmx
-      export sse2 // note: for hackish <emmintrin.h> dependency
       header "xmmintrin.h"
+      export mm_malloc
+      export mmx
+      export sse2
     }
 
     explicit module sse2 {
-      export sse
       header "emmintrin.h"
+      export mm_malloc
+      export mmx
+      export sse
     }
 
     explicit module sse3 {
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to