summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-01-02 05:44:33 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-01-02 05:44:33 +0000
commit25f4cd093b5e7f2dc39d21891c211ed3e65c17af (patch)
tree3d08a2a0a6038add495ab8abea6872a0f9342328 /llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
parent51397401ba0642f4c88195f95e749395c75f0527 (diff)
downloadbcm5719-llvm-25f4cd093b5e7f2dc39d21891c211ed3e65c17af.tar.gz
bcm5719-llvm-25f4cd093b5e7f2dc39d21891c211ed3e65c17af.zip
For PR1070:
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. llvm-svn: 32810
Diffstat (limited to 'llvm/tools/llvm-upgrade/UpgradeParser.y.cvs')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud