https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118673

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
the main issue can be shown by (still need includes for SmallVector/ArrayRef):
```
enum class Extension : unsigned {
  SPV_KHR_integer_dot_product = 17
};
[[gnu::noinline]]
llvm::SmallVector<llvm::ArrayRef<Extension>, 1>
getIntegerDotProductExtensions() {
  static const auto extension = Extension::SPV_KHR_integer_dot_product;
  return {extension};
}

int main()
{
  auto t = getIntegerDotProductExtensions();
  __builtin_printf("size = %d\n", t.size());
  __builtin_printf("capacity = %d\n", t.capacity());
  __builtin_printf("size = %d\n", t[0].size());
  if (t[0][0] != Extension::SPV_KHR_integer_dot_product)
    __builtin_abort();
}
```

I am still trying to just get to that but so far it looks like a temporary
leaves scope and that messes up things. But I could be wrong about a temporary
being not there.

Reply via email to