Quuxplusone added inline comments.

================
Comment at: clang/test/CodeGenCXX/attr-loader-uninitialized.cpp:23
+// CHECK: @nominally_value_init = global i32 undef
+int nominally_value_init  [[clang::loader_uninitialized]] = 4;
+
----------------
This test case is identical to line 36 of 
clang/test/Sema/attr-loader-uninitialized.cpp, where you say you don't want it 
to compile at all.

I think you need a clearer idea of how this interacts with initializers. Is it 
merely supposed to eliminate the //zero-initialization// that happens before 
the user-specified construction/initialization, or is it supposed to compete 
with the user-specified construction/initialization?

That is, for

    nontrivial unt [[clang::loader_uninitialized]];

is it merely supposed to call `unt::unt()` on a chunk of undef memory (instead 
of the usual chunk of zeroed memory), or is it supposed to skip the constructor 
entirely? And for

    int x [[clang::loader_uninitialized]] = foo();

is it merely supposed to call `foo()` and assign the result to a chunk of undef 
memory (instead of the usual chunk of zeroed memory), or is it supposed to skip 
the initialization entirely?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74361/new/

https://reviews.llvm.org/D74361



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to