Author: bruno Date: Thu Oct 27 21:30:45 2016 New Revision: 285377 URL: http://llvm.org/viewvc/llvm-project?rev=285377&view=rev Log: [Modules] Add testcase for builtins used in umbrella headers
This used to work before r284797 + r285152, which exposed something interesting; some users include builtins from umbrella headers. Clang should emit a warning to warn users this is not a good practice and umbrella headers shouldn't get the implicitly-add-the-builtin-version behavior for builtin header names. While we're not there, add the testcase to represent the way it currently works. Added: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/A.h cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/int.h cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Modules/ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Modules/module.modulemap cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stdint.h cfe/trunk/test/Modules/umbrella-header-include-builtin.mm Modified: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/module.modulemap Added: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/A.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/A.h?rev=285377&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/A.h (added) +++ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/A.h Thu Oct 27 21:30:45 2016 @@ -0,0 +1,15 @@ +#ifndef __my_a +#define __my_a + +#include <A/int.h> +#include <stdint.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef int_fast32_t my_a; +} + +#endif Added: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/int.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/int.h?rev=285377&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/int.h (added) +++ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Headers/int.h Thu Oct 27 21:30:45 2016 @@ -0,0 +1,14 @@ +#ifndef __my_int +#define __my_int + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef int_fast32_t myint; +} + +#endif Added: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Modules/module.modulemap URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Modules/module.modulemap?rev=285377&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Modules/module.modulemap (added) +++ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/Frameworks/A.framework/Modules/module.modulemap Thu Oct 27 21:30:45 2016 @@ -0,0 +1,4 @@ +framework module A [extern_c] { + umbrella header "A.h" + export * +} Modified: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/module.modulemap URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c%2B%2B/v1/module.modulemap?rev=285377&r1=285376&r2=285377&view=diff ============================================================================== --- cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/module.modulemap (original) +++ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/module.modulemap Thu Oct 27 21:30:45 2016 @@ -3,5 +3,8 @@ module "libc++" { module stdlib { header "stdlib.h" export * } module stddef { header "stddef.h" export * } module stdio { textual header "stdio.h" export * } + // FIXME: remove "textual" from stdint module below once the issue + // between umbrella headers and builtins is resolved. + module stdint { textual header "stdint.h" export * } module __config { header "__config" export * } } Added: cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stdint.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c%2B%2B/v1/stdint.h?rev=285377&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stdint.h (added) +++ cfe/trunk/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stdint.h Thu Oct 27 21:30:45 2016 @@ -0,0 +1,6 @@ +#ifndef LIBCXX_STDINT_H +#define LIBCXX_STDINT_H + +#include_next "stdint.h" + +#endif Added: cfe/trunk/test/Modules/umbrella-header-include-builtin.mm URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/umbrella-header-include-builtin.mm?rev=285377&view=auto ============================================================================== --- cfe/trunk/test/Modules/umbrella-header-include-builtin.mm (added) +++ cfe/trunk/test/Modules/umbrella-header-include-builtin.mm Thu Oct 27 21:30:45 2016 @@ -0,0 +1,4 @@ +// RUN: rm -rf %t +// RUN: %clang -cc1 -fsyntax-only -nostdinc++ -isysroot %S/Inputs/libc-libcxx/sysroot -isystem %S/Inputs/libc-libcxx/sysroot/usr/include/c++/v1 -F%S/Inputs/libc-libcxx/sysroot/Frameworks -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -x objective-c++ %s + +#include <A/A.h> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits