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