Go to file
Hal Finkel 51e6fa2201 Revert "Revert '[DAGCombiner] Split up an indexed load if only the base pointer value is live'"
I reverted r208640 in r209747 because r208640 broke self-hosting on PPC64. The
underlying cause of the failure is that pre-inc loads with increments
represented by ISD::TargetConstants were being transformed into ISD:::ADDs with
ISD::TargetConstant operands. PPC doesn't have a pattern for those, and so they
were selected as invalid r+r adds.

This recommits r208640, rebased and with an exclusion for ISD::TargetConstant
increments. This behavior seems correct, although in the future we might want
to ask the target to split out the indexing that uses ISD::TargetConstants.

Unfortunately, I don't yet have small test case where the relevant invalid
'add' instruction is not itself dead (and thus eliminated by
DeadMachineInstructionElim -- sometimes bugpoint is too good at removing things)

Original commit message (by Adam Nemet):

Right now the load may not get DCE'd because of the side-effect of updating
the base pointer.

This can happen if we lower a read-modify-write of an illegal larger type
(e.g. i48) such that the modification only affects one of the subparts (the
lower i32 part but not the higher i16 part).  See the testcase.

In order to spot the dead load we need to revisit it when SimplifyDemandedBits
decided that the value of the load is masked off.  This is the
CommitTargetLoweringOpt piece.

I checked compile time with ARM64 by sending SPEC bitcode files through llc.
No measurable change.

Fixes <rdar://problem/16031651>

llvm-svn: 216898
2014-09-02 06:24:04 +00:00
clang Test cleanup: move CHECK close to code. 2014-09-01 22:29:32 +00:00
clang-tools-extra [clang-tidy] Don't suggest naming the dummy argument of a post-inc operator overload. 2014-09-01 09:11:48 +00:00
compiler-rt [libsanitizer] Fix the Android build. 2014-09-01 15:38:16 +00:00
debuginfo-tests relax testcase for LLDB output format compatibility. 2014-03-19 23:06:18 +00:00
libclc Fix build against LLVM SVN >= r216488 2014-08-28 06:19:37 +00:00
libcxx Mark test types for <atomic> nothrow default constructible. Patch from Steve MacKenzie. 2014-08-27 17:00:11 +00:00
libcxxabi Add missing include to a test case. 2014-08-29 16:09:32 +00:00
lld [PECOFF] Fix AMD64_REL_[1-5] and AMD64_SECTION relocations 2014-08-29 20:33:27 +00:00
lldb Add an interface on ArchSpec to provide lldb client code 2014-09-01 09:06:03 +00:00
llvm Revert "Revert '[DAGCombiner] Split up an indexed load if only the base pointer value is live'" 2014-09-02 06:24:04 +00:00
openmp Commit PowerPC64 support from Carlo Bertolli at IBM. 2014-08-07 10:12:54 +00:00
polly Fix formatting 2014-08-31 16:21:20 +00:00