macros.c revision de8a9050d79d66325a18168a0994fed125a7790d
17143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor// RUN: %clang_cc1 -emit-module -o %t/macros.pcm -DMODULE %s 26e975c4517958bcc11c834336d340797356058dbDouglas Gregor// RUN: %clang_cc1 -verify -fmodule-cache-path %t -fdisable-module-hash %s 3de8a9050d79d66325a18168a0994fed125a7790dDouglas Gregor// RUN: %clang_cc1 -E -fmodule-cache-path %t -fdisable-module-hash %s | FileCheck -check-prefix CHECK-PREPROCESSED %s 47143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 57143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#if defined(MODULE) 67143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#define INTEGER(X) int 77143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#define FLOAT float 87143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#define DOUBLE double 97143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 107143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#__export_macro__ INTEGER 117143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#__export_macro__ DOUBLE 127143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 13ce835df9301d5bee7fc2c70344e05541f21a5ddaDouglas Gregorint (INTEGER); 14ce835df9301d5bee7fc2c70344e05541f21a5ddaDouglas Gregor 157143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#else 167143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 177143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor__import_module__ macros; 187143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 197143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#ifndef INTEGER 207143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor# error INTEGER macro should be visible 217143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#endif 227143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 237143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#ifdef FLOAT 247143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor# error FLOAT macro should not be visible 257143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#endif 267143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 277143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#ifdef MODULE 287143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor# error MODULE macro should not be visible 297143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#endif 307143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 31de8a9050d79d66325a18168a0994fed125a7790dDouglas Gregor// CHECK-PREPROCESSED: double d 327143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregordouble d; 337143aab97c6e849a5a5005b7853b8c7d5af008edDouglas GregorDOUBLE *dp = &d; 347143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 357143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#__export_macro__ WIBBLE // expected-error{{no macro named 'WIBBLE' to export}} 367143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor 37ce835df9301d5bee7fc2c70344e05541f21a5ddaDouglas Gregorvoid f() { 38de8a9050d79d66325a18168a0994fed125a7790dDouglas Gregor // CHECK-PREPROCESSED: int i = INTEGER; 39ce835df9301d5bee7fc2c70344e05541f21a5ddaDouglas Gregor int i = INTEGER; // the value was exported, the macro was not. 40ce835df9301d5bee7fc2c70344e05541f21a5ddaDouglas Gregor} 417143aab97c6e849a5a5005b7853b8c7d5af008edDouglas Gregor#endif 42