Repository navigation
[AUTOMATED] Preserve member representations in byte-copy helpers - #1247
Conversation
|
[AUTOMATED] Fixed the test-layout CI failure in 2325d60 by declaring the explicit |
… differs An iteregion diamond whose arms are byte-copy helper LOADs rendered `dest = c ? *(unsigned int *)__builtin_memcpy(...) : ...`, so the statement-LOAD retype never applied and the ternary still converted the integer copy numerically into a float member. Decline the ternary when an arm's destination member and helper type disagree on float-ness, so each arm stays a statement LOAD that copies into the member's type. Share the scalar filter between the LOAD and STORE paths and move the inline comments into the function headers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BEr111CDLJsQMzY3YSyWXD
|
[AUTOMATED] Pushed dac9fb2 on top of this branch. With the default |
Noelo-Lab#1244 landed as a squash; this re-applies only Noelo-Lab#1247's own changes on top of main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BEr111CDLJsQMzY3YSyWXD
A byte-copy helper can turn an unaligned word copy into a numeric float conversion. A native input word of
1then comes back as1065353216(1.0fbits).Before:
items.real[0x10] = *(unsigned int *)__builtin_memcpy(&(unsigned int){0}, ...);Tests cover PE32 and ELF64, union and float-only declarations, strict Clang recompilation at
-O0/-O2, and native ELF return values plus all 128 backing bytes across 4,096 finite patterns per configuration.