|  | // RUN: rm -rf %t | 
|  | // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -verify %s | 
|  | // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -ast-dump-all %s | FileCheck %s | 
|  | // expected-no-diagnostics | 
|  |  | 
|  | #pragma clang module build bounds_safety | 
|  | module bounds_safety {} | 
|  | #pragma clang module contents | 
|  | #pragma clang module begin bounds_safety | 
|  | struct Test { | 
|  | int count; | 
|  | int fam[] __attribute__((counted_by(count))); | 
|  | }; | 
|  | #pragma clang module end | 
|  | #pragma clang module endbuild | 
|  |  | 
|  | #pragma clang module import bounds_safety | 
|  |  | 
|  | struct Test *p; | 
|  |  | 
|  | // CHECK: |-RecordDecl {{.*}}bounds_safety.map:4:1, line:7:1> line:4:8 imported in bounds_safety <undeserialized declarations> struct Test definition | 
|  | // CHECK: | |-FieldDecl {{.*}} imported in bounds_safety referenced count 'int' | 
|  | // CHECK: | `-FieldDecl {{.*}} imported in bounds_safety fam 'int[] __counted_by(count)':'int[]' | 
|  |  | 
|  | // CHECK: |-ImportDecl {{.*}}bounds-safety-attributed-type.c:17:22> col:22 implicit bounds_safety | 
|  | // CHECK: |-RecordDecl {{.*}} struct Test | 
|  | // CHECK: `-VarDecl {{.*}} p 'struct Test *' |