1*e98cbb95SNikita Popov // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 3 2*e98cbb95SNikita Popov // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s 3*e98cbb95SNikita Popov 4*e98cbb95SNikita Popov struct S; 5*e98cbb95SNikita Popov extern S a[10]; 6*e98cbb95SNikita Popov S(*b)[10] = &a; 7*e98cbb95SNikita Popov struct S { 8*e98cbb95SNikita Popov int x; 9*e98cbb95SNikita Popov }; 10*e98cbb95SNikita Popov 11*e98cbb95SNikita Popov // The address calculation should be based on the size of the struct S 12*e98cbb95SNikita Popov // declaration, not a dummy type like i8. 13*e98cbb95SNikita Popov 14*e98cbb95SNikita Popov // CHECK-LABEL: define dso_local noundef i32 @_Z1fv 15*e98cbb95SNikita Popov // CHECK-SAME: () #[[ATTR0:[0-9]+]] { 16*e98cbb95SNikita Popov // CHECK-NEXT: entry: 17*e98cbb95SNikita Popov // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr getelementptr inbounds ([10 x %struct.S], ptr @a, i64 0, i64 3), align 4 18*e98cbb95SNikita Popov // CHECK-NEXT: ret i32 [[TMP0]] 19*e98cbb95SNikita Popov // f()20*e98cbb95SNikita Popovint f() { return a[3].x; } 21