diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-09-01 17:04:32 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-09-01 17:04:32 +0000 |
commit | 7143aab97c6e849a5a5005b7853b8c7d5af008ed (patch) | |
tree | 1d717dfe03b6e8ad673920a17b021fb3faf6912d /test/Modules/macros.c | |
parent | 8efcc0184a6dfe1ea799d3a6b9c1312ef1fac11d (diff) |
Modules hide macro definitions by default, so that silly things like
include guards don't show up as macro definitions in every translation
unit that imports a module. Macro definitions can, however, be
exported with the intentionally-ugly #__export_macro__
directive. Implement this feature by not even bothering to serialize
non-exported macros to a module, because clients of that module need
not (should not) know that these macros even exist.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138943 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Modules/macros.c')
-rw-r--r-- | test/Modules/macros.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test/Modules/macros.c b/test/Modules/macros.c new file mode 100644 index 0000000000..691e8ec0ec --- /dev/null +++ b/test/Modules/macros.c @@ -0,0 +1,33 @@ +// RUN: %clang_cc1 -emit-module -o %t/macros.pcm -DMODULE %s +// RUN: %clang_cc1 -verify -I %t %s + +#if defined(MODULE) +#define INTEGER(X) int +#define FLOAT float +#define DOUBLE double + +#__export_macro__ INTEGER +#__export_macro__ DOUBLE + +#else + +__import_module__ macros; + +#ifndef INTEGER +# error INTEGER macro should be visible +#endif + +#ifdef FLOAT +# error FLOAT macro should not be visible +#endif + +#ifdef MODULE +# error MODULE macro should not be visible +#endif + +double d; +DOUBLE *dp = &d; + +#__export_macro__ WIBBLE // expected-error{{no macro named 'WIBBLE' to export}} + +#endif |