@@ -2961,8 +2961,7 @@ llvm::Value *CGObjCMac::GenerateProtocolRef(CodeGenFunction &CGF,
2961
2961
// resolved. Investigate. Its also wasteful to look this up over and over.
2962
2962
LazySymbols.insert (&CGM.getContext ().Idents .get (" Protocol" ));
2963
2963
2964
- return llvm::ConstantExpr::getBitCast (GetProtocolRef (PD),
2965
- ObjCTypes.getExternalProtocolPtrTy ());
2964
+ return GetProtocolRef (PD);
2966
2965
}
2967
2966
2968
2967
void CGObjCCommonMac::GenerateProtocol (const ObjCProtocolDecl *PD) {
@@ -3182,7 +3181,7 @@ CGObjCMac::EmitProtocolList(Twine name,
3182
3181
3183
3182
llvm::GlobalVariable *GV =
3184
3183
CreateMetadataVar (name, values, section, CGM.getPointerAlign (), false );
3185
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. ProtocolListPtrTy ) ;
3184
+ return GV ;
3186
3185
}
3187
3186
3188
3187
static void
@@ -3290,7 +3289,7 @@ llvm::Constant *CGObjCCommonMac::EmitPropertyList(Twine Name,
3290
3289
3291
3290
llvm::GlobalVariable *GV =
3292
3291
CreateMetadataVar (Name, values, Section, CGM.getPointerAlign (), true );
3293
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. PropertyListPtrTy ) ;
3292
+ return GV ;
3294
3293
}
3295
3294
3296
3295
llvm::Constant *
@@ -3311,7 +3310,7 @@ CGObjCCommonMac::EmitProtocolMethodTypes(Twine Name,
3311
3310
3312
3311
llvm::GlobalVariable *GV =
3313
3312
CreateMetadataVar (Name, Init, Section, CGM.getPointerAlign (), true );
3314
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. Int8PtrPtrTy ) ;
3313
+ return GV ;
3315
3314
}
3316
3315
3317
3316
/*
@@ -3804,7 +3803,7 @@ llvm::Constant *CGObjCMac::EmitIvarList(const ObjCImplementationDecl *ID,
3804
3803
GV = CreateMetadataVar (" OBJC_INSTANCE_VARIABLES_" + ID->getName (), ivarList,
3805
3804
" __OBJC,__instance_vars,regular,no_dead_strip" ,
3806
3805
CGM.getPointerAlign (), true );
3807
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. IvarListPtrTy ) ;
3806
+ return GV ;
3808
3807
}
3809
3808
3810
3809
// / Build a struct objc_method_description constant for the given method.
@@ -3923,8 +3922,7 @@ llvm::Constant *CGObjCMac::emitMethodList(Twine name, MethodListType MLT,
3923
3922
3924
3923
llvm::GlobalVariable *GV = CreateMetadataVar (prefix + name, values, section,
3925
3924
CGM.getPointerAlign (), true );
3926
- return llvm::ConstantExpr::getBitCast (GV,
3927
- ObjCTypes.MethodDescriptionListPtrTy );
3925
+ return GV;
3928
3926
}
3929
3927
3930
3928
// Otherwise, it's an objc_method_list.
@@ -3941,7 +3939,7 @@ llvm::Constant *CGObjCMac::emitMethodList(Twine name, MethodListType MLT,
3941
3939
3942
3940
llvm::GlobalVariable *GV = CreateMetadataVar (prefix + name, values, section,
3943
3941
CGM.getPointerAlign (), true );
3944
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. MethodListPtrTy ) ;
3942
+ return GV ;
3945
3943
}
3946
3944
3947
3945
llvm::Function *CGObjCCommonMac::GenerateMethod (const ObjCMethodDecl *OMD,
@@ -3996,8 +3994,7 @@ CGObjCCommonMac::GenerateDirectMethod(const ObjCMethodDecl *OMD,
3996
3994
Fn = llvm::Function::Create (MethodTy, llvm::GlobalValue::ExternalLinkage,
3997
3995
" " , &CGM.getModule ());
3998
3996
Fn->takeName (OldFn);
3999
- OldFn->replaceAllUsesWith (
4000
- llvm::ConstantExpr::getBitCast (Fn, OldFn->getType ()));
3997
+ OldFn->replaceAllUsesWith (Fn);
4001
3998
OldFn->eraseFromParent ();
4002
3999
4003
4000
// Replace the cached function in the map.
@@ -5204,7 +5201,7 @@ llvm::Constant *CGObjCMac::EmitModuleSymbols() {
5204
5201
llvm::GlobalVariable *GV = CreateMetadataVar (
5205
5202
" OBJC_SYMBOLS" , values, " __OBJC,__symbols,regular,no_dead_strip" ,
5206
5203
CGM.getPointerAlign (), true );
5207
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. SymtabPtrTy ) ;
5204
+ return GV ;
5208
5205
}
5209
5206
5210
5207
llvm::Value *CGObjCMac::EmitClassRefFromId (CodeGenFunction &CGF,
@@ -5214,13 +5211,10 @@ llvm::Value *CGObjCMac::EmitClassRefFromId(CodeGenFunction &CGF,
5214
5211
llvm::GlobalVariable *&Entry = ClassReferences[II];
5215
5212
5216
5213
if (!Entry) {
5217
- llvm::Constant *Casted =
5218
- llvm::ConstantExpr::getBitCast (GetClassName (II->getName ()),
5219
- ObjCTypes.ClassPtrTy );
5220
- Entry = CreateMetadataVar (
5221
- " OBJC_CLASS_REFERENCES_" , Casted,
5222
- " __OBJC,__cls_refs,literal_pointers,no_dead_strip" ,
5223
- CGM.getPointerAlign (), true );
5214
+ Entry =
5215
+ CreateMetadataVar (" OBJC_CLASS_REFERENCES_" , GetClassName (II->getName ()),
5216
+ " __OBJC,__cls_refs,literal_pointers,no_dead_strip" ,
5217
+ CGM.getPointerAlign (), true );
5224
5218
}
5225
5219
5226
5220
return CGF.Builder .CreateAlignedLoad (Entry->getValueType (), Entry,
@@ -5253,11 +5247,8 @@ Address CGObjCMac::EmitSelectorAddr(Selector Sel) {
5253
5247
5254
5248
llvm::GlobalVariable *&Entry = SelectorReferences[Sel];
5255
5249
if (!Entry) {
5256
- llvm::Constant *Casted =
5257
- llvm::ConstantExpr::getBitCast (GetMethodVarName (Sel),
5258
- ObjCTypes.SelectorPtrTy );
5259
5250
Entry = CreateMetadataVar (
5260
- " OBJC_SELECTOR_REFERENCES_" , Casted ,
5251
+ " OBJC_SELECTOR_REFERENCES_" , GetMethodVarName (Sel) ,
5261
5252
" __OBJC,__message_refs,literal_pointers,no_dead_strip" , Align, true );
5262
5253
Entry->setExternallyInitialized (true );
5263
5254
}
@@ -6166,8 +6157,8 @@ void CGObjCNonFragileABIMac::AddModuleClassList(
6166
6157
6167
6158
SmallVector<llvm::Constant*, 8 > Symbols (NumClasses);
6168
6159
for (unsigned i=0 ; i<NumClasses; i++)
6169
- Symbols[i] = llvm::ConstantExpr::getBitCast ( Container[i],
6170
- ObjCTypes. Int8PtrTy );
6160
+ Symbols[i] = Container[i];
6161
+
6171
6162
llvm::Constant *Init =
6172
6163
llvm::ConstantArray::get (llvm::ArrayType::get (ObjCTypes.Int8PtrTy ,
6173
6164
Symbols.size ()),
@@ -6603,9 +6594,7 @@ llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CodeGenFunction &CGF,
6603
6594
// of protocol's meta-data (not a reference to it!)
6604
6595
assert (!PD->isNonRuntimeProtocol () &&
6605
6596
" attempting to get a protocol ref to a static protocol." );
6606
- llvm::Constant *Init =
6607
- llvm::ConstantExpr::getBitCast (GetOrEmitProtocol (PD),
6608
- ObjCTypes.getExternalProtocolPtrTy ());
6597
+ llvm::Constant *Init = GetOrEmitProtocol (PD);
6609
6598
6610
6599
std::string ProtocolName (" _OBJC_PROTOCOL_REFERENCE_$_" );
6611
6600
ProtocolName += PD->getObjCRuntimeNameAsString ();
@@ -6830,7 +6819,7 @@ CGObjCNonFragileABIMac::emitMethodList(Twine name, MethodListType kind,
6830
6819
6831
6820
llvm::GlobalVariable *GV = finishAndCreateGlobal (values, prefix + name, CGM);
6832
6821
CGM.addCompilerUsedGlobal (GV);
6833
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. MethodListnfABIPtrTy ) ;
6822
+ return GV ;
6834
6823
}
6835
6824
6836
6825
// / ObjCIvarOffsetVariable - Returns the ivar offset variable for
@@ -6972,7 +6961,7 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(
6972
6961
llvm::GlobalVariable *GV = finishAndCreateGlobal (
6973
6962
ivarList, Prefix + OID->getObjCRuntimeNameAsString (), CGM);
6974
6963
CGM.addCompilerUsedGlobal (GV);
6975
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. IvarListnfABIPtrTy ) ;
6964
+ return GV ;
6976
6965
}
6977
6966
6978
6967
llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocolRef (
@@ -7146,7 +7135,7 @@ CGObjCNonFragileABIMac::EmitProtocolList(Twine Name,
7146
7135
llvm::GlobalVariable *GV =
7147
7136
CGM.getModule ().getGlobalVariable (TmpName.str (), true );
7148
7137
if (GV)
7149
- return llvm::ConstantExpr::getBitCast (GV, ObjCTypes. ProtocolListnfABIPtrTy ) ;
7138
+ return GV ;
7150
7139
7151
7140
ConstantInitBuilder builder (CGM);
7152
7141
auto values = builder.beginStruct ();
@@ -7164,8 +7153,7 @@ CGObjCNonFragileABIMac::EmitProtocolList(Twine Name,
7164
7153
7165
7154
GV = finishAndCreateGlobal (values, Name, CGM);
7166
7155
CGM.addCompilerUsedGlobal (GV);
7167
- return llvm::ConstantExpr::getBitCast (GV,
7168
- ObjCTypes.ProtocolListnfABIPtrTy );
7156
+ return GV;
7169
7157
}
7170
7158
7171
7159
// / EmitObjCValueForIvar - Code Gen for nonfragile ivar reference.
@@ -7399,8 +7387,7 @@ CGObjCNonFragileABIMac::GetClassGlobal(StringRef Name,
7399
7387
NewGV->setDLLStorageClass (llvm::GlobalValue::DLLImportStorageClass);
7400
7388
7401
7389
if (GV) {
7402
- GV->replaceAllUsesWith (
7403
- llvm::ConstantExpr::getBitCast (NewGV, GV->getType ()));
7390
+ GV->replaceAllUsesWith (NewGV);
7404
7391
GV->eraseFromParent ();
7405
7392
}
7406
7393
GV = NewGV;
@@ -7611,14 +7598,11 @@ Address CGObjCNonFragileABIMac::EmitSelectorAddr(Selector Sel) {
7611
7598
llvm::GlobalVariable *&Entry = SelectorReferences[Sel];
7612
7599
CharUnits Align = CGM.getPointerAlign ();
7613
7600
if (!Entry) {
7614
- llvm::Constant *Casted =
7615
- llvm::ConstantExpr::getBitCast (GetMethodVarName (Sel),
7616
- ObjCTypes.SelectorPtrTy );
7617
7601
std::string SectionName =
7618
7602
GetSectionName (" __objc_selrefs" , " literal_pointers,no_dead_strip" );
7619
7603
Entry = new llvm::GlobalVariable (
7620
7604
CGM.getModule (), ObjCTypes.SelectorPtrTy , false ,
7621
- getLinkageTypeForObjCMetadata (CGM, SectionName), Casted ,
7605
+ getLinkageTypeForObjCMetadata (CGM, SectionName), GetMethodVarName (Sel) ,
7622
7606
" OBJC_SELECTOR_REFERENCES_" );
7623
7607
Entry->setExternallyInitialized (true );
7624
7608
Entry->setSection (SectionName);
0 commit comments