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
..
2010-01-23 01:19:28 +00:00
2010-02-13 02:06:10 +00:00
2010-02-15 22:03:29 +00:00
2010-03-03 00:35:56 +00:00
2010-04-13 18:54:04 +00:00
2010-04-07 18:04:56 +00:00
2010-04-07 22:53:17 +00:00
2010-04-09 15:03:55 +00:00
2010-03-10 03:07:41 +00:00
2010-04-05 22:30:05 +00:00
2010-04-04 19:28:59 +00:00
2010-03-25 20:01:07 +00:00
2010-03-10 07:07:45 +00:00
2010-03-10 07:07:55 +00:00
2010-01-19 21:51:51 +00:00
2010-01-23 01:19:28 +00:00
2010-03-05 06:17:43 +00:00
2010-02-27 23:53:53 +00:00