A struct that declares an inner struct, but no fields, won't have a
field count. So getting the offset of the inner struct fails. This
happens in both C and C++:
struct foo {
struct bar {
int Quantizermatrix[];
};
};
Here 'struct foo' has no fields.
Closes: https://github.com/llvm/llvm-project/issues/88931
22 lines
724 B
C++
22 lines
724 B
C++
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
|
|
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -O2 -Wall -emit-llvm -o - %s | FileCheck %s
|
|
|
|
struct foo {
|
|
struct bar {
|
|
int array[];
|
|
bar();
|
|
};
|
|
};
|
|
|
|
void init(void * __attribute__((pass_dynamic_object_size(0))));
|
|
|
|
// CHECK-LABEL: define dso_local void @_ZN3foo3barC1Ev(
|
|
// CHECK-SAME: ptr noundef nonnull align 4 dereferenceable(1) [[THIS:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 {
|
|
// CHECK-NEXT: entry:
|
|
// CHECK-NEXT: tail call void @_Z4initPvU25pass_dynamic_object_size0(ptr noundef nonnull [[THIS]], i64 noundef -1) #[[ATTR2:[0-9]+]]
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
foo::bar::bar() {
|
|
init(array);
|
|
}
|