forked from OSchip/llvm-project
Return type of a setter call caused by
use of property-dot syntax using 'super' as receiver is 'void'. This fixes a bug in generating correct API for setter call. Fixes radar 8203426. llvm-svn: 109297
This commit is contained in:
parent
536f091f95
commit
72cdffa401
|
@ -572,7 +572,7 @@ void CodeGenFunction::EmitObjCSuperPropertySet(const Expr *Exp,
|
||||||
Args.push_back(std::make_pair(Src, Exp->getType()));
|
Args.push_back(std::make_pair(Src, Exp->getType()));
|
||||||
CGM.getObjCRuntime().GenerateMessageSendSuper(*this,
|
CGM.getObjCRuntime().GenerateMessageSendSuper(*this,
|
||||||
ReturnValueSlot(),
|
ReturnValueSlot(),
|
||||||
Exp->getType(),
|
getContext().VoidTy,
|
||||||
S,
|
S,
|
||||||
OMD->getClassInterface(),
|
OMD->getClassInterface(),
|
||||||
isCategoryImpl,
|
isCategoryImpl,
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -emit-llvm %s -o - | FileCheck %s
|
||||||
|
// rdar: // 8203426
|
||||||
|
|
||||||
|
|
||||||
|
typedef double CGFloat;
|
||||||
|
struct CGPoint {
|
||||||
|
CGFloat x;
|
||||||
|
CGFloat y;
|
||||||
|
};
|
||||||
|
typedef struct CGPoint CGPoint;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct CGSize {
|
||||||
|
CGFloat width;
|
||||||
|
CGFloat height;
|
||||||
|
};
|
||||||
|
typedef struct CGSize CGSize;
|
||||||
|
|
||||||
|
|
||||||
|
struct CGRect {
|
||||||
|
CGPoint origin;
|
||||||
|
CGSize size;
|
||||||
|
};
|
||||||
|
typedef struct CGRect CGRect;
|
||||||
|
|
||||||
|
@interface UIView {
|
||||||
|
}
|
||||||
|
@property CGRect frame;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface crashclass : UIView {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation crashclass
|
||||||
|
- (void)setFrame:(CGRect)frame
|
||||||
|
{
|
||||||
|
super.frame = frame;
|
||||||
|
[super setFrame:frame];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
// CHECK-NOT: declare void @objc_msgSendSuper2_stret
|
||||||
|
// CHECK: declare i8* @objc_msgSendSuper2
|
Loading…
Reference in New Issue