|  | // RUN: %clang_cc1 -x c -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  |  | 
|  | // RUN: %clang_cc1 -x c -std=c89 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c -std=gnu89 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c -std=iso9899:1990 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  |  | 
|  | // RUN: %clang_cc1 -x c -std=c17 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c -std=gnu17 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c -std=iso9899:2017 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c -std=c2x -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  |  | 
|  | // RUN: %clang_cc1 -x c++ -std=c++98 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c++ -std=gnu++98 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c++ -std=c++17 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x c++ -std=gnu++17 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  |  | 
|  | // RUN: %clang_cc1 -x objective-c++ -std=c++98 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x objective-c++ -std=gnu++98 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x objective-c++ -std=c++17 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  | // RUN: %clang_cc1 -x objective-c++ -std=gnu++17 -Wunsafe-buffer-usage \ | 
|  | // RUN:            -fsafe-buffer-usage-suggestions \ | 
|  | // RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s | 
|  |  | 
|  | // CHECK-NOT: fix-it: | 
|  |  | 
|  | typedef int * Int_ptr_t; | 
|  | typedef int Int_t; | 
|  |  | 
|  | void local_array_subscript_simple() { | 
|  | int tmp; | 
|  | int *p; | 
|  | const int *q; | 
|  | tmp = p[5]; | 
|  | tmp = q[5]; | 
|  |  | 
|  | Int_ptr_t x; | 
|  | Int_ptr_t y; | 
|  | Int_t * z; | 
|  | Int_t * w; | 
|  |  | 
|  | tmp = x[5]; | 
|  | tmp = y[5]; | 
|  | tmp = z[5]; | 
|  | tmp = w[5]; | 
|  | } | 
|  |  | 
|  | void local_ptr_to_array() { | 
|  | int tmp; | 
|  | int n = 10; | 
|  | int a[10]; | 
|  | int b[n]; | 
|  | int *p = a; | 
|  | int *q = b; | 
|  | tmp = p[5]; | 
|  | tmp = q[5]; | 
|  | } | 
|  |  | 
|  | void local_ptr_addrof_init() { | 
|  | int var; | 
|  | int * q = &var; | 
|  | var = q[5]; | 
|  | } | 
|  |  | 
|  | void decl_without_init() { | 
|  | int tmp; | 
|  | int * p; | 
|  | Int_ptr_t q; | 
|  | tmp = p[5]; | 
|  | tmp = q[5]; | 
|  | } | 
|  |  | 
|  | void explict_cast() { | 
|  | int tmp; | 
|  | int * p; | 
|  | tmp = p[5]; | 
|  |  | 
|  | int a; | 
|  | char * q = (char *)&a; | 
|  | tmp = (int) q[5]; | 
|  |  | 
|  | void * r = &a; | 
|  | char * s = (char *) r; | 
|  | tmp = (int) s[5]; | 
|  | } |