15638c114SRichard Smith // REQUIRES: shell 25638c114SRichard Smith // 35638c114SRichard Smith // RUN: rm -rf %t 45638c114SRichard Smith // RUN: mkdir %t 55638c114SRichard Smith // 65638c114SRichard Smith // Build module map with 40 modules; two layers with importing and re-exporting 75638c114SRichard Smith // the previous layer. 85638c114SRichard Smith // 95638c114SRichard Smith // RUN: echo 'module a0 { header "a0.h" export * }' > %t/module.modulemap 105638c114SRichard Smith // RUN: echo 'module b0 { header "b0.h" export * }' >> %t/module.modulemap 115638c114SRichard Smith // RUN: echo 'module a1 { header "a1.h" export * }' >> %t/module.modulemap 125638c114SRichard Smith // RUN: echo 'module b1 { header "b1.h" export * }' >> %t/module.modulemap 135638c114SRichard Smith // RUN: echo 'module a2 { header "a2.h" export * }' >> %t/module.modulemap 145638c114SRichard Smith // RUN: echo 'module b2 { header "b2.h" export * }' >> %t/module.modulemap 155638c114SRichard Smith // RUN: echo 'module a3 { header "a3.h" export * }' >> %t/module.modulemap 165638c114SRichard Smith // RUN: echo 'module b3 { header "b3.h" export * }' >> %t/module.modulemap 175638c114SRichard Smith // RUN: echo 'module a4 { header "a4.h" export * }' >> %t/module.modulemap 185638c114SRichard Smith // RUN: echo 'module b4 { header "b4.h" export * }' >> %t/module.modulemap 195638c114SRichard Smith // RUN: echo 'module a5 { header "a5.h" export * }' >> %t/module.modulemap 205638c114SRichard Smith // RUN: echo 'module b5 { header "b5.h" export * }' >> %t/module.modulemap 215638c114SRichard Smith // RUN: echo 'module a6 { header "a6.h" export * }' >> %t/module.modulemap 225638c114SRichard Smith // RUN: echo 'module b6 { header "b6.h" export * }' >> %t/module.modulemap 235638c114SRichard Smith // RUN: echo 'module a7 { header "a7.h" export * }' >> %t/module.modulemap 245638c114SRichard Smith // RUN: echo 'module b7 { header "b7.h" export * }' >> %t/module.modulemap 255638c114SRichard Smith // RUN: echo 'module a8 { header "a8.h" export * }' >> %t/module.modulemap 265638c114SRichard Smith // RUN: echo 'module b8 { header "b8.h" export * }' >> %t/module.modulemap 275638c114SRichard Smith // RUN: echo 'module a9 { header "a9.h" export * }' >> %t/module.modulemap 285638c114SRichard Smith // RUN: echo 'module b9 { header "b9.h" export * }' >> %t/module.modulemap 295638c114SRichard Smith // RUN: echo 'module a10 { header "a10.h" export * }' >> %t/module.modulemap 305638c114SRichard Smith // RUN: echo 'module b10 { header "b10.h" export * }' >> %t/module.modulemap 315638c114SRichard Smith // RUN: echo 'module a11 { header "a11.h" export * }' >> %t/module.modulemap 325638c114SRichard Smith // RUN: echo 'module b11 { header "b11.h" export * }' >> %t/module.modulemap 335638c114SRichard Smith // RUN: echo 'module a12 { header "a12.h" export * }' >> %t/module.modulemap 345638c114SRichard Smith // RUN: echo 'module b12 { header "b12.h" export * }' >> %t/module.modulemap 355638c114SRichard Smith // RUN: echo 'module a13 { header "a13.h" export * }' >> %t/module.modulemap 365638c114SRichard Smith // RUN: echo 'module b13 { header "b13.h" export * }' >> %t/module.modulemap 375638c114SRichard Smith // RUN: echo 'module a14 { header "a14.h" export * }' >> %t/module.modulemap 385638c114SRichard Smith // RUN: echo 'module b14 { header "b14.h" export * }' >> %t/module.modulemap 395638c114SRichard Smith // RUN: echo 'module a15 { header "a15.h" export * }' >> %t/module.modulemap 405638c114SRichard Smith // RUN: echo 'module b15 { header "b15.h" export * }' >> %t/module.modulemap 415638c114SRichard Smith // RUN: echo 'module a16 { header "a16.h" export * }' >> %t/module.modulemap 425638c114SRichard Smith // RUN: echo 'module b16 { header "b16.h" export * }' >> %t/module.modulemap 435638c114SRichard Smith // RUN: echo 'module a17 { header "a17.h" export * }' >> %t/module.modulemap 445638c114SRichard Smith // RUN: echo 'module b17 { header "b17.h" export * }' >> %t/module.modulemap 455638c114SRichard Smith // RUN: echo 'module a18 { header "a18.h" export * }' >> %t/module.modulemap 465638c114SRichard Smith // RUN: echo 'module b18 { header "b18.h" export * }' >> %t/module.modulemap 475638c114SRichard Smith // RUN: echo 'module a19 { header "a19.h" export * }' >> %t/module.modulemap 485638c114SRichard Smith // RUN: echo 'module b19 { header "b19.h" export * }' >> %t/module.modulemap 495638c114SRichard Smith // RUN: echo 'module a20 { header "a20.h" export * }' >> %t/module.modulemap 505638c114SRichard Smith // RUN: echo 'module b20 { header "b20.h" export * }' >> %t/module.modulemap 515638c114SRichard Smith // 525638c114SRichard Smith // Build the corresponding headers. 535638c114SRichard Smith // 5436befceeSRichard Smith // RUN: echo 'template<int> struct X {}; extern X<0> x0;' > %t/x.h 555638c114SRichard Smith // RUN: echo 'extern int n;' > %t/a0.h 565638c114SRichard Smith // RUN: cp %t/a0.h %t/b0.h 5736befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a1.h 5836befceeSRichard Smith // RUN: echo '#include "a0.h"' >> %t/a1.h 595638c114SRichard Smith // RUN: echo '#include "b0.h"' >> %t/a1.h 605638c114SRichard Smith // RUN: cp %t/a1.h %t/b1.h 6136befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a2.h 6236befceeSRichard Smith // RUN: echo '#include "a1.h"' >> %t/a2.h 635638c114SRichard Smith // RUN: echo '#include "b1.h"' >> %t/a2.h 645638c114SRichard Smith // RUN: cp %t/a2.h %t/b2.h 6536befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a3.h 6636befceeSRichard Smith // RUN: echo '#include "a2.h"' >> %t/a3.h 675638c114SRichard Smith // RUN: echo '#include "b2.h"' >> %t/a3.h 685638c114SRichard Smith // RUN: cp %t/a3.h %t/b3.h 6936befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a4.h 7036befceeSRichard Smith // RUN: echo '#include "a3.h"' >> %t/a4.h 715638c114SRichard Smith // RUN: echo '#include "b3.h"' >> %t/a4.h 725638c114SRichard Smith // RUN: cp %t/a4.h %t/b4.h 7336befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a5.h 7436befceeSRichard Smith // RUN: echo '#include "a4.h"' >> %t/a5.h 755638c114SRichard Smith // RUN: echo '#include "b4.h"' >> %t/a5.h 765638c114SRichard Smith // RUN: cp %t/a5.h %t/b5.h 7736befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a6.h 7836befceeSRichard Smith // RUN: echo '#include "a5.h"' >> %t/a6.h 795638c114SRichard Smith // RUN: echo '#include "b5.h"' >> %t/a6.h 805638c114SRichard Smith // RUN: cp %t/a6.h %t/b6.h 8136befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a7.h 8236befceeSRichard Smith // RUN: echo '#include "a6.h"' >> %t/a7.h 835638c114SRichard Smith // RUN: echo '#include "b6.h"' >> %t/a7.h 845638c114SRichard Smith // RUN: cp %t/a7.h %t/b7.h 8536befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a8.h 8636befceeSRichard Smith // RUN: echo '#include "a7.h"' >> %t/a8.h 875638c114SRichard Smith // RUN: echo '#include "b7.h"' >> %t/a8.h 885638c114SRichard Smith // RUN: cp %t/a8.h %t/b8.h 8936befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a9.h 9036befceeSRichard Smith // RUN: echo '#include "a8.h"' >> %t/a9.h 915638c114SRichard Smith // RUN: echo '#include "b8.h"' >> %t/a9.h 925638c114SRichard Smith // RUN: cp %t/a9.h %t/b9.h 9336befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a10.h 9436befceeSRichard Smith // RUN: echo '#include "a9.h"' >> %t/a10.h 955638c114SRichard Smith // RUN: echo '#include "b9.h"' >> %t/a10.h 965638c114SRichard Smith // RUN: cp %t/a10.h %t/b10.h 9736befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a11.h 9836befceeSRichard Smith // RUN: echo '#include "a10.h"' >> %t/a11.h 995638c114SRichard Smith // RUN: echo '#include "b10.h"' >> %t/a11.h 1005638c114SRichard Smith // RUN: cp %t/a11.h %t/b11.h 10136befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a12.h 10236befceeSRichard Smith // RUN: echo '#include "a11.h"' >> %t/a12.h 1035638c114SRichard Smith // RUN: echo '#include "b11.h"' >> %t/a12.h 1045638c114SRichard Smith // RUN: cp %t/a12.h %t/b12.h 10536befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a13.h 10636befceeSRichard Smith // RUN: echo '#include "a12.h"' >> %t/a13.h 1075638c114SRichard Smith // RUN: echo '#include "b12.h"' >> %t/a13.h 1085638c114SRichard Smith // RUN: cp %t/a13.h %t/b13.h 10936befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a14.h 11036befceeSRichard Smith // RUN: echo '#include "a13.h"' >> %t/a14.h 1115638c114SRichard Smith // RUN: echo '#include "b13.h"' >> %t/a14.h 1125638c114SRichard Smith // RUN: cp %t/a14.h %t/b14.h 11336befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a15.h 11436befceeSRichard Smith // RUN: echo '#include "a14.h"' >> %t/a15.h 1155638c114SRichard Smith // RUN: echo '#include "b14.h"' >> %t/a15.h 1165638c114SRichard Smith // RUN: cp %t/a15.h %t/b15.h 11736befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a16.h 11836befceeSRichard Smith // RUN: echo '#include "a15.h"' >> %t/a16.h 1195638c114SRichard Smith // RUN: echo '#include "b15.h"' >> %t/a16.h 1205638c114SRichard Smith // RUN: cp %t/a16.h %t/b16.h 12136befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a17.h 12236befceeSRichard Smith // RUN: echo '#include "a16.h"' >> %t/a17.h 1235638c114SRichard Smith // RUN: echo '#include "b16.h"' >> %t/a17.h 1245638c114SRichard Smith // RUN: cp %t/a17.h %t/b17.h 12536befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a18.h 12636befceeSRichard Smith // RUN: echo '#include "a17.h"' >> %t/a18.h 1275638c114SRichard Smith // RUN: echo '#include "b17.h"' >> %t/a18.h 1285638c114SRichard Smith // RUN: cp %t/a18.h %t/b18.h 12936befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a19.h 13036befceeSRichard Smith // RUN: echo '#include "a18.h"' >> %t/a19.h 1315638c114SRichard Smith // RUN: echo '#include "b18.h"' >> %t/a19.h 1325638c114SRichard Smith // RUN: cp %t/a19.h %t/b19.h 13336befceeSRichard Smith // RUN: echo '#include "x.h"' > %t/a20.h 13436befceeSRichard Smith // RUN: echo '#include "a19.h"' >> %t/a20.h 1355638c114SRichard Smith // RUN: echo '#include "b19.h"' >> %t/a20.h 1365638c114SRichard Smith // RUN: cp %t/a20.h %t/b20.h 1375638c114SRichard Smith // 1385638c114SRichard Smith // Explicitly build all the modules. 1395638c114SRichard Smith // 140*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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*47972afdSRichard Smith // 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 1825638c114SRichard Smith // 1835638c114SRichard Smith // Build, using all the modules. 184*47972afdSRichard Smith // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%t -fsyntax-only %s \ 1855638c114SRichard Smith // RUN: -fmodule-file=%t/a0.pcm -fmodule-file=%t/b0.pcm \ 1865638c114SRichard Smith // RUN: -fmodule-file=%t/a1.pcm -fmodule-file=%t/b1.pcm \ 1875638c114SRichard Smith // RUN: -fmodule-file=%t/a2.pcm -fmodule-file=%t/b2.pcm \ 1885638c114SRichard Smith // RUN: -fmodule-file=%t/a3.pcm -fmodule-file=%t/b3.pcm \ 1895638c114SRichard Smith // RUN: -fmodule-file=%t/a4.pcm -fmodule-file=%t/b4.pcm \ 1905638c114SRichard Smith // RUN: -fmodule-file=%t/a5.pcm -fmodule-file=%t/b5.pcm \ 1915638c114SRichard Smith // RUN: -fmodule-file=%t/a6.pcm -fmodule-file=%t/b6.pcm \ 1925638c114SRichard Smith // RUN: -fmodule-file=%t/a7.pcm -fmodule-file=%t/b7.pcm \ 1935638c114SRichard Smith // RUN: -fmodule-file=%t/a8.pcm -fmodule-file=%t/b8.pcm \ 1945638c114SRichard Smith // RUN: -fmodule-file=%t/a9.pcm -fmodule-file=%t/b9.pcm \ 1955638c114SRichard Smith // RUN: -fmodule-file=%t/a10.pcm -fmodule-file=%t/b10.pcm \ 1965638c114SRichard Smith // RUN: -fmodule-file=%t/a11.pcm -fmodule-file=%t/b11.pcm \ 1975638c114SRichard Smith // RUN: -fmodule-file=%t/a12.pcm -fmodule-file=%t/b12.pcm \ 1985638c114SRichard Smith // RUN: -fmodule-file=%t/a13.pcm -fmodule-file=%t/b13.pcm \ 1995638c114SRichard Smith // RUN: -fmodule-file=%t/a14.pcm -fmodule-file=%t/b14.pcm \ 2005638c114SRichard Smith // RUN: -fmodule-file=%t/a15.pcm -fmodule-file=%t/b15.pcm \ 2015638c114SRichard Smith // RUN: -fmodule-file=%t/a16.pcm -fmodule-file=%t/b16.pcm \ 2025638c114SRichard Smith // RUN: -fmodule-file=%t/a17.pcm -fmodule-file=%t/b17.pcm \ 2035638c114SRichard Smith // RUN: -fmodule-file=%t/a18.pcm -fmodule-file=%t/b18.pcm \ 2045638c114SRichard Smith // RUN: -fmodule-file=%t/a19.pcm -fmodule-file=%t/b19.pcm \ 2055638c114SRichard Smith // RUN: -fmodule-file=%t/a20.pcm -fmodule-file=%t/b20.pcm 2065638c114SRichard Smith 2075638c114SRichard Smith #include "a20.h" 2085638c114SRichard Smith #include "b20.h" 2095638c114SRichard Smith int k = n; 210