mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 15:39:00 +00:00
2b8036e2c8
Revise the upgrade parser to keep track of types more faithfully and use this information to resolve name conflicts resulting from collapsed type planes. The type planes have collapsed because the integer types are now signless so that uint and int became i32. Where two planes existed for uint and int, only i32 exists. Any variable names depending on the type planes to pmake the identifier unique would cause a conflict. This patch resolves that conflict for many but not all cases. Situations involving the integer types and pointers to them are handled by this patch. However, there are corner cases that are not handled well, such as: %t1 = type { uint, int } %t2 = type { int, uint } void %myfunc(%t1* one, %t2* two) { %var = load %t1* one %var = load %t2* two } In the scenario above, %t1 and %t2 are really the same type: { i32, i32 } Consequently attempting to name %var twice will yield a redefinition error when assembled. While this patch is sufficien to allow the llvm/test suite to pass, More work needs to be to complete the handling of these corner cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32810 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
bugpoint | ||
gccas | ||
gccld | ||
llc | ||
lli | ||
llvm2cpp | ||
llvm-ar | ||
llvm-as | ||
llvm-bcanalyzer | ||
llvm-config | ||
llvm-db | ||
llvm-dis | ||
llvm-extract | ||
llvm-ld | ||
llvm-link | ||
llvm-nm | ||
llvm-prof | ||
llvm-ranlib | ||
llvm-stub | ||
llvm-upgrade | ||
llvmc | ||
lto | ||
opt | ||
Makefile |