llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner 2392ae7d73 Implement rdar://7860110 (also in target/readme.txt) narrowing
a load/or/and/store sequence into a narrower store when it is
safe.  Daniel tells me that clang will start producing this sort
of thing with bitfields, and this does  trigger a few dozen times
on 176.gcc produced by llvm-gcc even now.

This compiles code like CodeGen/X86/2009-05-28-DAGCombineCrash.ll 
into:

        movl    %eax, 36(%rdi)

instead of:

        movl    $4294967295, %eax       ## imm = 0xFFFFFFFF
        andq    32(%rdi), %rax
        shlq    $32, %rcx
        addq    %rax, %rcx
        movq    %rcx, 32(%rdi)

and each of the testcases into a single store.  Each of them used
to compile into craziness like this:

_test4:
	movl	$65535, %eax            ## imm = 0xFFFF
	andl	(%rdi), %eax
	shll	$16, %esi
	addl	%eax, %esi
	movl	%esi, (%rdi)
	ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101343 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-15 04:48:01 +00:00
..
CallingConvLower.cpp Change errs() to dbgs(). 2010-01-05 01:24:50 +00:00
CMakeLists.txt Rename SelectionDAGLowering to SelectionDAGBuilder, and rename 2009-11-23 18:04:58 +00:00
DAGCombiner.cpp Implement rdar://7860110 (also in target/readme.txt) narrowing 2010-04-15 04:48:01 +00:00
FastISel.cpp Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00
FunctionLoweringInfo.cpp Add more const qualifiers for LLVM IR pointers in CodeGen. 2010-04-15 04:33:49 +00:00
FunctionLoweringInfo.h Add more const qualifiers for LLVM IR pointers in CodeGen. 2010-04-15 04:33:49 +00:00
InstrEmitter.cpp Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00
InstrEmitter.h reapply 99444/99445, which I speculatively reverted in 2010-03-25 04:41:16 +00:00
LegalizeDAG.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
LegalizeFloatTypes.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
LegalizeIntegerTypes.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
LegalizeTypes.cpp 80 col violations. 2010-04-15 01:01:55 +00:00
LegalizeTypes.h Turn calls to copysignl into an FCOPYSIGN node. Handle FCOPYSIGN nodes 2010-03-14 21:08:40 +00:00
LegalizeTypesGeneric.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
LegalizeVectorOps.cpp Revert an earlier change to SIGN_EXTEND_INREG for vectors. The VTSDNode 2010-01-09 02:13:55 +00:00
LegalizeVectorTypes.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
ScheduleDAGFast.cpp Trim unneeded includes. 2010-01-21 21:44:43 +00:00
ScheduleDAGList.cpp Change errs() to dbgs(). 2010-01-05 01:24:43 +00:00
ScheduleDAGRRList.cpp Three changes: 2010-04-07 05:20:54 +00:00
ScheduleDAGSDNodes.cpp Scheduler assumes SDDbgValue nodes are in source order. That's true currently. But add an assertion to verify it. 2010-03-25 07:16:57 +00:00
ScheduleDAGSDNodes.h Three changes: 2010-04-07 05:20:54 +00:00
SDNodeDbgValue.h Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00
SDNodeOrdering.h Allow 0 as an order number. Don't assign an order to formal arguments. 2009-12-22 21:35:02 +00:00
SelectionDAG.cpp Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00
SelectionDAGBuilder.cpp Add more const qualifiers for LLVM IR pointers in CodeGen. 2010-04-15 04:33:49 +00:00
SelectionDAGBuilder.h Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00
SelectionDAGISel.cpp Add more const qualifiers for LLVM IR pointers in CodeGen. 2010-04-15 04:33:49 +00:00
SelectionDAGPrinter.cpp Change errs() to dbgs(). 2010-01-05 01:24:45 +00:00
TargetLowering.cpp Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00