18fe8d69dSBen Langmuir // Check that the scanner produces raw ast files, even when builds produce the 28fe8d69dSBen Langmuir // obj format, and that the scanner can read obj format from PCH and modules 38fe8d69dSBen Langmuir // imported by PCH. 48fe8d69dSBen Langmuir 58fe8d69dSBen Langmuir // Unsupported on AIX because we don't support the requisite "__clangast" 68fe8d69dSBen Langmuir // section in XCOFF yet. 78fe8d69dSBen Langmuir // UNSUPPORTED: target={{.*}}-aix{{.*}} 88fe8d69dSBen Langmuir 98fe8d69dSBen Langmuir // REQUIRES: shell 108fe8d69dSBen Langmuir 118fe8d69dSBen Langmuir // RUN: rm -rf %t && mkdir %t 128fe8d69dSBen Langmuir // RUN: cp %S/Inputs/modules-pch/* %t 138fe8d69dSBen Langmuir 148fe8d69dSBen Langmuir // Scan dependencies of the PCH: 158fe8d69dSBen Langmuir // 168fe8d69dSBen Langmuir // RUN: rm -f %t/cdb_pch.json 178fe8d69dSBen Langmuir // RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_pch.json > %t/cdb_pch.json 188fe8d69dSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb_pch.json -format experimental-full \ 19*6a4eaf9bSJan Svoboda // RUN: -module-files-dir %t/build -o %t/result_pch.json 208fe8d69dSBen Langmuir 218fe8d69dSBen Langmuir // Explicitly build the PCH: 228fe8d69dSBen Langmuir // 238fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --module-name=ModCommon1 > %t/mod_common_1.cc1.rsp 248fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --module-name=ModCommon2 > %t/mod_common_2.cc1.rsp 258fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --module-name=ModPCH > %t/mod_pch.cc1.rsp 268fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --tu-index=0 > %t/pch.rsp 278fe8d69dSBen Langmuir // 288fe8d69dSBen Langmuir // RUN: %clang @%t/mod_common_1.cc1.rsp 298fe8d69dSBen Langmuir // RUN: %clang @%t/mod_common_2.cc1.rsp 308fe8d69dSBen Langmuir // RUN: %clang @%t/mod_pch.cc1.rsp 318fe8d69dSBen Langmuir // RUN: %clang @%t/pch.rsp 328fe8d69dSBen Langmuir 338fe8d69dSBen Langmuir // Scan dependencies of the TU: 348fe8d69dSBen Langmuir // 358fe8d69dSBen Langmuir // RUN: rm -f %t/cdb_tu.json 368fe8d69dSBen Langmuir // RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_tu.json > %t/cdb_tu.json 378fe8d69dSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb_tu.json -format experimental-full \ 388fe8d69dSBen Langmuir // RUN: -module-files-dir %t/build > %t/result_tu.json 398fe8d69dSBen Langmuir 408fe8d69dSBen Langmuir // Explicitly build the TU: 418fe8d69dSBen Langmuir // 428fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_tu.json --module-name=ModTU > %t/mod_tu.cc1.rsp 438fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_tu.json --tu-index=0 > %t/tu.rsp 448fe8d69dSBen Langmuir // 458fe8d69dSBen Langmuir // RUN: %clang @%t/mod_tu.cc1.rsp 468fe8d69dSBen Langmuir // RUN: %clang @%t/tu.rsp 478fe8d69dSBen Langmuir 488fe8d69dSBen Langmuir // Check the module format for scanner modules: 498fe8d69dSBen Langmuir // 508fe8d69dSBen Langmuir // RUN: find %t/cache -name "*.pcm" -exec %clang_cc1 -module-file-info "{}" ";" | FileCheck %s -check-prefix=SCAN 518fe8d69dSBen Langmuir // SCAN: Module format: raw 528fe8d69dSBen Langmuir // SCAN: Module format: raw 538fe8d69dSBen Langmuir // SCAN: Module format: raw 548fe8d69dSBen Langmuir // SCAN: Module format: raw 558fe8d69dSBen Langmuir 568fe8d69dSBen Langmuir // Check the module format for built modules: 578fe8d69dSBen Langmuir // 588fe8d69dSBen Langmuir // RUN: find %t/build -name "*.pcm" -exec %clang_cc1 -module-file-info "{}" ";" | FileCheck %s -check-prefix=BUILD 598fe8d69dSBen Langmuir // BUILD: Module format: obj 608fe8d69dSBen Langmuir // BUILD: Module format: obj 618fe8d69dSBen Langmuir // BUILD: Module format: obj 628fe8d69dSBen Langmuir // BUILD: Module format: obj 638fe8d69dSBen Langmuir 648fe8d69dSBen Langmuir // FIXME: check pch format as well; -module-file-info does not work with a PCH 65