Restructure ArgumentPromotion a bit. Instead of just having a single boolean
authorMatthijs Kooijman <matthijs@stdin.nl>
Tue, 29 Jul 2008 10:00:13 +0000 (10:00 +0000)
committerMatthijs Kooijman <matthijs@stdin.nl>
Tue, 29 Jul 2008 10:00:13 +0000 (10:00 +0000)
commit477f5a2f11a0383b4ecfcb0db2913027ed38ee39
treee2f41b49e819e169705a82c135dd586b291c4ecd
parentbcbd9c43a17652c62875ffb9a008f549d0ec5714
Restructure ArgumentPromotion a bit. Instead of just having a single boolean
that says "unconditional loads from this argument are safe", we now keep track
of the safety per set of indices from which loads happen. This prevents
ArgPromotion from promoting loads that aren't really valid. As an added effect,
this will now disregard the the type of the indices passed to a GEP, so
"load GEP %A, i32 1" and "load GEP %A, i64 1" will result in a single argument,
not two.

This fixes PR2598, for which a testcase has been added as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54159 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/IPO/ArgumentPromotion.cpp
test/Transforms/ArgumentPromotion/2008-07-02-array-indexing.ll [new file with mode: 0644]