forked from OSchip/llvm-project
Casting of a property reference to 'void' did not
generate the necessary code. This patch fixes it. // rdar://8389655 llvm-svn: 113079
This commit is contained in:
parent
f20ca8028d
commit
60babfb8a1
|
@ -1038,8 +1038,13 @@ Value *ScalarExprEmitter::EmitCastExpr(CastExpr *CE) {
|
|||
return Builder.CreatePtrToInt(Src, ConvertType(DestTy));
|
||||
}
|
||||
case CK_ToVoid: {
|
||||
if (E->Classify(CGF.getContext()).isGLValue())
|
||||
CGF.EmitLValue(E);
|
||||
if (E->Classify(CGF.getContext()).isGLValue()) {
|
||||
LValue LV = CGF.EmitLValue(E);
|
||||
if (LV.isPropertyRef())
|
||||
CGF.EmitLoadOfPropertyRefLValue(LV, E->getType());
|
||||
else if (LV.isKVCRef())
|
||||
CGF.EmitLoadOfKVCRefLValue(LV, E->getType());
|
||||
}
|
||||
else
|
||||
CGF.EmitAnyExpr(E, 0, false, true);
|
||||
return 0;
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// rdar: // 8399655
|
||||
@interface TestClass
|
||||
@property (readonly) int myProperty;
|
||||
- (int)myProperty;
|
||||
- (double)myGetter;
|
||||
@end
|
||||
|
||||
void FUNC () {
|
||||
TestClass *obj;
|
||||
(void)obj.myProperty;
|
||||
(void)obj.myGetter;
|
||||
}
|
||||
|
||||
// CHECK: call i32 bitcast
|
||||
// CHECK: call double bitcast
|
Loading…
Reference in New Issue