Skip to content

Commit cfb0827

Browse files
authored
Merge pull request #8995 from rjmccall/rip-lvalue-to-pointer-expr
2 parents 355b7c1 + e6d52d8 commit cfb0827

File tree

7 files changed

+0
-75
lines changed

7 files changed

+0
-75
lines changed

include/swift/AST/Expr.h

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2778,26 +2778,6 @@ class InjectIntoOptionalExpr : public ImplicitConversionExpr {
27782778
}
27792779
};
27802780

2781-
/// Convert the address of an lvalue to a raw pointer.
2782-
class LValueToPointerExpr : public ImplicitConversionExpr {
2783-
Type AbstractionPattern;
2784-
public:
2785-
LValueToPointerExpr(Expr *subExpr, Type ty, Type abstractionTy)
2786-
: ImplicitConversionExpr(ExprKind::LValueToPointer, subExpr, ty),
2787-
AbstractionPattern(abstractionTy) {}
2788-
2789-
/// Get the declared type of the type for which we are performing this
2790-
/// conversion. This defines the abstraction level at which the lvalue should
2791-
/// be emitted before taking its address.
2792-
Type getAbstractionPatternType() const {
2793-
return AbstractionPattern;
2794-
}
2795-
2796-
static bool classof(const Expr *E) {
2797-
return E->getKind() == ExprKind::LValueToPointer;
2798-
}
2799-
};
2800-
28012781
/// Convert the address of an inout property to a pointer.
28022782
class InOutToPointerExpr : public ImplicitConversionExpr {
28032783
public:

include/swift/AST/ExprNodes.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ ABSTRACT_EXPR(ImplicitConversion, Expr)
148148
EXPR(ArrayToPointer, ImplicitConversionExpr)
149149
EXPR(StringToPointer, ImplicitConversionExpr)
150150
EXPR(PointerToPointer, ImplicitConversionExpr)
151-
EXPR(LValueToPointer, ImplicitConversionExpr)
152151
EXPR(ForeignObjectConversion, ImplicitConversionExpr)
153152
EXPR(UnevaluatedInstance, ImplicitConversionExpr)
154153
EXPR_RANGE(ImplicitConversion, Load, UnevaluatedInstance)

lib/AST/ASTDumper.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2083,11 +2083,6 @@ class PrintExpr : public ExprVisitor<PrintExpr> {
20832083
printRec(E->getSubExpr());
20842084
PrintWithColorRAII(OS, ParenthesisColor) << ')';
20852085
}
2086-
void visitLValueToPointerExpr(LValueToPointerExpr *E) {
2087-
printCommon(E, "lvalue_to_pointer") << '\n';
2088-
printRec(E->getSubExpr());
2089-
PrintWithColorRAII(OS, ParenthesisColor) << ')';
2090-
}
20912086
void visitInjectIntoOptionalExpr(InjectIntoOptionalExpr *E) {
20922087
printCommon(E, "inject_into_optional") << '\n';
20932088
printRec(E->getSubExpr());

lib/AST/ASTVerifier.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1711,22 +1711,6 @@ class Verifier : public ASTWalker {
17111711
verifyCheckedBase(E);
17121712
}
17131713

1714-
void verifyChecked(LValueToPointerExpr *E) {
1715-
PrettyStackTraceExpr debugStack(Ctx, "verifying LValueToPointerExpr", E);
1716-
1717-
if (!E->getSubExpr()->getType()->is<LValueType>()) {
1718-
Out << "LValueToPointerExpr subexpression must be an lvalue\n";
1719-
abort();
1720-
}
1721-
if (!E->getType()->isEqual(
1722-
E->getType()->getASTContext().TheRawPointerType)) {
1723-
Out << "LValueToPointerExpr result type must be RawPointer\n";
1724-
abort();
1725-
}
1726-
1727-
verifyCheckedBase(E);
1728-
}
1729-
17301714
void verifyChecked(DynamicTypeExpr *E) {
17311715
PrettyStackTraceExpr debugStack(Ctx, "verifying DynamicTypeExpr", E);
17321716

lib/AST/Expr.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,6 @@ ConcreteDeclRef Expr::getReferencedDecl() const {
494494
PASS_THROUGH_REFERENCE(ArrayToPointer, getSubExpr);
495495
PASS_THROUGH_REFERENCE(StringToPointer, getSubExpr);
496496
PASS_THROUGH_REFERENCE(PointerToPointer, getSubExpr);
497-
PASS_THROUGH_REFERENCE(LValueToPointer, getSubExpr);
498497
PASS_THROUGH_REFERENCE(ForeignObjectConversion, getSubExpr);
499498
PASS_THROUGH_REFERENCE(UnevaluatedInstance, getSubExpr);
500499
NO_REFERENCE(Coerce);
@@ -778,7 +777,6 @@ bool Expr::canAppendCallParentheses() const {
778777
case ExprKind::ArrayToPointer:
779778
case ExprKind::StringToPointer:
780779
case ExprKind::PointerToPointer:
781-
case ExprKind::LValueToPointer:
782780
case ExprKind::ForeignObjectConversion:
783781
case ExprKind::UnevaluatedInstance:
784782
case ExprKind::EnumIsCase:

lib/SILGen/SILGenExpr.cpp

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,6 @@ namespace {
436436
RValue visitRebindSelfInConstructorExpr(RebindSelfInConstructorExpr *E,
437437
SGFContext C);
438438
RValue visitInjectIntoOptionalExpr(InjectIntoOptionalExpr *E, SGFContext C);
439-
RValue visitLValueToPointerExpr(LValueToPointerExpr *E, SGFContext C);
440439
RValue visitClassMetatypeToObjectExpr(ClassMetatypeToObjectExpr *E,
441440
SGFContext C);
442441
RValue visitExistentialMetatypeToObjectExpr(ExistentialMetatypeToObjectExpr *E,
@@ -3352,28 +3351,6 @@ RValue RValueEmitter::visitInjectIntoOptionalExpr(InjectIntoOptionalExpr *E,
33523351
return RValue(SGF, E, result);
33533352
}
33543353

3355-
RValue RValueEmitter::visitLValueToPointerExpr(LValueToPointerExpr *E,
3356-
SGFContext C) {
3357-
LValue lv = SGF.emitLValue(E->getSubExpr(), AccessKind::ReadWrite);
3358-
SILValue address = SGF.emitAddressOfLValue(E->getSubExpr(),
3359-
std::move(lv),
3360-
AccessKind::ReadWrite)
3361-
.getUnmanagedValue();
3362-
// TODO: Reabstract the lvalue to match the abstraction level expected by
3363-
// the inout address conversion's InOutType. For now, just report cases where
3364-
// we would need a reabstraction as unsupported.
3365-
SILType abstractedTy
3366-
= SGF.getLoweredType(AbstractionPattern(E->getAbstractionPatternType()),
3367-
E->getSubExpr()->getType()->getLValueOrInOutObjectType());
3368-
if (address->getType().getObjectType() != abstractedTy)
3369-
SGF.SGM.diagnose(E, diag::not_implemented,
3370-
"abstraction difference in inout conversion");
3371-
3372-
SILValue ptr = SGF.B.createAddressToPointer(E, address,
3373-
SILType::getRawPointerType(SGF.getASTContext()));
3374-
return RValue(SGF, E, ManagedValue::forUnmanaged(ptr));
3375-
}
3376-
33773354
RValue RValueEmitter::visitClassMetatypeToObjectExpr(
33783355
ClassMetatypeToObjectExpr *E,
33793356
SGFContext C) {

lib/Syntax/LegacyASTTransformer.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,14 +1147,6 @@ LegacyASTTransformer::visitPointerToPointerExpr(
11471147
return getUnknownExpr(E);
11481148
}
11491149

1150-
RC<SyntaxData>
1151-
LegacyASTTransformer::visitLValueToPointerExpr(
1152-
LValueToPointerExpr *E,
1153-
const SyntaxData *Parent,
1154-
const CursorIndex IndexInParent) {
1155-
return getUnknownExpr(E);
1156-
}
1157-
11581150
RC<SyntaxData> LegacyASTTransformer::visitForeignObjectConversionExpr(
11591151
ForeignObjectConversionExpr *E,
11601152
const SyntaxData *Parent,

0 commit comments

Comments
 (0)