mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
dc614179c3
It is not safe in general to replace an alias in a GEP with its aliasee if the alias can be replaced with another definition (i.e. via strong/weak resolution (linkonce_odr) or via symbol interposition (default visibility in ELF)) while the aliasee cannot. An example of how this can go wrong is in the included test case. I was concerned that this might be a load-bearing misoptimization (it's possible for us to use aliases to share vtables between base and derived classes, and on Windows, vtable symbols will always be aliases in RTTI mode, so this change could theoretically inhibit trivial devirtualization in some cases), so I built Chromium for Linux and Windows with and without this change. The file sizes of the resulting binaries were identical, so it doesn't look like this is going to be a problem. Differential Revision: https://reviews.llvm.org/D65118 llvm-svn: 366754 |
||
---|---|---|
.. | ||
bitcount.ll | ||
cast-vector.ll | ||
fneg.ll | ||
funnel-shift.ll | ||
gep-alias.ll | ||
gep-constanfolding-error.ll | ||
gep-zeroinit-vector.ll | ||
gep.ll | ||
min-max.ll | ||
saturating-add-sub.ll | ||
smul-fix-sat.ll | ||
smul-fix.ll | ||
timeout.ll | ||
vector-undef-elts.ll | ||
vectorgep-crash.ll |