[llvm-branch-commits] [clang] d1ed32e - Revert "[clang][dataflow] Teach `AnalysisASTVisitor` that `typeid()` can be e…"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Jun 26 06:40:09 PDT 2024
Author: martinboehme
Date: 2024-06-26T15:40:06+02:00
New Revision: d1ed32e5cb1cb43acf2d9085960ff37c3fe6b09b
URL: https://github.com/llvm/llvm-project/commit/d1ed32e5cb1cb43acf2d9085960ff37c3fe6b09b
DIFF: https://github.com/llvm/llvm-project/commit/d1ed32e5cb1cb43acf2d9085960ff37c3fe6b09b.diff
LOG: Revert "[clang][dataflow] Teach `AnalysisASTVisitor` that `typeid()` can be e…"
This reverts commit dfe80a73223edff5c53f8be7925d302883cb40bc.
Added:
Modified:
clang/include/clang/Analysis/FlowSensitive/ASTOps.h
clang/unittests/Analysis/FlowSensitive/TransferTest.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Analysis/FlowSensitive/ASTOps.h b/clang/include/clang/Analysis/FlowSensitive/ASTOps.h
index f9c923a36ad22..925b99af9141a 100644
--- a/clang/include/clang/Analysis/FlowSensitive/ASTOps.h
+++ b/clang/include/clang/Analysis/FlowSensitive/ASTOps.h
@@ -113,11 +113,7 @@ class AnalysisASTVisitor : public RecursiveASTVisitor<Derived> {
// nevertheless it appears in the Clang CFG, so we don't exclude it here.
bool TraverseDecltypeTypeLoc(DecltypeTypeLoc) { return true; }
bool TraverseTypeOfExprTypeLoc(TypeOfExprTypeLoc) { return true; }
- bool TraverseCXXTypeidExpr(CXXTypeidExpr *TIE) {
- if (TIE->isPotentiallyEvaluated())
- return RecursiveASTVisitor<Derived>::TraverseCXXTypeidExpr(TIE);
- return true;
- }
+ bool TraverseCXXTypeidExpr(CXXTypeidExpr *) { return true; }
bool TraverseUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *) {
return true;
}
diff --git a/clang/unittests/Analysis/FlowSensitive/TransferTest.cpp b/clang/unittests/Analysis/FlowSensitive/TransferTest.cpp
index 39e7001393e5e..e743eefa5d458 100644
--- a/clang/unittests/Analysis/FlowSensitive/TransferTest.cpp
+++ b/clang/unittests/Analysis/FlowSensitive/TransferTest.cpp
@@ -1637,49 +1637,6 @@ TEST(TransferTest, StructModeledFieldsWithAccessor) {
});
}
-TEST(TransferTest, StructModeledFieldsInTypeid) {
- // Test that we model fields mentioned inside a `typeid()` expression only if
- // that expression is potentially evaluated -- i.e. if the expression inside
- // `typeid()` is a glvalue of polymorphic type (see
- // `CXXTypeidExpr::isPotentiallyEvaluated()` and [expr.typeid]p3).
- std::string Code = R"(
- // Definitions needed for `typeid`.
- namespace std {
- class type_info {};
- class bad_typeid {};
- } // namespace std
-
- struct NonPolymorphic {};
-
- struct Polymorphic {
- virtual ~Polymorphic() = default;
- };
-
- struct S {
- NonPolymorphic *NonPoly;
- Polymorphic *Poly;
- };
-
- void target(S &s) {
- typeid(*s.NonPoly);
- typeid(*s.Poly);
- // [[p]]
- }
- )";
- runDataflow(
- Code,
- [](const llvm::StringMap<DataflowAnalysisState<NoopLattice>> &Results,
- ASTContext &ASTCtx) {
- const Environment &Env = getEnvironmentAtAnnotation(Results, "p");
- auto &SLoc = getLocForDecl<RecordStorageLocation>(ASTCtx, Env, "s");
- std::vector<const ValueDecl *> Fields;
- for (auto [Field, _] : SLoc.children())
- Fields.push_back(Field);
- EXPECT_THAT(Fields,
- UnorderedElementsAre(findValueDecl(ASTCtx, "Poly")));
- });
-}
-
TEST(TransferTest, StructModeledFieldsWithComplicatedInheritance) {
std::string Code = R"(
struct Base1 {
More information about the llvm-branch-commits
mailing list