|
| 1 | +// Unsupported on AIX because we don't support the requisite "__clangast" |
| 2 | +// section in XCOFF yet. |
| 3 | +// UNSUPPORTED: aix |
| 4 | + |
| 5 | +// This test checks that the dependency scanner can handle larger amount of |
| 6 | +// explicitly built modules retrieved from the PCH. |
| 7 | +// (Previously, there was a bug dangling iterator bug that manifested only with |
| 8 | +// 16 and more retrieved modules.) |
| 9 | + |
| 10 | +// RUN: rm -rf %t |
| 11 | +// RUN: split-file %s %t |
| 12 | + |
| 13 | +//--- mod_00.h |
| 14 | +//--- mod_01.h |
| 15 | +//--- mod_02.h |
| 16 | +//--- mod_03.h |
| 17 | +//--- mod_04.h |
| 18 | +//--- mod_05.h |
| 19 | +//--- mod_06.h |
| 20 | +//--- mod_07.h |
| 21 | +//--- mod_08.h |
| 22 | +//--- mod_09.h |
| 23 | +//--- mod_10.h |
| 24 | +//--- mod_11.h |
| 25 | +//--- mod_12.h |
| 26 | +//--- mod_13.h |
| 27 | +//--- mod_14.h |
| 28 | +//--- mod_15.h |
| 29 | +//--- mod_16.h |
| 30 | +//--- mod.h |
| 31 | +#include "mod_00.h" |
| 32 | +#include "mod_01.h" |
| 33 | +#include "mod_02.h" |
| 34 | +#include "mod_03.h" |
| 35 | +#include "mod_04.h" |
| 36 | +#include "mod_05.h" |
| 37 | +#include "mod_06.h" |
| 38 | +#include "mod_07.h" |
| 39 | +#include "mod_08.h" |
| 40 | +#include "mod_09.h" |
| 41 | +#include "mod_10.h" |
| 42 | +#include "mod_11.h" |
| 43 | +#include "mod_12.h" |
| 44 | +#include "mod_13.h" |
| 45 | +#include "mod_14.h" |
| 46 | +#include "mod_15.h" |
| 47 | +#include "mod_16.h" |
| 48 | +//--- module.modulemap |
| 49 | +module mod_00 { header "mod_00.h" } |
| 50 | +module mod_01 { header "mod_01.h" } |
| 51 | +module mod_02 { header "mod_02.h" } |
| 52 | +module mod_03 { header "mod_03.h" } |
| 53 | +module mod_04 { header "mod_04.h" } |
| 54 | +module mod_05 { header "mod_05.h" } |
| 55 | +module mod_06 { header "mod_06.h" } |
| 56 | +module mod_07 { header "mod_07.h" } |
| 57 | +module mod_08 { header "mod_08.h" } |
| 58 | +module mod_09 { header "mod_09.h" } |
| 59 | +module mod_10 { header "mod_10.h" } |
| 60 | +module mod_11 { header "mod_11.h" } |
| 61 | +module mod_12 { header "mod_12.h" } |
| 62 | +module mod_13 { header "mod_13.h" } |
| 63 | +module mod_14 { header "mod_14.h" } |
| 64 | +module mod_15 { header "mod_15.h" } |
| 65 | +module mod_16 { header "mod_16.h" } |
| 66 | +module mod { header "mod.h" } |
| 67 | + |
| 68 | +//--- pch.h |
| 69 | +#include "mod.h" |
| 70 | + |
| 71 | +//--- tu.c |
| 72 | + |
| 73 | +//--- cdb_pch.json.template |
| 74 | +[{ |
| 75 | + "file": "DIR/pch.h", |
| 76 | + "directory": "DIR", |
| 77 | + "command": "clang -x c-header DIR/pch.h -fmodules -gmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache -o DIR/pch.h.gch" |
| 78 | +}] |
| 79 | + |
| 80 | +//--- cdb_tu.json.template |
| 81 | +[{ |
| 82 | + "file": "DIR/tu.c", |
| 83 | + "directory": "DIR", |
| 84 | + "command": "clang -fsyntax-only DIR/tu.c -fmodules -gmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache -include DIR/pch.h -o DIR/tu.o" |
| 85 | +}] |
| 86 | + |
| 87 | +// Scan dependencies of the PCH: |
| 88 | +// |
| 89 | +// RUN: sed "s|DIR|%/t|g" %t/cdb_pch.json.template > %t/cdb_pch.json |
| 90 | +// RUN: clang-scan-deps -compilation-database %t/cdb_pch.json -format experimental-full \ |
| 91 | +// RUN: -generate-modules-path-args -module-files-dir %t/build > %t/result_pch.json |
| 92 | + |
| 93 | +// Explicitly build the PCH: |
| 94 | +// |
| 95 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_00 > %t/mod_00.cc1.rsp |
| 96 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_01 > %t/mod_01.cc1.rsp |
| 97 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_02 > %t/mod_02.cc1.rsp |
| 98 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_03 > %t/mod_03.cc1.rsp |
| 99 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_04 > %t/mod_04.cc1.rsp |
| 100 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_05 > %t/mod_05.cc1.rsp |
| 101 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_06 > %t/mod_06.cc1.rsp |
| 102 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_07 > %t/mod_07.cc1.rsp |
| 103 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_08 > %t/mod_08.cc1.rsp |
| 104 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_09 > %t/mod_09.cc1.rsp |
| 105 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_10 > %t/mod_10.cc1.rsp |
| 106 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_11 > %t/mod_11.cc1.rsp |
| 107 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_12 > %t/mod_12.cc1.rsp |
| 108 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_13 > %t/mod_13.cc1.rsp |
| 109 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_14 > %t/mod_14.cc1.rsp |
| 110 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_15 > %t/mod_15.cc1.rsp |
| 111 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod_16 > %t/mod_16.cc1.rsp |
| 112 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --module-name=mod > %t/mod.cc1.rsp |
| 113 | +// RUN: %python %S/../../utils/module-deps-to-rsp.py %t/result_pch.json --tu-index=0 > %t/pch.rsp |
| 114 | +// |
| 115 | +// RUN: %clang @%t/mod_00.cc1.rsp |
| 116 | +// RUN: %clang @%t/mod_01.cc1.rsp |
| 117 | +// RUN: %clang @%t/mod_02.cc1.rsp |
| 118 | +// RUN: %clang @%t/mod_03.cc1.rsp |
| 119 | +// RUN: %clang @%t/mod_04.cc1.rsp |
| 120 | +// RUN: %clang @%t/mod_05.cc1.rsp |
| 121 | +// RUN: %clang @%t/mod_06.cc1.rsp |
| 122 | +// RUN: %clang @%t/mod_07.cc1.rsp |
| 123 | +// RUN: %clang @%t/mod_08.cc1.rsp |
| 124 | +// RUN: %clang @%t/mod_09.cc1.rsp |
| 125 | +// RUN: %clang @%t/mod_10.cc1.rsp |
| 126 | +// RUN: %clang @%t/mod_11.cc1.rsp |
| 127 | +// RUN: %clang @%t/mod_12.cc1.rsp |
| 128 | +// RUN: %clang @%t/mod_13.cc1.rsp |
| 129 | +// RUN: %clang @%t/mod_14.cc1.rsp |
| 130 | +// RUN: %clang @%t/mod_15.cc1.rsp |
| 131 | +// RUN: %clang @%t/mod_16.cc1.rsp |
| 132 | +// RUN: %clang @%t/mod.cc1.rsp |
| 133 | +// RUN: %clang @%t/pch.rsp |
| 134 | + |
| 135 | +// Scan dependencies of the TU, checking it doesn't crash: |
| 136 | +// |
| 137 | +// RUN: sed "s|DIR|%/t|g" %t/cdb_tu.json.template > %t/cdb_tu.json |
| 138 | +// RUN: clang-scan-deps -compilation-database %t/cdb_tu.json -format experimental-full \ |
| 139 | +// RUN: -generate-modules-path-args -module-files-dir %t/build |
0 commit comments