llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver

@llvm/pr-subscribers-clang

Author: Marco Elver (melver)

<details>
<summary>Changes</summary>

The fsanitize.c test is one of the slowest tests we have:
```
-- Testing: 1 tests, 1 workers --
PASS: Clang :: Driver/fsanitize.c (1 of 1)

Testing Time: 18.42s
```

It has become the single monolithic test for almost all -fsanitize= options. 
Given its current size, it makes sense to split it up into smaller focused 
tests to allow for better parallelization but also help the FileCheck tool by 
reducing number of lines to check.

The new test time with parallelization on my machine is:
```
-- Testing: 16 tests, 16 workers --
PASS: Clang :: Driver/fsanitize-numerical.c (1 of 16)
PASS: Clang :: Driver/fsanitize-safe-stack.c (2 of 16)
PASS: Clang :: Driver/fsanitize-memtag.c (3 of 16)
PASS: Clang :: Driver/fsanitize-realtime.c (4 of 16)
PASS: Clang :: Driver/fsanitize-baremetal.c (5 of 16)
PASS: Clang :: Driver/fsanitize-scudo.c (6 of 16)
PASS: Clang :: Driver/fsanitize-trap.c (7 of 16)
PASS: Clang :: Driver/fsanitize-leak.c (8 of 16)
PASS: Clang :: Driver/fsanitize-recover.c (9 of 16)
PASS: Clang :: Driver/fsanitize-skip-hot-cutoff.c (10 of 16)
PASS: Clang :: Driver/fsanitize-minimal-runtime.c (11 of 16)
PASS: Clang :: Driver/fsanitize-cfi.c (12 of 16)
PASS: Clang :: Driver/fsanitize-merge.c (13 of 16)
PASS: Clang :: Driver/fsanitize-annotate-debug-info.c (14 of 16)
PASS: Clang :: Driver/fsanitize-undefined.c (15 of 16)
PASS: Clang :: Driver/fsanitize.c (16 of 16)

Testing Time: 7.10s
```

The original Driver/fsanitize.c test remains for tests where it is unclear that 
a single feature is being tested in isolation.

NFC.

---

Patch is 181.21 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/169952.diff


16 Files Affected:

- (added) clang/test/Driver/fsanitize-annotate-debug-info.c (+48) 
- (added) clang/test/Driver/fsanitize-baremetal.c (+45) 
- (added) clang/test/Driver/fsanitize-cfi.c (+94) 
- (added) clang/test/Driver/fsanitize-leak.c (+62) 
- (added) clang/test/Driver/fsanitize-memtag.c (+24) 
- (added) clang/test/Driver/fsanitize-merge.c (+52) 
- (added) clang/test/Driver/fsanitize-minimal-runtime.c (+89) 
- (added) clang/test/Driver/fsanitize-numerical.c (+14) 
- (added) clang/test/Driver/fsanitize-realtime.c (+45) 
- (added) clang/test/Driver/fsanitize-recover.c (+28) 
- (added) clang/test/Driver/fsanitize-safe-stack.c (+15) 
- (added) clang/test/Driver/fsanitize-scudo.c (+41) 
- (added) clang/test/Driver/fsanitize-skip-hot-cutoff.c (+57) 
- (added) clang/test/Driver/fsanitize-trap.c (+10) 
- (added) clang/test/Driver/fsanitize-undefined.c (+116) 
- (modified) clang/test/Driver/fsanitize.c (-768) 


``````````diff
diff --git a/clang/test/Driver/fsanitize-annotate-debug-info.c 
b/clang/test/Driver/fsanitize-annotate-debug-info.c
new file mode 100644
index 0000000000000..27ffe950579d3
--- /dev/null
+++ b/clang/test/Driver/fsanitize-annotate-debug-info.c
@@ -0,0 +1,48 @@
+// The trailing -fsanitize-annotate-debug-info takes precedence
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info                                 %s -### 
2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info=undefined                       %s -### 
2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info                     
    -fsanitize-annotate-debug-info                                 %s -### 2>&1 
| FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info                     
    -fsanitize-annotate-debug-info=undefined                       %s -### 2>&1 
| FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info=undefined           
    -fsanitize-annotate-debug-info                                 %s -### 2>&1 
| FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info=undefined           
    -fsanitize-annotate-debug-info=undefined                       %s -### 2>&1 
| FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow 
-fsanitize-annotate-debug-info                                 %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info=bool                   
    -fsanitize-annotate-debug-info=undefined                       %s -### 2>&1 
| FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info=undefined 
-fsanitize-annotate-debug-info=bool %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO
+// CHECK-UNDEFINED-PSEUDO: 
"-fsanitize-annotate-debug-info=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,function,integer-divide-by-zero,nonnull-attribute,null,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound"
+
+// The trailing arguments (-fsanitize-annotate-debug-info 
-fno-sanitize-annotate-debug-info=signed-integer-overflow) take precedence
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=signed-integer-overflow %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO2
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO2
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info                     
    -fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=signed-integer-overflow %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO2
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info                     
    -fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO2
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow 
-fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=signed-integer-overflow %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO2
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow 
-fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO2
+// CHECK-UNDEFINED-PSEUDO2: 
"-fsanitize-annotate-debug-info=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,function,integer-divide-by-zero,nonnull-attribute,null,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,unreachable,vla-bound"
+
+// The trailing -fno-sanitize-annotate-debug-info takes precedence
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                           
-fno-sanitize-annotate-debug-info                                    %s -### 
2>&1 | not FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                           
-fno-sanitize-annotate-debug-info=undefined                          %s -### 
2>&1 | not FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                           
-fno-sanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=bool %s -### 2>&1 | not FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                           
-fno-sanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=bool %s -### 2>&1 | not FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info                                    %s -### 
2>&1 | not FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=undefined                          %s -### 
2>&1 | not FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info                                    %s -### 
2>&1 | not FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO3
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=undefined                          %s -### 
2>&1 | not FileCheck %s --check-prefix=CHECK-UNDEFINED-PSEUDO3
+// CHECK-UNDEFINED-PSEUDO3: "-fsanitize-annotate-debug-info"
+
+// The trailing arguments (-fsanitize-annotate-debug-info 
-fno-sanitize-annotate-debug-info=alignment,null) take precedence
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO4
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
     -fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO4
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info                     
    -fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO4
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fno-sanitize-annotate-debug-info                     
    -fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO4
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow 
-fsanitize-annotate-debug-info           
-fno-sanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO4
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fno-sanitize-annotate-debug-info=signed-integer-overflow 
-fsanitize-annotate-debug-info=undefined 
-fno-sanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO4
+// CHECK-UNDEFINED-PSEUDO4: 
"-fsanitize-annotate-debug-info=array-bounds,bool,builtin,enum,float-cast-overflow,function,integer-divide-by-zero,nonnull-attribute,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound"
+
+// The trailing arguments (-fno-sanitize-annotate-debug-info 
-fsanitize-annotate-debug-info=alignment,null) take precedence
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined                                                       
  -fno-sanitize-annotate-debug-info=undefined 
-fsanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO5
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info                        
 -fno-sanitize-annotate-debug-info           
-fsanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO5
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined -fsanitize-annotate-debug-info                        
 -fno-sanitize-annotate-debug-info=undefined 
-fsanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO5
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fsanitize-annotate-debug-info=signed-integer-overflow 
-fno-sanitize-annotate-debug-info           
-fsanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO5
+// RUN: %clang --target=x86_64-linux-gnu -fsanitize=undefined 
-fsanitize-trap=undefined 
-fsanitize-annotate-debug-info=signed-integer-overflow 
-fno-sanitize-annotate-debug-info=undefined 
-fsanitize-annotate-debug-info=alignment,null %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-UNDEFINED-PSEUDO5
+// CHECK-UNDEFINED-PSEUDO5: "-fsanitize-annotate-debug-info=alignment,null"
diff --git a/clang/test/Driver/fsanitize-baremetal.c 
b/clang/test/Driver/fsanitize-baremetal.c
new file mode 100644
index 0000000000000..88232a06e52e8
--- /dev/null
+++ b/clang/test/Driver/fsanitize-baremetal.c
@@ -0,0 +1,45 @@
+// * Test BareMetal toolchain sanitizer support *
+
+// RUN: %clang --target=arm-arm-non-eabi -fsanitize=address %s -### 2>&1 | 
FileCheck %s -check-prefix=ADDRESS-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=address %s -### 2>&1 | 
FileCheck %s -check-prefix=ADDRESS-BAREMETAL
+// ADDRESS-BAREMETAL: "-fsanitize=address"
+
+// RUN: %clang --target=arm-arm-none-eabi -fsanitize=kernel-address %s -### 
2>&1 | FileCheck %s -check-prefix=KERNEL-ADDRESS-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=kernel-address %s -### 
2>&1 | FileCheck %s -check-prefix=KERNEL-ADDRESS-BAREMETAL
+// KERNEL-ADDRESS-BAREMETAL: "-fsanitize=kernel-address"
+
+// RUN: %clang --target=aarch64-none-elf -fsanitize=hwaddress %s -### 2>&1 | 
FileCheck %s -check-prefix=HWADDRESS-BAREMETAL
+// HWADDRESS-BAREMETAL: "-fsanitize=hwaddress"
+
+// RUN: %clang --target=aarch64-none-elf -fsanitize=kernel-hwaddress %s -### 
2>&1 | FileCheck %s -check-prefix=KERNEL-HWADDRESS-BAREMETAL
+// KERNEL-HWADDRESS-BAREMETAL: "-fsanitize=kernel-hwaddress"
+
+// RUN: %clang --target=aarch64-none-elf -fsanitize=thread %s -### 2>&1 | 
FileCheck %s -check-prefix=THREAD-BAREMETAL
+// THREAD-BAREMETAL: "-fsanitize=thread"
+
+// RUN: %clang --target=arm-arm-none-eabi -fsanitize=vptr %s -### 2>&1 | 
FileCheck %s -check-prefix=VPTR-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=vptr %s -### 2>&1 | 
FileCheck %s -check-prefix=VPTR-BAREMETAL
+// VPTR-BAREMETAL: "-fsanitize=vptr"
+
+// RUN: %clang --target=arm-arm-none-eabi -fsanitize=safe-stack %s -### 2>&1 | 
FileCheck %s -check-prefix=SAFESTACK-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=safe-stack %s -### 2>&1 | 
FileCheck %s -check-prefix=SAFESTACK-BAREMETAL
+// SAFESTACK-BAREMETAL: "-fsanitize=safe-stack"
+
+// RUN: %clang --target=arm-arm-none-eabi -fsanitize=undefined %s -### 2>&1 | 
FileCheck %s -check-prefix=UNDEFINED-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=undefined %s -### 2>&1 | 
FileCheck %s -check-prefix=UNDEFINED-BAREMETAL
+// UNDEFINED-BAREMETAL: "-fsanitize={{.*}}
+
+// RUN: %clang --target=arm-arm-none-eabi -fsanitize=scudo %s -### 2>&1 | 
FileCheck %s -check-prefix=SCUDO-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=scudo %s -### 2>&1 | 
FileCheck %s -check-prefix=SCUDO-BAREMETAL
+// SCUDO-BAREMETAL: "-fsanitize=scudo"
+
+// RUN: %clang --target=arm-arm-none-eabi -fsanitize=function %s -### 2>&1 | 
FileCheck %s -check-prefix=FUNCTION-BAREMETAL
+// RUN: %clang --target=aarch64-none-elf -fsanitize=function %s -### 2>&1 | 
FileCheck %s -check-prefix=FUNCTION-BAREMETAL
+// FUNCTION-BAREMETAL: "-fsanitize=function"
+
+// RUN: not %clang --target=aarch64-none-elf -fsanitize=memory %s -### 2>&1 | 
FileCheck %s -check-prefix=UNSUPPORTED-BAREMETAL
+// RUN: not %clang --target=aarch64-none-elf -fsanitize=kernel-memory %s -### 
2>&1 | FileCheck %s -check-prefix=UNSUPPORTED-BAREMETAL
+// RUN: not %clang --target=aarch64-none-elf -fsanitize=leak %s -### 2>&1 | 
FileCheck %s -check-prefix=UNSUPPORTED-BAREMETAL
+// RUN: not %clang --target=aarch64-none-elf -fsanitize=dataflow %s -### 2>&1 
| FileCheck %s -check-prefix=UNSUPPORTED-BAREMETAL
+// RUN: not %clang --target=arm-arm-none-eabi -fsanitize=shadow-call-stack %s 
-### 2>&1 | FileCheck %s -check-prefix=UNSUPPORTED-BAREMETAL
+// UNSUPPORTED-BAREMETAL: unsupported option '-fsanitize={{.*}}' for target
diff --git a/clang/test/Driver/fsanitize-cfi.c 
b/clang/test/Driver/fsanitize-cfi.c
new file mode 100644
index 0000000000000..5886dc370730b
--- /dev/null
+++ b/clang/test/Driver/fsanitize-cfi.c
@@ -0,0 +1,94 @@
+// RUN: %clang --target=x86_64-linux-gnu -fvisibility=hidden -fsanitize=cfi 
-flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=x86_64-apple-darwin10 -fvisibility=hidden 
-fsanitize=cfi -flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-CFI
+// RUN: %clang --target=x86_64-pc-win32 -fvisibility=hidden -fsanitize=cfi 
-flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI-NOMFCALL
+// RUN: %clang --target=x86_64-linux-gnu -fvisibility=hidden -fsanitize=cfi 
-fsanitize-cfi-cross-dso -flto -resource-dir=%S/Inputs/resource_dir -c %s -### 
2>&1 | FileCheck %s --check-prefix=CHECK-CFI-NOMFCALL
+// RUN: %clang --target=x86_64-linux-gnu -fvisibility=hidden 
-fsanitize=cfi-derived-cast -flto -resource-dir=%S/Inputs/resource_dir -c %s 
-### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI-DCAST
+// RUN: %clang --target=x86_64-linux-gnu -fvisibility=hidden 
-fsanitize=cfi-unrelated-cast -flto -resource-dir=%S/Inputs/resource_dir -c %s 
-### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI-UCAST
+// RUN: %clang --target=x86_64-linux-gnu -flto -fvisibility=hidden 
-fsanitize=cfi-nvcall -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-CFI-NVCALL
+// RUN: %clang --target=x86_64-linux-gnu -flto -fvisibility=hidden 
-fsanitize=cfi-vcall -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-CFI-VCALL
+// RUN: %clang --target=arm-linux-gnu -fvisibility=hidden -fsanitize=cfi -flto 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=aarch64-linux-gnu -fvisibility=hidden -fsanitize=cfi 
-flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=arm-linux-android -fvisibility=hidden -fsanitize=cfi 
-flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=arm-none-eabi -fvisibility=hidden -fsanitize=cfi -flto 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=thumb-none-eabi -fvisibility=hidden -fsanitize=cfi 
-flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=aarch64-linux-android -fvisibility=hidden 
-fsanitize=cfi -flto -resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | 
FileCheck %s --check-prefix=CHECK-CFI
+// RUN: %clang --target=aarch64_be -fvisibility=hidden -fsanitize=cfi -flto 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=riscv32 -fvisibility=hidden -fsanitize=cfi -flto 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=riscv64 -fvisibility=hidden -fsanitize=cfi -flto 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// RUN: %clang --target=loongarch64 -fvisibility=hidden -fsanitize=cfi -flto 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI
+// CHECK-CFI: 
-emit-llvm-bc{{.*}}-fsanitize=cfi-derived-cast,cfi-icall,cfi-mfcall,cfi-unrelated-cast,cfi-nvcall,cfi-vcall
+// CHECK-CFI-NOMFCALL: 
-emit-llvm-bc{{.*}}-fsanitize=cfi-derived-cast,cfi-icall,cfi-unrelated-cast,cfi-nvcall,cfi-vcall
+// CHECK-CFI-DCAST: -emit-llvm-bc{{.*}}-fsanitize=cfi-derived-cast
+// CHECK-CFI-UCAST: -emit-llvm-bc{{.*}}-fsanitize=cfi-unrelated-cast
+// CHECK-CFI-NVCALL: -emit-llvm-bc{{.*}}-fsanitize=cfi-nvcall
+// CHECK-CFI-VCALL: -emit-llvm-bc{{.*}}-fsanitize=cfi-vcall
+
+// RUN: not %clang --target=x86_64-linux-gnu -fvisibility=hidden -flto 
-fsanitize=cfi-derived-cast -fno-lto -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI-NOLTO
+// CHECK-CFI-NOLTO: '-fsanitize=cfi-derived-cast' only allowed with '-flto'
+
+// RUN: not %clang --target=x86_64-linux-gnu -flto -fsanitize=cfi-derived-cast 
-c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI-NOVIS
+// CHECK-CFI-NOVIS: error: invalid argument '-fsanitize=cfi-derived-cast' only 
allowed with '-fvisibility='
+
+// RUN: %clang --target=x86_64-pc-win32 -flto -fsanitize=cfi-derived-cast 
-resource-dir=%S/Inputs/resource_dir -c %s -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI-NOVIS-NOERROR
+// RUN: echo > %t.o
+// RUN: %clang --target=x86_64-linux-gnu -flto -fsanitize=cfi-derived-cast 
-resource-dir=%S/Inputs/resource_dir %t.o -### 2>&1 | FileCheck %s 
--check-prefix=CHECK-CFI-NOVIS-NOERROR
+// CHECK-CFI-NOVIS-NOERROR-NOT: only allowed with
+
+// RUN: not %clang --target=mips-unknown-linux -fsanitize=cfi-icall %s -### 
2>&1 | FileCheck %s --check-prefix=CHECK-CFI-ICALL-MIPS
+// CHECK-CFI-ICALL-MIPS: error: unsupported option '-fsanitize=cfi-icall' for 
target 'mips-unknown-linux'
+
+// RUN: not %clang...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/169952
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to