[compiler-rt] bd2d8c0 - Revert "[Coverage] Fix region termination for GNU statement expressions" (#132095)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 19 13:48:38 PDT 2025
Author: Justin Cady
Date: 2025-03-19T16:48:34-04:00
New Revision: bd2d8c0a7ee196cc60ab0d46d6fab416b1697ae1
URL: https://github.com/llvm/llvm-project/commit/bd2d8c0a7ee196cc60ab0d46d6fab416b1697ae1
DIFF: https://github.com/llvm/llvm-project/commit/bd2d8c0a7ee196cc60ab0d46d6fab416b1697ae1.diff
LOG: Revert "[Coverage] Fix region termination for GNU statement expressions" (#132095)
Reverts llvm/llvm-project#130976
Breaks clang-cmake-x86_64-avx512-linux bot.
Added:
Modified:
clang/lib/CodeGen/CoverageMappingGen.cpp
clang/test/CoverageMapping/terminate-statements.cpp
Removed:
compiler-rt/test/profile/Linux/coverage-statement-expression.cpp
################################################################################
diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp
index 73811d15979d5..f09157771d2b5 100644
--- a/clang/lib/CodeGen/CoverageMappingGen.cpp
+++ b/clang/lib/CodeGen/CoverageMappingGen.cpp
@@ -1505,14 +1505,6 @@ struct CounterCoverageMappingBuilder
handleFileExit(getEnd(S));
}
- void VisitStmtExpr(const StmtExpr *E) {
- Visit(E->getSubStmt());
- // Any region termination (such as a noreturn CallExpr) within the statement
- // expression has been handled by visiting the sub-statement. The visitor
- // cannot be at a terminate statement leaving the statement expression.
- HasTerminateStmt = false;
- }
-
void VisitDecl(const Decl *D) {
Stmt *Body = D->getBody();
diff --git a/clang/test/CoverageMapping/terminate-statements.cpp b/clang/test/CoverageMapping/terminate-statements.cpp
index 3f8e43f0fbcb6..0067185fee8e6 100644
--- a/clang/test/CoverageMapping/terminate-statements.cpp
+++ b/clang/test/CoverageMapping/terminate-statements.cpp
@@ -346,12 +346,6 @@ int elsecondnoret(void) {
return 0;
}
-// CHECK-LABEL: _Z18statementexprnoretb
-int statementexprnoret(bool crash) {
- int rc = ({ if (crash) abort(); 0; }); // CHECK: File 0, 351:35 -> 352:12 = (#0 - #1)
- return rc; // CHECK-NOT: Gap
-}
-
int main() {
foo(0);
foo(1);
@@ -374,6 +368,5 @@ int main() {
ornoret();
abstractcondnoret();
elsecondnoret();
- statementexprnoret(false);
return 0;
}
diff --git a/compiler-rt/test/profile/Linux/coverage-statement-expression.cpp b/compiler-rt/test/profile/Linux/coverage-statement-expression.cpp
deleted file mode 100644
index 7c76555e3300b..0000000000000
--- a/compiler-rt/test/profile/Linux/coverage-statement-expression.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clangxx_profgen -std=gnu++17 -fuse-ld=lld -fcoverage-mapping -o %t %s
-// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
-// RUN: llvm-profdata merge -o %t.profdata %t.profraw
-// RUN: llvm-cov show %t -instr-profile=%t.profdata 2>&1 | FileCheck %s
-
-#include <stdio.h>
-
-// clang-format off
-__attribute__ ((__noreturn__))
-void foo(void) { while (1); } // CHECK: [[@LINE]]| 0|void foo(void)
-_Noreturn void bar(void) { while (1); } // CHECK: [[@LINE]]| 0|_Noreturn void bar(void)
- // CHECK: [[@LINE]]| |
-int main(int argc, char **argv) { // CHECK: [[@LINE]]| 1|int main(
- int rc = ({ if (argc > 3) foo(); 0; }); // CHECK: [[@LINE]]| 1| int rc =
- printf("coverage after foo is present\n"); // CHECK: [[@LINE]]| 1| printf(
- // CHECK: [[@LINE]]| |
- int rc2 = ({ if (argc > 3) bar(); 0; }); // CHECK: [[@LINE]]| 1| int rc2 =
- printf("coverage after bar is present\n"); // CHECK: [[@LINE]]| 1| printf(
- return rc + rc2; // CHECK: [[@LINE]]| 1| return rc
-} // CHECK: [[@LINE]]| 1|}
-// clang-format on
More information about the llvm-commits
mailing list