xref: /llvm-project/clang/test/ClangScanDeps/strip-codegen-args.m (revision c5a33befcc328339a84c35f6899ff3f3309399fc)
15ad3a32cSJuergen Ributzka// RUN: rm -rf %t
25ad3a32cSJuergen Ributzka// RUN: split-file %s %t
35ad3a32cSJuergen Ributzka// RUN: sed -e "s|DIR|%/t|g" %t/cdb1.json.template > %t/cdb1.json
45ad3a32cSJuergen Ributzka
55ad3a32cSJuergen Ributzka// RUN: clang-scan-deps -compilation-database %t/cdb1.json -format experimental-full > %t/result1.txt
65ad3a32cSJuergen Ributzka// RUN: FileCheck %s -input-file %t/result1.txt
75ad3a32cSJuergen Ributzka
8*c5a33befSJuergen Ributzka// This tests that codegen option that do not affect the AST or generation of a
9*c5a33befSJuergen Ributzka// module are removed. It also tests that the optimization options that affect
10*c5a33befSJuergen Ributzka// the AST are not reset to -O0.
115ad3a32cSJuergen Ributzka
125ad3a32cSJuergen Ributzka// CHECK:        "modules": [
135ad3a32cSJuergen Ributzka// CHECK-NEXT:     {
145ad3a32cSJuergen Ributzka// CHECK:            "command-line": [
15*c5a33befSJuergen Ributzka// CHECK-NOT:          "-O0"
165ad3a32cSJuergen Ributzka// CHECK-NOT:          "-flto"
175ad3a32cSJuergen Ributzka// CHECK-NOT:          "-fno-autolink"
185ad3a32cSJuergen Ributzka// CHECK-NOT:          "-mrelax-relocations=no"
195ad3a32cSJuergen Ributzka// CHECK:            ]
205ad3a32cSJuergen Ributzka// CHECK:            "name": "A"
215ad3a32cSJuergen Ributzka// CHECK:          }
225ad3a32cSJuergen Ributzka// CHECK-NOT:        "name": "A"
235ad3a32cSJuergen Ributzka// CHECK:        "translation-units"
245ad3a32cSJuergen Ributzka
255ad3a32cSJuergen Ributzka//--- cdb1.json.template
265ad3a32cSJuergen Ributzka[
275ad3a32cSJuergen Ributzka  {
285ad3a32cSJuergen Ributzka    "directory": "DIR",
29*c5a33befSJuergen Ributzka    "command": "clang -Imodules/A -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -O2 -flto -fno-autolink -Xclang -mrelax-relocations=no -fsyntax-only DIR/t1.m",
305ad3a32cSJuergen Ributzka    "file": "DIR/t1.m"
315ad3a32cSJuergen Ributzka  },
325ad3a32cSJuergen Ributzka  {
335ad3a32cSJuergen Ributzka    "directory": "DIR",
34*c5a33befSJuergen Ributzka    "command": "clang -Imodules/A -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -O2 -flto=thin -fautolink -fsyntax-only DIR/t2.m",
355ad3a32cSJuergen Ributzka    "file": "DIR/t2.m"
365ad3a32cSJuergen Ributzka  },
375ad3a32cSJuergen Ributzka  {
385ad3a32cSJuergen Ributzka    "directory": "DIR",
39*c5a33befSJuergen Ributzka    "command": "clang -Imodules/A -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -O2 -flto=full -fsyntax-only DIR/t3.m",
405ad3a32cSJuergen Ributzka    "file": "DIR/t2.m"
415ad3a32cSJuergen Ributzka  }
425ad3a32cSJuergen Ributzka]
435ad3a32cSJuergen Ributzka
445ad3a32cSJuergen Ributzka//--- modules/A/module.modulemap
455ad3a32cSJuergen Ributzka
465ad3a32cSJuergen Ributzkamodule A {
475ad3a32cSJuergen Ributzka  umbrella header "A.h"
485ad3a32cSJuergen Ributzka}
495ad3a32cSJuergen Ributzka
505ad3a32cSJuergen Ributzka//--- modules/A/A.h
515ad3a32cSJuergen Ributzka
525ad3a32cSJuergen Ributzkatypedef int A_t;
535ad3a32cSJuergen Ributzka
545ad3a32cSJuergen Ributzka//--- t1.m
555ad3a32cSJuergen Ributzka@import A;
565ad3a32cSJuergen Ributzka
575ad3a32cSJuergen Ributzka//--- t2.m
585ad3a32cSJuergen Ributzka@import A;
595ad3a32cSJuergen Ributzka
605ad3a32cSJuergen Ributzka//--- t3.m
615ad3a32cSJuergen Ributzka@import A;
62