| // ============================================================================= |
| // No Trap Reasons |
| // ============================================================================= |
| |
| // RUN: %clang -fsanitize=undefined -fsanitize-trap=undefined \ |
| // RUN: -fsanitize-debug-trap-reasons=none %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=NONE %s |
| |
| // RUN: %clang -fsanitize=undefined -fsanitize-trap=undefined \ |
| // RUN: -fno-sanitize-debug-trap-reasons %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=NONE %s |
| |
| // NONE: -fsanitize-debug-trap-reasons=none |
| |
| // ============================================================================= |
| // Basic Trap Reasons |
| // ============================================================================= |
| |
| // RUN: %clang -fsanitize=undefined -fsanitize-trap=undefined \ |
| // RUN: -fsanitize-debug-trap-reasons=basic %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=BASIC %s |
| // BASIC: -fsanitize-debug-trap-reasons=basic |
| |
| // ============================================================================= |
| // Detailed Trap Reasons |
| // ============================================================================= |
| |
| // RUN: %clang -fsanitize=undefined -fsanitize-trap=undefined \ |
| // RUN: -fsanitize-debug-trap-reasons=detailed %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=DETAILED %s |
| |
| // RUN: %clang -fsanitize=undefined -fsanitize-trap=undefined \ |
| // RUN: -fsanitize-debug-trap-reasons %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=DETAILED %s |
| |
| // DETAILED: -fsanitize-debug-trap-reasons=detailed |
| |
| // ============================================================================= |
| // Other cases |
| // ============================================================================= |
| |
| // By default the driver doesn't pass along any value and the default value is |
| // whatever is the default in CodeGenOptions. |
| // RUN: %clang %s -### 2>&1 | FileCheck --check-prefix=DEFAULT %s |
| // DEFAULT-NOT: -fsanitize-debug-trap-reasons |
| |
| // Warning when not using UBSan |
| // RUN: %clang -fsanitize-debug-trap-reasons=none %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=WARN %s |
| // WARN: warning: argument unused during compilation: '-fsanitize-debug-trap-reasons=none' |
| |
| // Bad flag arguments are just passed along to the Frontend which handles rejecting |
| // invalid values. See `clang/test/Frontend/fsanitize-debug-trap-reasons.c` |
| // RUN: %clang -fsanitize=undefined -fsanitize-trap=undefined \ |
| // RUN: -fsanitize-debug-trap-reasons=bad_value %s -### 2>&1 | \ |
| // RUN: FileCheck --check-prefix=BAD_VALUE %s |
| // BAD_VALUE: -fsanitize-debug-trap-reasons=bad_value |