// RUN: %clang_cc1 -x objective-c -emit-llvm -triple x86_64-apple-macosx10.10.0 -Wno-objc-root-class -fsanitize=array-bounds %s -o - | FileCheck %s @interface FlexibleArray1 { @public char chars[0]; } @end @implementation FlexibleArray1 @end // CHECK-LABEL: test_FlexibleArray1 char test_FlexibleArray1(FlexibleArray1 *FA1) { // CHECK-NOT: !nosanitize return FA1->chars[1]; // CHECK: } } @interface FlexibleArray2 { @public char chars[0]; } @end @implementation FlexibleArray2 { @public char chars2[0]; } @end // CHECK-LABEL: test_FlexibleArray2_1 char test_FlexibleArray2_1(FlexibleArray2 *FA2) { // CHECK: !nosanitize return FA2->chars[1]; // CHECK: } } // CHECK-LABEL: test_FlexibleArray2_2 char test_FlexibleArray2_2(FlexibleArray2 *FA2) { // CHECK-NOT: !nosanitize return FA2->chars2[1]; // CHECK: } } @interface FlexibleArray3 { @public char chars[0]; } @end @implementation FlexibleArray3 { @public int i; } @end // CHECK-LABEL: test_FlexibleArray3 char test_FlexibleArray3(FlexibleArray3 *FA3) { // CHECK: !nosanitize return FA3->chars[1]; // CHECK: } }