================
@@ -178,36 +184,35 @@ class EntityPointerLevelTranslator
// Translate((T*)base) -> Translate(base) if base has pointer type
// -> {} otherwise
- Expected<EntityPointerLevelSet> VisitCastExpr(const CastExpr *E) {
+ Expected<DeclPointerLevels> VisitCastExpr(const CastExpr *E) {
if (hasPtrOrArrType(E->getSubExpr()))
return Visit(E->getSubExpr());
- return EntityPointerLevelSet{};
+ return DeclPointerLevels{};
}
// Translate(f(...)) -> {} if it is an indirect call
// -> {(f_return, 1)}, otherwise
- Expected<EntityPointerLevelSet> VisitCallExpr(const CallExpr *E) {
- if (auto *FD = E->getDirectCallee()) {
- if (auto ReturnId = Extractor.addEntityForReturn(FD))
- return EntityPointerLevelSet{buildEntityPointerLevel(*ReturnId, 1)};
- }
- return EntityPointerLevelSet{};
+ Expected<DeclPointerLevels> VisitCallExpr(const CallExpr *E) {
+ if (auto *FD = E->getDirectCallee())
+ if (Extractor.addEntityForReturn(FD))
+ return DeclPointerLevels{{FD, /*PointerLevel=*/1, /*IsReturn=*/true}};
+ return DeclPointerLevels{};
}
// Translate(base[x]) -> Translate(*base)
- Expected<EntityPointerLevelSet>
+ Expected<DeclPointerLevels>
VisitArraySubscriptExpr(const ArraySubscriptExpr *E) {
return translateDereferencePointer(E->getBase());
}
// Translate(cond ? base1 : base2) := Translate(base1) U Translate(base2)
- Expected<EntityPointerLevelSet>
+ Expected<DeclPointerLevels>
VisitAbstractConditionalOperator(const AbstractConditionalOperator *E) {
- Expected<EntityPointerLevelSet> ReT = Visit(E->getTrueExpr());
- Expected<EntityPointerLevelSet> ReF = Visit(E->getFalseExpr());
+ Expected<DeclPointerLevels> ReT = Visit(E->getTrueExpr());
+ Expected<DeclPointerLevels> ReF = Visit(E->getFalseExpr());
if (ReT && ReF) {
- ReT->insert(ReF->begin(), ReF->end());
+ ReT->insert(ReT->end(), ReF->begin(), ReF->end());
----------------
steakhal wrote:
Hah! a disguised `llvm::append_range(ReT, ReF)`
https://github.com/llvm/llvm-project/pull/218196
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits