void added inline comments.

================
Comment at: clang/lib/Sema/SemaInit.cpp:2171
 
     if (Field == FieldEnd) {
       // We've run out of fields. We're done.
----------------
stuij wrote:
> @void Unfortunately this end of fields check will break the non-designated 
> initializer check below.
> 
> I GDB'ed through a failure of the below test, and if I'm understanding this 
> correctly, the `CheckDesignatedInitializer` invocation above will move 
> `Field` to the next available field in the struct. If there is none, we will 
> break out of the loop and never reach the code below (On an AArch64 Linux 
> host the field was placed last in the struct).
> 
> Instead I get a different error:
> 
>     error: 'error' diagnostics expected but not seen:
>       File 
> /Users/zeno/code/llvm/clean/clang/test/Sema/init-randomized-struct.c Line 46: 
> a randomized struct can only be initialized with a designated initializer
>     error: 'error' diagnostics seen but not expected:
>       File 
> /Users/zeno/code/llvm/clean/clang/test/Sema/init-randomized-struct.c Line 46: 
> excess elements in struct initializer
>     2 errors generated.
> 
> You can replicate this on other build setups by varying the value of 
> -frandomoze-layout-seed. On x86_64 Linux and on Aarch64 OSX this worked for 
> me (in seed value of lit test, change `f` to `d`):
>     -frandomize-layout-seed=1234567890abcded
> 
> Also, I know this was talked about before, and I know a fix is planned, but 
> just to add my two cents: yes, it would be great if the `std::shuffle` could 
> be changed to `llvm::shuffle`, also because we're expecting to produced the 
> same code across different platforms for safety (compliance) reasons.
Oh! Good catch. Yeah, it's getting a bit messed up when the field that's 
initialized by a designated initializer is moved to the bottom of the 
`RecordDecl`. It looks like I can move it above the `Field == FieldEnd` check 
and it works (and bonus, I think it's the correct fix).

Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123763

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

Reply via email to