Use GetUnderlyingObjects in misched
authorHal Finkel <hfinkel@anl.gov>
Mon, 10 Dec 2012 18:49:16 +0000 (18:49 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 10 Dec 2012 18:49:16 +0000 (18:49 +0000)
commit66859ae0f64f1ead5579d9fb798927cd204f989b
tree75b4b9907cb8853ea7504a432e92c7b9e2300f5c
parent43e17ad1d0bf1018d0f0e40e7472ff8e3f390637
Use GetUnderlyingObjects in misched

misched used GetUnderlyingObject in order to break false load/store
dependencies, and the -enable-aa-sched-mi feature similarly relied on
GetUnderlyingObject in order to ensure it is safe to use the aliasing analysis.
Unfortunately, GetUnderlyingObject does not recurse through phi nodes, and so
(especially due to LSR) all of these mechanisms failed for
induction-variable-dependent loads and stores inside loops.

This change replaces uses of GetUnderlyingObject with GetUnderlyingObjects
(which will recurse through phi and select instructions) in misched.

Andy reviewed, tested and simplified this patch; Thanks!

llvm-svn: 169744
llvm/lib/CodeGen/ScheduleDAGInstrs.cpp
llvm/test/CodeGen/PowerPC/s000-alias-misched.ll [new file with mode: 0644]