Home | History | Annotate | Download | only in Modules
      1 // RUN: rm -rf %t
      2 // RUN: mkdir %t
      3 // RUN: echo 'module tmp { header "tmp.h" }' > %t/map
      4 // RUN: touch %t/tmp.h
      5 // RUN: %clang_cc1 -fmodules -DFOO=1 -x c++ -fmodule-name=tmp %t/map -emit-module -o %t/tmp.pcm
      6 
      7 // Can use the module.
      8 // RUN: %clang_cc1 -fmodules -DFOO=1 -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
      9 
     10 // Can use the module if an input file is newer. (This happens on
     11 // remote file systems.)
     12 // RUN: sleep 1
     13 // RUN: touch %t/tmp.h
     14 // RUN: %clang_cc1 -fmodules -DFOO=1 -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
     15 
     16 // Can use the module if -D flags change.
     17 // RUN: %clang_cc1 -fmodules -DFOO=2 -DBAR=1 -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
     18 // RUN: %clang_cc1 -fmodules -DBAR=2 -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
     19 
     20 // Can use the module if -W flags change.
     21 // RUN: %clang_cc1 -fmodules -DBAR=2 -Wextra -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
     22 
     23 // Can use the module if -I flags change.
     24 // RUN: %clang_cc1 -fmodules -DBAR=2 -I. -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
     25 
     26 // Can use the module if -O flags change.
     27 // RUN: %clang_cc1 -fmodules -DBAR=2 -Os -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp.pcm -verify -I%t %s
     28 //
     29 // RUN: %clang_cc1 -fmodules -DFOO=1 -O2 -x c++ -fmodule-name=tmp %t/map -emit-module -o %t/tmp-O2.pcm
     30 // RUN: %clang_cc1 -fmodules -DBAR=2 -O0 -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp-O2.pcm -verify -I%t %s
     31 // RUN: %clang_cc1 -fmodules -DBAR=2 -Os -x c++ -fmodule-map-file=%t/map -fmodule-file=%t/tmp-O2.pcm -verify -I%t %s
     32 
     33 #include "tmp.h" // expected-no-diagnostics
     34 
     35 #ifndef BAR
     36 #if FOO != 1
     37 #error bad FOO from command line and module
     38 #endif
     39 #elif BAR == 1
     40 #if FOO != 2
     41 #error bad FOO from command line overriding module
     42 #endif
     43 #elif BAR == 2
     44 #ifdef FOO
     45 #error FOO leaked from module
     46 #endif
     47 #else
     48 #error bad BAR
     49 #endif
     50