Mercurial > hg > CbC > CbC_llvm
view clang/test/Modules/diag-mappings.c @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | |
children |
line wrap: on
line source
// Test that diagnostic mappings are emitted only when needed and in order of // diagnostic ID rather than non-deterministically. This test passes 3 // -W options and expects exactly 3 mappings to be emitted in the pcm. The -W // options are chosen to be far apart in ID (see DiagnosticIDs.h) so we can // check they are ordered. We also intentionally trigger several other warnings // inside the module and ensure they do not show up in the pcm as mappings. // RUN: rm -rf %t // RUN: split-file %s %t // RUN: %clang_cc1 -fmodules -fimplicit-module-maps \ // RUN: -fmodules-cache-path=%t/cache -triple x86_64-apple-macosx10.11.0 \ // RUN: %t/main.m -fdisable-module-hash \ // RUN: -Werror=stack-protector -Werror=empty-translation-unit -Werror=float-equal // RUN: mv %t/cache/A.pcm %t/A1.pcm // RUN: llvm-bcanalyzer --dump --disable-histogram %t/A1.pcm | FileCheck %s // CHECK: <DIAG_PRAGMA_MAPPINGS // == Initial mappings // Number of mappings = 3 // CHECK-SAME: op2=3 // Common diag id is < 1000 (see DiagnosticIDs.h) // CHECK-SAME: op3=[[STACK_PROT:[0-9][0-9]?[0-9]?]] op4= // Parse diag id is somewhere in 1000..2999, leaving room for changes // CHECK-SAME: op5=[[EMPTY_TU:[12][0-9][0-9][0-9]]] op6= // Sema diag id is > 2000 // CHECK-SAME: op7=[[FLOAT_EQ:[2-9][0-9][0-9][0-9]]] op8= // == Pragmas: // Each pragma creates a mapping table; and each copies the previous table. The // initial mappings are copied as well, but are not serialized since they have // isPragma=false. // == ignored "-Wfloat-equal" // CHECK-SAME: op{{[0-9]+}}=1 // CHECK-SAME: op{{[0-9]+}}=[[FLOAT_EQ]] op{{[0-9]+}}= // == ignored "-Wstack-protector" // CHECK-SAME: op{{[0-9]+}}=2 // CHECK-SAME: op{{[0-9]+}}=[[STACK_PROT]] op{{[0-9]+}}= // CHECK-SAME: op{{[0-9]+}}=[[FLOAT_EQ]] op{{[0-9]+}}= // == warning "-Wempty-translation-unit" // CHECK-SAME: op{{[0-9]+}}=3 // CHECK-SAME: op{{[0-9]+}}=[[STACK_PROT]] op{{[0-9]+}}= // CHECK-SAME: op{{[0-9]+}}=[[EMPTY_TU]] op{{[0-9]+}}= // CHECK-SAME: op{{[0-9]+}}=[[FLOAT_EQ]] op{{[0-9]+}}= // == warning "-Wstack-protector" // CHECK-SAME: op{{[0-9]+}}=3 // CHECK-SAME: op{{[0-9]+}}=[[STACK_PROT]] op{{[0-9]+}}= // CHECK-SAME: op{{[0-9]+}}=[[EMPTY_TU]] op{{[0-9]+}}= // CHECK-SAME: op{{[0-9]+}}=[[FLOAT_EQ]] op{{[0-9]+}}= // RUN: %clang_cc1 -fmodules -fimplicit-module-maps \ // RUN: -fmodules-cache-path=%t/cache -triple x86_64-apple-macosx10.11.0 \ // RUN: %t/main.m -fdisable-module-hash \ // RUN: -Werror=stack-protector -Werror=empty-translation-unit -Werror=float-equal // RUN: diff %t/cache/A.pcm %t/A1.pcm //--- module.modulemap module A { header "a.h" } //--- a.h // Lex warning #warning "w" static inline void f() { // Parse warning ; } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wfloat-equal" #pragma clang diagnostic ignored "-Wstack-protector" static inline void g() { // Sema warning int x; } #pragma clang diagnostic push #pragma clang diagnostic warning "-Wempty-translation-unit" #pragma clang diagnostic warning "-Wstack-protector" #pragma clang diagnostic pop #pragma clang diagnostic pop //--- main.m #import "a.h"