diff options
| -rw-r--r-- | clang/test/Analysis/inlining/DynDispatchBifurcate.m | 2 | ||||
| -rw-r--r-- | clang/test/Analysis/inlining/InlineObjCClassMethod.m | 30 | 
2 files changed, 31 insertions, 1 deletions
diff --git a/clang/test/Analysis/inlining/DynDispatchBifurcate.m b/clang/test/Analysis/inlining/DynDispatchBifurcate.m index e78b90bb8c1..58145f11d70 100644 --- a/clang/test/Analysis/inlining/DynDispatchBifurcate.m +++ b/clang/test/Analysis/inlining/DynDispatchBifurcate.m @@ -170,7 +170,7 @@ int testExtension(PublicClass *p) {    int x = 0;    [p setValue2:0];    if ([p value2] != 0) -    return 5/x; // expected-warning {{Division by zero}} // TODO: no warning, we should always inline the property. +    return 5/x; // expected-warning {{Division by zero}}    return 5/[p value2]; // expected-warning {{Division by zero}}  } diff --git a/clang/test/Analysis/inlining/InlineObjCClassMethod.m b/clang/test/Analysis/inlining/InlineObjCClassMethod.m index 7e8b51fe0be..814d437a52d 100644 --- a/clang/test/Analysis/inlining/InlineObjCClassMethod.m +++ b/clang/test/Analysis/inlining/InlineObjCClassMethod.m @@ -179,3 +179,33 @@ int foo2() {    int y = [MyParentSelf testSelf];    return 5/y; // Should warn here.  } + +// TODO: We do not inline 'getNum' in the following case, where the value of  +// 'self' in call '[self getNum]' is available and evaualtes to  +// 'SelfUsedInParentChild' if it's called from fooA. +// Self region should get created before we call foo and yje call to super  +// should keep it live.  +@interface SelfUsedInParent : NSObject ++ (int)getNum; ++ (int)foo; +@end +@implementation SelfUsedInParent ++ (int)getNum {return 5;} ++ (int)foo { +  return [self getNum]; +} +@end +@interface SelfUsedInParentChild : SelfUsedInParent ++ (int)getNum; ++ (int)fooA; +@end +@implementation SelfUsedInParentChild ++ (int)getNum {return 0;} ++ (int)fooA { +  return [super foo]; +} +@end +int checkSelfUsedInparentClassMethod() { +    return 5/[SelfUsedInParentChild fooA]; +} +  | 

