Kill the terrible LLVM Mangler
Since its introduction the LLVM backend has had a mangler which transforms assembler produced by LLVM. In the past this mangler was responsible for shuffling around code to make tables-next-to-code work, but the need for this has past with the resolution of #4213 (closed).
At this point the only reason it exists is to mangle AVX instructions to
- rewriting all symbols of type
@function
to@object
to prevent symbol
references from going through the PLT, which would be bad due to
tables-next-to-code.
- On x86_64, rewrite AVX instructions that require
alignment to their unaligned counterparts, since the stack is only 16-byte
aligned but these instructions require 32-byte alignment.
While it's unclear that we will ever be able to discharge (1), it would be nice to investigate whether we can at least do something about (2) (there may even be performance to be gained!).
Trac metadata
Trac field | Value |
---|---|
Version | 7.11 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |