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()));
|
||||
CGM.getObjCRuntime().GenerateMessageSendSuper(*this,
|
||||
ReturnValueSlot(),
|
||||
Exp->getType(),
|
||||
getContext().VoidTy,
|
||||
S,
|
||||
OMD->getClassInterface(),
|
||||
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