Skip to content

[clang] Handle LP64 long-element NEON vectors in the Itanium mangler - #318

Open
Cfretz244 wants to merge 1 commit into
bloomberg:p2996from
Cfretz244:reflect-neon-long-element-mangling
Open

[clang] Handle LP64 long-element NEON vectors in the Itanium mangler#318
Cfretz244 wants to merge 1 commit into
bloomberg:p2996from
Cfretz244:reflect-neon-long-element-mangling

Conversation

@Cfretz244

Copy link
Copy Markdown

Fixes #314.

LP64 targets (Darwin AArch64) predeclare the 64-bit NEON element type as plain long; mangleNeonVectorType's switches only handled LongLong/ULongLong and hit llvm_unreachable("unexpected Neon vector element type") — reachable whenever an instantiation over the predeclared global typedefs (__Int64x1_t et al.) is mangled, which reflection's enumeration of translation-unit members makes easy. Add Long/ULong arms (int64_t/uint64_t, and poly64_t in the polynomial switch).

Validation (Apple Silicon, Release+assertions, base 837da39): the repro ICEs at pristine base and compiles clean with this change (verified both directions by reverting just this file); clang/test/Reflection at parity.

LP64 targets (Darwin AArch64) predeclare the 64-bit NEON element type as
plain long; mangleNeonVectorType's switches only handled
LongLong/ULongLong and hit llvm_unreachable("unexpected Neon vector
element type") -- reachable whenever an instantiation over the
predeclared global typedefs (__Int64x1_t et al.) is mangled, which
reflection's eager enumeration of translation-unit members makes easy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant