summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGNonTrivialStruct.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CGNonTrivialStruct.cpp')
-rw-r--r--clang/lib/CodeGen/CGNonTrivialStruct.cpp59
1 files changed, 5 insertions, 54 deletions
diff --git a/clang/lib/CodeGen/CGNonTrivialStruct.cpp b/clang/lib/CodeGen/CGNonTrivialStruct.cpp
index 731938af867..3b0b1731987 100644
--- a/clang/lib/CodeGen/CGNonTrivialStruct.cpp
+++ b/clang/lib/CodeGen/CGNonTrivialStruct.cpp
@@ -77,8 +77,6 @@ struct DefaultInitializedTypeVisitor {
switch (PDIK) {
case QualType::PDIK_ARCStrong:
return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
- case QualType::PDIK_ARCWeak:
- return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
case QualType::PDIK_Struct:
return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
case QualType::PDIK_Trivial:
@@ -110,8 +108,6 @@ struct CopiedTypeVisitor {
switch (PCK) {
case QualType::PCK_ARCStrong:
return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
- case QualType::PCK_ARCWeak:
- return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
case QualType::PCK_Struct:
return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
case QualType::PCK_Trivial:
@@ -145,6 +141,11 @@ template <class Derived> struct StructVisitor {
template <class... Ts> void visitTrivial(Ts... Args) {}
+ template <class... Ts> void visitARCWeak(Ts... Args) {
+ // FIXME: remove this when visitARCWeak is implemented in the subclasses.
+ llvm_unreachable("weak field is not expected");
+ }
+
template <class... Ts> void visitCXXDestructor(Ts... Args) {
llvm_unreachable("field of a C++ struct type is not expected");
}
@@ -244,13 +245,6 @@ template <class Derived> struct GenFuncNameBase {
appendStr(getVolatileOffsetStr(FT.isVolatileQualified(), FieldOffset));
}
- void visitARCWeak(QualType FT, const FieldDecl *FD,
- CharUnits CurStructOffset) {
- appendStr("_w");
- CharUnits FieldOffset = CurStructOffset + asDerived().getFieldOffset(FD);
- appendStr(getVolatileOffsetStr(FT.isVolatileQualified(), FieldOffset));
- }
-
void visitStruct(QualType QT, const FieldDecl *FD,
CharUnits CurStructOffset) {
CharUnits FieldOffset = CurStructOffset + asDerived().getFieldOffset(FD);
@@ -621,12 +615,6 @@ struct GenDestructor : StructVisitor<GenDestructor>,
*CGF, getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD), QT);
}
- void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStackOffset,
- std::array<Address, 1> Addrs) {
- CGF->destroyARCWeak(
- *CGF, getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD), QT);
- }
-
void callSpecialFunction(QualType FT, CharUnits Offset,
std::array<Address, 1> Addrs) {
CGF->callCStructDestructor(
@@ -648,12 +636,6 @@ struct GenDefaultInitialize
getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD), QT);
}
- void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStackOffset,
- std::array<Address, 1> Addrs) {
- CGF->EmitNullInitialization(
- getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD), QT);
- }
-
template <class FieldKind, size_t... Is>
void visitArray(FieldKind FK, QualType QT, const FieldDecl *FD,
CharUnits CurStackOffset, std::array<Address, 1> Addrs) {
@@ -696,14 +678,6 @@ struct GenCopyConstructor : GenBinaryFunc<GenCopyConstructor, false> {
llvm::Value *Val = CGF->EmitARCRetain(QT, SrcVal);
CGF->EmitStoreOfScalar(Val, CGF->MakeAddrLValue(Addrs[DstIdx], QT), true);
}
-
- void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStackOffset,
- std::array<Address, 2> Addrs) {
- Addrs[DstIdx] = getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD);
- Addrs[SrcIdx] = getAddrWithOffset(Addrs[SrcIdx], CurStackOffset, FD);
- CGF->EmitARCCopyWeak(Addrs[DstIdx], Addrs[SrcIdx]);
- }
-
void callSpecialFunction(QualType FT, CharUnits Offset,
std::array<Address, 2> Addrs) {
CGF->callCStructCopyConstructor(CGF->MakeAddrLValue(Addrs[DstIdx], FT),
@@ -726,14 +700,6 @@ struct GenMoveConstructor : GenBinaryFunc<GenMoveConstructor, true> {
CGF->EmitStoreOfScalar(SrcVal, CGF->MakeAddrLValue(Addrs[DstIdx], QT),
/* isInitialization */ true);
}
-
- void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStackOffset,
- std::array<Address, 2> Addrs) {
- Addrs[DstIdx] = getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD);
- Addrs[SrcIdx] = getAddrWithOffset(Addrs[SrcIdx], CurStackOffset, FD);
- CGF->EmitARCMoveWeak(Addrs[DstIdx], Addrs[SrcIdx]);
- }
-
void callSpecialFunction(QualType FT, CharUnits Offset,
std::array<Address, 2> Addrs) {
CGF->callCStructMoveConstructor(CGF->MakeAddrLValue(Addrs[DstIdx], FT),
@@ -754,14 +720,6 @@ struct GenCopyAssignment : GenBinaryFunc<GenCopyAssignment, false> {
CGF->EmitARCStoreStrong(CGF->MakeAddrLValue(Addrs[DstIdx], QT), SrcVal,
false);
}
-
- void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStackOffset,
- std::array<Address, 2> Addrs) {
- Addrs[DstIdx] = getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD);
- Addrs[SrcIdx] = getAddrWithOffset(Addrs[SrcIdx], CurStackOffset, FD);
- CGF->emitARCCopyAssignWeak(QT, Addrs[DstIdx], Addrs[SrcIdx]);
- }
-
void callSpecialFunction(QualType FT, CharUnits Offset,
std::array<Address, 2> Addrs) {
CGF->callCStructCopyAssignmentOperator(
@@ -789,13 +747,6 @@ struct GenMoveAssignment : GenBinaryFunc<GenMoveAssignment, true> {
CGF->EmitARCRelease(DstVal, ARCImpreciseLifetime);
}
- void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStackOffset,
- std::array<Address, 2> Addrs) {
- Addrs[DstIdx] = getAddrWithOffset(Addrs[DstIdx], CurStackOffset, FD);
- Addrs[SrcIdx] = getAddrWithOffset(Addrs[SrcIdx], CurStackOffset, FD);
- CGF->emitARCMoveAssignWeak(QT, Addrs[DstIdx], Addrs[SrcIdx]);
- }
-
void callSpecialFunction(QualType FT, CharUnits Offset,
std::array<Address, 2> Addrs) {
CGF->callCStructMoveAssignmentOperator(
OpenPOWER on IntegriCloud