forked from OSchip/llvm-project
objective-c IRGen: fixes a crash when method type is being mangled
when an argument type size is 0. // rdar://11777609, PR13229 llvm-svn: 159472
This commit is contained in:
parent
7b12b87096
commit
271b8d43ce
|
@ -4190,8 +4190,8 @@ bool ASTContext::getObjCEncodingForFunctionDecl(const FunctionDecl *Decl,
|
|||
QualType PType = (*PI)->getType();
|
||||
CharUnits sz = getObjCEncodingTypeSize(PType);
|
||||
if (sz.isZero())
|
||||
return true;
|
||||
|
||||
continue;
|
||||
|
||||
assert (sz.isPositive() &&
|
||||
"getObjCEncodingForFunctionDecl - Incomplete param type");
|
||||
ParmOffset += sz;
|
||||
|
@ -4259,8 +4259,8 @@ bool ASTContext::getObjCEncodingForMethodDecl(const ObjCMethodDecl *Decl,
|
|||
QualType PType = (*PI)->getType();
|
||||
CharUnits sz = getObjCEncodingTypeSize(PType);
|
||||
if (sz.isZero())
|
||||
return true;
|
||||
|
||||
continue;
|
||||
|
||||
assert (sz.isPositive() &&
|
||||
"getObjCEncodingForMethodDecl - Incomplete param type");
|
||||
ParmOffset += sz;
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t %s
|
||||
// RUN: FileCheck < %t %s
|
||||
// rdar://11777609
|
||||
|
||||
typedef struct {} Z;
|
||||
|
||||
@interface A
|
||||
-(void)bar:(Z)a;
|
||||
-(void)foo:(Z)a : (char*)b : (Z)c : (double) d;
|
||||
@end
|
||||
|
||||
@implementation A
|
||||
-(void)bar:(Z)a {}
|
||||
-(void)foo:(Z)a: (char*)b : (Z)c : (double) d {}
|
||||
@end
|
||||
|
||||
// CHECK: internal global [14 x i8] c"v16@0:8{?=}16
|
||||
// CHECK: internal global [26 x i8] c"v32@0:8{?=}16*16{?=}24d24
|
||||
|
Loading…
Reference in New Issue