Home | History | Annotate | Download | only in Modules
      1 // REQUIRES: shell
      2 //
      3 // RUN: rm -rf %t
      4 // RUN: mkdir %t
      5 //
      6 // Build module map with 40 modules; two layers with importing and re-exporting
      7 // the previous layer.
      8 //
      9 // RUN: echo 'module a0 { header "a0.h" export * }' > %t/module.modulemap
     10 // RUN: echo 'module b0 { header "b0.h" export * }' >> %t/module.modulemap
     11 // RUN: echo 'module a1 { header "a1.h" export * }' >> %t/module.modulemap
     12 // RUN: echo 'module b1 { header "b1.h" export * }' >> %t/module.modulemap
     13 // RUN: echo 'module a2 { header "a2.h" export * }' >> %t/module.modulemap
     14 // RUN: echo 'module b2 { header "b2.h" export * }' >> %t/module.modulemap
     15 // RUN: echo 'module a3 { header "a3.h" export * }' >> %t/module.modulemap
     16 // RUN: echo 'module b3 { header "b3.h" export * }' >> %t/module.modulemap
     17 // RUN: echo 'module a4 { header "a4.h" export * }' >> %t/module.modulemap
     18 // RUN: echo 'module b4 { header "b4.h" export * }' >> %t/module.modulemap
     19 // RUN: echo 'module a5 { header "a5.h" export * }' >> %t/module.modulemap
     20 // RUN: echo 'module b5 { header "b5.h" export * }' >> %t/module.modulemap
     21 // RUN: echo 'module a6 { header "a6.h" export * }' >> %t/module.modulemap
     22 // RUN: echo 'module b6 { header "b6.h" export * }' >> %t/module.modulemap
     23 // RUN: echo 'module a7 { header "a7.h" export * }' >> %t/module.modulemap
     24 // RUN: echo 'module b7 { header "b7.h" export * }' >> %t/module.modulemap
     25 // RUN: echo 'module a8 { header "a8.h" export * }' >> %t/module.modulemap
     26 // RUN: echo 'module b8 { header "b8.h" export * }' >> %t/module.modulemap
     27 // RUN: echo 'module a9 { header "a9.h" export * }' >> %t/module.modulemap
     28 // RUN: echo 'module b9 { header "b9.h" export * }' >> %t/module.modulemap
     29 // RUN: echo 'module a10 { header "a10.h" export * }' >> %t/module.modulemap
     30 // RUN: echo 'module b10 { header "b10.h" export * }' >> %t/module.modulemap
     31 // RUN: echo 'module a11 { header "a11.h" export * }' >> %t/module.modulemap
     32 // RUN: echo 'module b11 { header "b11.h" export * }' >> %t/module.modulemap
     33 // RUN: echo 'module a12 { header "a12.h" export * }' >> %t/module.modulemap
     34 // RUN: echo 'module b12 { header "b12.h" export * }' >> %t/module.modulemap
     35 // RUN: echo 'module a13 { header "a13.h" export * }' >> %t/module.modulemap
     36 // RUN: echo 'module b13 { header "b13.h" export * }' >> %t/module.modulemap
     37 // RUN: echo 'module a14 { header "a14.h" export * }' >> %t/module.modulemap
     38 // RUN: echo 'module b14 { header "b14.h" export * }' >> %t/module.modulemap
     39 // RUN: echo 'module a15 { header "a15.h" export * }' >> %t/module.modulemap
     40 // RUN: echo 'module b15 { header "b15.h" export * }' >> %t/module.modulemap
     41 // RUN: echo 'module a16 { header "a16.h" export * }' >> %t/module.modulemap
     42 // RUN: echo 'module b16 { header "b16.h" export * }' >> %t/module.modulemap
     43 // RUN: echo 'module a17 { header "a17.h" export * }' >> %t/module.modulemap
     44 // RUN: echo 'module b17 { header "b17.h" export * }' >> %t/module.modulemap
     45 // RUN: echo 'module a18 { header "a18.h" export * }' >> %t/module.modulemap
     46 // RUN: echo 'module b18 { header "b18.h" export * }' >> %t/module.modulemap
     47 // RUN: echo 'module a19 { header "a19.h" export * }' >> %t/module.modulemap
     48 // RUN: echo 'module b19 { header "b19.h" export * }' >> %t/module.modulemap
     49 // RUN: echo 'module a20 { header "a20.h" export * }' >> %t/module.modulemap
     50 // RUN: echo 'module b20 { header "b20.h" export * }' >> %t/module.modulemap
     51 //
     52 // Build the corresponding headers.
     53 //
     54 // RUN: echo 'template<int> struct X {}; extern X<0> x0;' > %t/x.h
     55 // RUN: echo 'extern int n;' > %t/a0.h
     56 // RUN: cp %t/a0.h %t/b0.h
     57 // RUN: echo '#include "x.h"' > %t/a1.h
     58 // RUN: echo '#include "a0.h"' >> %t/a1.h
     59 // RUN: echo '#include "b0.h"' >> %t/a1.h
     60 // RUN: cp %t/a1.h %t/b1.h
     61 // RUN: echo '#include "x.h"' > %t/a2.h
     62 // RUN: echo '#include "a1.h"' >> %t/a2.h
     63 // RUN: echo '#include "b1.h"' >> %t/a2.h
     64 // RUN: cp %t/a2.h %t/b2.h
     65 // RUN: echo '#include "x.h"' > %t/a3.h
     66 // RUN: echo '#include "a2.h"' >> %t/a3.h
     67 // RUN: echo '#include "b2.h"' >> %t/a3.h
     68 // RUN: cp %t/a3.h %t/b3.h
     69 // RUN: echo '#include "x.h"' > %t/a4.h
     70 // RUN: echo '#include "a3.h"' >> %t/a4.h
     71 // RUN: echo '#include "b3.h"' >> %t/a4.h
     72 // RUN: cp %t/a4.h %t/b4.h
     73 // RUN: echo '#include "x.h"' > %t/a5.h
     74 // RUN: echo '#include "a4.h"' >> %t/a5.h
     75 // RUN: echo '#include "b4.h"' >> %t/a5.h
     76 // RUN: cp %t/a5.h %t/b5.h
     77 // RUN: echo '#include "x.h"' > %t/a6.h
     78 // RUN: echo '#include "a5.h"' >> %t/a6.h
     79 // RUN: echo '#include "b5.h"' >> %t/a6.h
     80 // RUN: cp %t/a6.h %t/b6.h
     81 // RUN: echo '#include "x.h"' > %t/a7.h
     82 // RUN: echo '#include "a6.h"' >> %t/a7.h
     83 // RUN: echo '#include "b6.h"' >> %t/a7.h
     84 // RUN: cp %t/a7.h %t/b7.h
     85 // RUN: echo '#include "x.h"' > %t/a8.h
     86 // RUN: echo '#include "a7.h"' >> %t/a8.h
     87 // RUN: echo '#include "b7.h"' >> %t/a8.h
     88 // RUN: cp %t/a8.h %t/b8.h
     89 // RUN: echo '#include "x.h"' > %t/a9.h
     90 // RUN: echo '#include "a8.h"' >> %t/a9.h
     91 // RUN: echo '#include "b8.h"' >> %t/a9.h
     92 // RUN: cp %t/a9.h %t/b9.h
     93 // RUN: echo '#include "x.h"' > %t/a10.h
     94 // RUN: echo '#include "a9.h"' >> %t/a10.h
     95 // RUN: echo '#include "b9.h"' >> %t/a10.h
     96 // RUN: cp %t/a10.h %t/b10.h
     97 // RUN: echo '#include "x.h"' > %t/a11.h
     98 // RUN: echo '#include "a10.h"' >> %t/a11.h
     99 // RUN: echo '#include "b10.h"' >> %t/a11.h
    100 // RUN: cp %t/a11.h %t/b11.h
    101 // RUN: echo '#include "x.h"' > %t/a12.h
    102 // RUN: echo '#include "a11.h"' >> %t/a12.h
    103 // RUN: echo '#include "b11.h"' >> %t/a12.h
    104 // RUN: cp %t/a12.h %t/b12.h
    105 // RUN: echo '#include "x.h"' > %t/a13.h
    106 // RUN: echo '#include "a12.h"' >> %t/a13.h
    107 // RUN: echo '#include "b12.h"' >> %t/a13.h
    108 // RUN: cp %t/a13.h %t/b13.h
    109 // RUN: echo '#include "x.h"' > %t/a14.h
    110 // RUN: echo '#include "a13.h"' >> %t/a14.h
    111 // RUN: echo '#include "b13.h"' >> %t/a14.h
    112 // RUN: cp %t/a14.h %t/b14.h
    113 // RUN: echo '#include "x.h"' > %t/a15.h
    114 // RUN: echo '#include "a14.h"' >> %t/a15.h
    115 // RUN: echo '#include "b14.h"' >> %t/a15.h
    116 // RUN: cp %t/a15.h %t/b15.h
    117 // RUN: echo '#include "x.h"' > %t/a16.h
    118 // RUN: echo '#include "a15.h"' >> %t/a16.h
    119 // RUN: echo '#include "b15.h"' >> %t/a16.h
    120 // RUN: cp %t/a16.h %t/b16.h
    121 // RUN: echo '#include "x.h"' > %t/a17.h
    122 // RUN: echo '#include "a16.h"' >> %t/a17.h
    123 // RUN: echo '#include "b16.h"' >> %t/a17.h
    124 // RUN: cp %t/a17.h %t/b17.h
    125 // RUN: echo '#include "x.h"' > %t/a18.h
    126 // RUN: echo '#include "a17.h"' >> %t/a18.h
    127 // RUN: echo '#include "b17.h"' >> %t/a18.h
    128 // RUN: cp %t/a18.h %t/b18.h
    129 // RUN: echo '#include "x.h"' > %t/a19.h
    130 // RUN: echo '#include "a18.h"' >> %t/a19.h
    131 // RUN: echo '#include "b18.h"' >> %t/a19.h
    132 // RUN: cp %t/a19.h %t/b19.h
    133 // RUN: echo '#include "x.h"' > %t/a20.h
    134 // RUN: echo '#include "a19.h"' >> %t/a20.h
    135 // RUN: echo '#include "b19.h"' >> %t/a20.h
    136 // RUN: cp %t/a20.h %t/b20.h
    137 //
    138 // Explicitly build all the modules.
    139 //
    140 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a0 -x c++ -emit-module %t/module.modulemap -o %t/a0.pcm
    141 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b0 -x c++ -emit-module %t/module.modulemap -o %t/b0.pcm
    142 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a1 -x c++ -emit-module %t/module.modulemap -o %t/a1.pcm -fmodule-file=%t/a0.pcm -fmodule-file=%t/b0.pcm
    143 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b1 -x c++ -emit-module %t/module.modulemap -o %t/b1.pcm -fmodule-file=%t/a0.pcm -fmodule-file=%t/b0.pcm
    144 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a2 -x c++ -emit-module %t/module.modulemap -o %t/a2.pcm -fmodule-file=%t/a1.pcm -fmodule-file=%t/b1.pcm
    145 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b2 -x c++ -emit-module %t/module.modulemap -o %t/b2.pcm -fmodule-file=%t/a1.pcm -fmodule-file=%t/b1.pcm
    146 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a3 -x c++ -emit-module %t/module.modulemap -o %t/a3.pcm -fmodule-file=%t/a2.pcm -fmodule-file=%t/b2.pcm
    147 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b3 -x c++ -emit-module %t/module.modulemap -o %t/b3.pcm -fmodule-file=%t/a2.pcm -fmodule-file=%t/b2.pcm
    148 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a4 -x c++ -emit-module %t/module.modulemap -o %t/a4.pcm -fmodule-file=%t/a3.pcm -fmodule-file=%t/b3.pcm
    149 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b4 -x c++ -emit-module %t/module.modulemap -o %t/b4.pcm -fmodule-file=%t/a3.pcm -fmodule-file=%t/b3.pcm
    150 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a5 -x c++ -emit-module %t/module.modulemap -o %t/a5.pcm -fmodule-file=%t/a4.pcm -fmodule-file=%t/b4.pcm
    151 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b5 -x c++ -emit-module %t/module.modulemap -o %t/b5.pcm -fmodule-file=%t/a4.pcm -fmodule-file=%t/b4.pcm
    152 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a6 -x c++ -emit-module %t/module.modulemap -o %t/a6.pcm -fmodule-file=%t/a5.pcm -fmodule-file=%t/b5.pcm
    153 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b6 -x c++ -emit-module %t/module.modulemap -o %t/b6.pcm -fmodule-file=%t/a5.pcm -fmodule-file=%t/b5.pcm
    154 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a7 -x c++ -emit-module %t/module.modulemap -o %t/a7.pcm -fmodule-file=%t/a6.pcm -fmodule-file=%t/b6.pcm
    155 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b7 -x c++ -emit-module %t/module.modulemap -o %t/b7.pcm -fmodule-file=%t/a6.pcm -fmodule-file=%t/b6.pcm
    156 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a8 -x c++ -emit-module %t/module.modulemap -o %t/a8.pcm -fmodule-file=%t/a7.pcm -fmodule-file=%t/b7.pcm
    157 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b8 -x c++ -emit-module %t/module.modulemap -o %t/b8.pcm -fmodule-file=%t/a7.pcm -fmodule-file=%t/b7.pcm
    158 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a9 -x c++ -emit-module %t/module.modulemap -o %t/a9.pcm -fmodule-file=%t/a8.pcm -fmodule-file=%t/b8.pcm
    159 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b9 -x c++ -emit-module %t/module.modulemap -o %t/b9.pcm -fmodule-file=%t/a8.pcm -fmodule-file=%t/b8.pcm
    160 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a10 -x c++ -emit-module %t/module.modulemap -o %t/a10.pcm -fmodule-file=%t/a9.pcm -fmodule-file=%t/b9.pcm
    161 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b10 -x c++ -emit-module %t/module.modulemap -o %t/b10.pcm -fmodule-file=%t/a9.pcm -fmodule-file=%t/b9.pcm
    162 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a11 -x c++ -emit-module %t/module.modulemap -o %t/a11.pcm -fmodule-file=%t/a10.pcm -fmodule-file=%t/b10.pcm
    163 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b11 -x c++ -emit-module %t/module.modulemap -o %t/b11.pcm -fmodule-file=%t/a10.pcm -fmodule-file=%t/b10.pcm
    164 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a12 -x c++ -emit-module %t/module.modulemap -o %t/a12.pcm -fmodule-file=%t/a11.pcm -fmodule-file=%t/b11.pcm
    165 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b12 -x c++ -emit-module %t/module.modulemap -o %t/b12.pcm -fmodule-file=%t/a11.pcm -fmodule-file=%t/b11.pcm
    166 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a13 -x c++ -emit-module %t/module.modulemap -o %t/a13.pcm -fmodule-file=%t/a12.pcm -fmodule-file=%t/b12.pcm
    167 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b13 -x c++ -emit-module %t/module.modulemap -o %t/b13.pcm -fmodule-file=%t/a12.pcm -fmodule-file=%t/b12.pcm
    168 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a14 -x c++ -emit-module %t/module.modulemap -o %t/a14.pcm -fmodule-file=%t/a13.pcm -fmodule-file=%t/b13.pcm
    169 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b14 -x c++ -emit-module %t/module.modulemap -o %t/b14.pcm -fmodule-file=%t/a13.pcm -fmodule-file=%t/b13.pcm
    170 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a15 -x c++ -emit-module %t/module.modulemap -o %t/a15.pcm -fmodule-file=%t/a14.pcm -fmodule-file=%t/b14.pcm
    171 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b15 -x c++ -emit-module %t/module.modulemap -o %t/b15.pcm -fmodule-file=%t/a14.pcm -fmodule-file=%t/b14.pcm
    172 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a16 -x c++ -emit-module %t/module.modulemap -o %t/a16.pcm -fmodule-file=%t/a15.pcm -fmodule-file=%t/b15.pcm
    173 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b16 -x c++ -emit-module %t/module.modulemap -o %t/b16.pcm -fmodule-file=%t/a15.pcm -fmodule-file=%t/b15.pcm
    174 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a17 -x c++ -emit-module %t/module.modulemap -o %t/a17.pcm -fmodule-file=%t/a16.pcm -fmodule-file=%t/b16.pcm
    175 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b17 -x c++ -emit-module %t/module.modulemap -o %t/b17.pcm -fmodule-file=%t/a16.pcm -fmodule-file=%t/b16.pcm
    176 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a18 -x c++ -emit-module %t/module.modulemap -o %t/a18.pcm -fmodule-file=%t/a17.pcm -fmodule-file=%t/b17.pcm
    177 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b18 -x c++ -emit-module %t/module.modulemap -o %t/b18.pcm -fmodule-file=%t/a17.pcm -fmodule-file=%t/b17.pcm
    178 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a19 -x c++ -emit-module %t/module.modulemap -o %t/a19.pcm -fmodule-file=%t/a18.pcm -fmodule-file=%t/b18.pcm
    179 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b19 -x c++ -emit-module %t/module.modulemap -o %t/b19.pcm -fmodule-file=%t/a18.pcm -fmodule-file=%t/b18.pcm
    180 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=a20 -x c++ -emit-module %t/module.modulemap -o %t/a20.pcm -fmodule-file=%t/a19.pcm -fmodule-file=%t/b19.pcm
    181 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fmodule-name=b20 -x c++ -emit-module %t/module.modulemap -o %t/b20.pcm -fmodule-file=%t/a19.pcm -fmodule-file=%t/b19.pcm
    182 //
    183 // Build, using all the modules.
    184 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fsyntax-only %s \
    185 // RUN:            -fmodule-file=%t/a0.pcm -fmodule-file=%t/b0.pcm \
    186 // RUN:            -fmodule-file=%t/a1.pcm -fmodule-file=%t/b1.pcm \
    187 // RUN:            -fmodule-file=%t/a2.pcm -fmodule-file=%t/b2.pcm \
    188 // RUN:            -fmodule-file=%t/a3.pcm -fmodule-file=%t/b3.pcm \
    189 // RUN:            -fmodule-file=%t/a4.pcm -fmodule-file=%t/b4.pcm \
    190 // RUN:            -fmodule-file=%t/a5.pcm -fmodule-file=%t/b5.pcm \
    191 // RUN:            -fmodule-file=%t/a6.pcm -fmodule-file=%t/b6.pcm \
    192 // RUN:            -fmodule-file=%t/a7.pcm -fmodule-file=%t/b7.pcm \
    193 // RUN:            -fmodule-file=%t/a8.pcm -fmodule-file=%t/b8.pcm \
    194 // RUN:            -fmodule-file=%t/a9.pcm -fmodule-file=%t/b9.pcm \
    195 // RUN:            -fmodule-file=%t/a10.pcm -fmodule-file=%t/b10.pcm \
    196 // RUN:            -fmodule-file=%t/a11.pcm -fmodule-file=%t/b11.pcm \
    197 // RUN:            -fmodule-file=%t/a12.pcm -fmodule-file=%t/b12.pcm \
    198 // RUN:            -fmodule-file=%t/a13.pcm -fmodule-file=%t/b13.pcm \
    199 // RUN:            -fmodule-file=%t/a14.pcm -fmodule-file=%t/b14.pcm \
    200 // RUN:            -fmodule-file=%t/a15.pcm -fmodule-file=%t/b15.pcm \
    201 // RUN:            -fmodule-file=%t/a16.pcm -fmodule-file=%t/b16.pcm \
    202 // RUN:            -fmodule-file=%t/a17.pcm -fmodule-file=%t/b17.pcm \
    203 // RUN:            -fmodule-file=%t/a18.pcm -fmodule-file=%t/b18.pcm \
    204 // RUN:            -fmodule-file=%t/a19.pcm -fmodule-file=%t/b19.pcm \
    205 // RUN:            -fmodule-file=%t/a20.pcm -fmodule-file=%t/b20.pcm
    206 
    207 #include "a20.h"
    208 #include "b20.h"
    209 int k = n;
    210