- Sep 26, 2006
-
-
Chris Lattner authored
llvm-svn: 30606
-
Chris Lattner authored
int x __attribute__((used)); to: .data .comm _x,4 ; 'x' .no_dead_strip _x on both x86 and ppc darwin targets. llvm-svn: 30605
-
Chris Lattner authored
because they have an aggressive linker that does dead code stripping. llvm-svn: 30604
-
- Sep 25, 2006
-
-
Jim Laskey authored
llvm-svn: 30601
-
Jim Laskey authored
llvm-svn: 30600
-
Chris Lattner authored
llvm-svn: 30598
-
Jim Laskey authored
llvm-svn: 30597
-
- Sep 24, 2006
-
-
Andrew Lenharth authored
llvm-svn: 30594
-
Andrew Lenharth authored
llvm-svn: 30593
-
Andrew Lenharth authored
llvm-svn: 30591
-
Evan Cheng authored
llvm-svn: 30590
-
- Sep 23, 2006
-
-
Nick Lewycky authored
llvm-svn: 30588
-
Chris Lattner authored
or when splitting loops with a common header into multiple loops. In particular the old code would always insert the preheader before the old loop header. This is disasterous in cases where the loop hasn't been rotated. For example, it can produce code like: .. outside the loop... jmp LBB1_2 #bb13.outer LBB1_1: #bb1 movsd 8(%esp,%esi,8), %xmm1 mulsd (%edi), %xmm1 addsd %xmm0, %xmm1 addl $24, %edi incl %esi jmp LBB1_3 #bb13 LBB1_2: #bb13.outer leal (%edx,%eax,8), %edi pxor %xmm1, %xmm1 xorl %esi, %esi LBB1_3: #bb13 movapd %xmm1, %xmm0 cmpl $4, %esi jl LBB1_1 #bb1 Note that the loop body is actually LBB1_1 + LBB1_3, which means that the loop now contains an uncond branch WITHIN it to jump around the inserted loop header (LBB1_2). Doh. This patch changes the preheader insertion code to insert it in the right spot, producing this code: ... outside the loop, fall into the header ... LBB1_1: #bb13.outer leal (%edx,%eax,8), %esi pxor %xmm0, %xmm0 xorl %edi, %edi jmp LBB1_3 #bb13 LBB1_2: #bb1 movsd 8(%esp,%edi,8), %xmm0 mulsd (%esi), %xmm0 addsd %xmm1, %xmm0 addl $24, %esi incl %edi LBB1_3: #bb13 movapd %xmm0, %xmm1 cmpl $4, %edi jl LBB1_2 #bb1 Totally crazy, no branch in the loop! :) llvm-svn: 30587
-
Chris Lattner authored
reachable, making it general purpose enough for use by InsertPreheaderForLoop. Eliminate custom dominfo updating code in InsertPreheaderForLoop, using UpdateDomInfoForRevectoredPreds instead. llvm-svn: 30586
-
Chris Lattner authored
llvm-svn: 30584
-
- Sep 22, 2006
-
-
Evan Cheng authored
llvm-svn: 30583
-
Rafael Espindola authored
llvm-svn: 30581
-
Nate Begeman authored
llvm-svn: 30577
-
Devang Patel authored
llvm-svn: 30576
-
Devang Patel authored
call stack depth. llvm-svn: 30575
-
- Sep 21, 2006
-
-
Evan Cheng authored
llvm-svn: 30573
-
Jim Laskey authored
llvm-svn: 30570
-
Jim Laskey authored
llvm-svn: 30568
-
Rafael Espindola authored
llvm-svn: 30567
-
Rafael Espindola authored
llvm-svn: 30566
-
Chris Lattner authored
llvm-svn: 30561
-
Chris Lattner authored
llvm-svn: 30560
-
Chris Lattner authored
llvm-svn: 30559
-
Chris Lattner authored
int %test(ulong *%tmp) { %tmp = load ulong* %tmp ; <ulong> [#uses=1] %tmp.mask = shr ulong %tmp, ubyte 50 ; <ulong> [#uses=1] %tmp.mask = cast ulong %tmp.mask to ubyte %tmp2 = and ubyte %tmp.mask, 3 ; <ubyte> [#uses=1] %tmp2 = cast ubyte %tmp2 to int ; <int> [#uses=1] ret int %tmp2 } to: _test: movl 4(%esp), %eax movl 4(%eax), %eax shrl $18, %eax andl $3, %eax ret instead of: _test: movl 4(%esp), %eax movl 4(%eax), %eax shrl $18, %eax # TRUNCATE movb %al, %al andb $3, %al movzbl %al, %eax ret llvm-svn: 30558
-
Chris Lattner authored
the src/dst are not the same size. This catches things like "truncate 32-bit X to 8 bits, then zext to 16", which happens a bit on X86. llvm-svn: 30557
-
Chris Lattner authored
llvm-svn: 30556
-
Chris Lattner authored
llvm-svn: 30555
-
Nick Lewycky authored
llvm-svn: 30553
-
Nick Lewycky authored
llvm-svn: 30552
-
Nick Lewycky authored
with the right answer. llvm-svn: 30550
-
Anton Korobeynikov authored
llvm-svn: 30549
-
- Sep 20, 2006
-
-
Andrew Lenharth authored
llvm-svn: 30548
-
Chris Lattner authored
should create the right asmprinter subclass. llvm-svn: 30542
-
Chris Lattner authored
llvm-svn: 30541
-
Nick Lewycky authored
Fixes infinite loop in resolve(). llvm-svn: 30540
-