Details
- Reviewers
erichkeane aaron.ballman
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/test/CodeGen/attr-target-mv.c | ||
---|---|---|
95–111 | I don't think so, we perhaps messed that up. |
Closing per commit 3531a4fa3b7038d43ac20f56871da88aa25bf53d (I failed to add "Differential Revision" to the commit message).
clang/test/CodeGen/attr-target-mv.c | ||
---|---|---|
95–111 | Actually, I misread the code previously. The non-resolver cases do correspond to inline function definitions, so it is on the Linux side that these are emitted as non-COMDAT symbols. Perhaps it has something to do with ELF vs COFF/PE; the linkage and preemption specifiers differ as well (linkonce vs linkonce_odr dso_local as shown below). At any rate, it isn't clear to me that there is anything that should be changed here. Linux: define linkonce void @foo_multi(i32 noundef %i, double noundef %d) #12 { ... define linkonce void @foo_multi.avx_sse4.2(i32 noundef %i, double noundef %d) #13 { Windows: $foo_multi = comdat any ... $foo_multi.avx_sse4.2 = comdat any ... define linkonce_odr dso_local void @foo_multi(i32 noundef %i, double noundef %d) #12 comdat { ... define linkonce_odr dso_local void @foo_multi.avx_sse4.2(i32 noundef %i, double noundef %d) #13 comdat { |
The non-inline non-resolver cases here are surprising to me; they aren't COMDAT on Linux. Is this intentional?