- Mar 12, 2010
-
-
Benjamin Kramer authored
string temporary. This should fix PR6590. llvm-svn: 98349
-
- Mar 11, 2010
-
-
Dan Gohman authored
llvm-svn: 98289
-
Bill Wendling authored
llvm-svn: 98281
-
Evan Cheng authored
Bad bad bug. x86 force indirect tail call address into eax when it's meant to force it into a call preserved register instead. Change it to ecx for now. llvm-svn: 98270
-
Chris Lattner authored
convention. Patch by David Terei! llvm-svn: 98212
-
- Mar 10, 2010
-
-
Dale Johannesen authored
No functional effect yet. This is still evolving and should not be viewed as final. llvm-svn: 98195
-
Chris Lattner authored
llvm-svn: 98124
-
- Mar 06, 2010
-
-
Anton Korobeynikov authored
We cannot use a normal call here since it has extra unmodelled side effects (it changes stack pointer). This should fix PR5292. llvm-svn: 97884
-
- Mar 05, 2010
-
-
Evan Cheng authored
llvm-svn: 97818
-
Evan Cheng authored
Fix an oops in x86 sibcall optimization. If the ByVal callee argument is itself passed as a pointer, then it's obviously not safe to do a tail call. llvm-svn: 97797
-
Evan Cheng authored
llvm-svn: 97782
-
- Mar 04, 2010
-
-
Dan Gohman authored
clobber registers in a different order. llvm-svn: 97741
-
- Mar 02, 2010
-
-
Bill Wendling authored
llvm-svn: 97536
-
- Mar 01, 2010
-
-
Evan Cheng authored
Remove the optimize for code size limitation on r67917. Optimize 64-bit imul by constants into leas + shl regardless if optimizing for code size. The size saving from using imulq isn't worth it. Also, the lea and shl instructions may expose further optimization. llvm-svn: 97507
-
- Feb 27, 2010
-
-
Evan Cheng authored
llvm-svn: 97310
-
- Feb 25, 2010
-
-
Dan Gohman authored
just discarding one of the registers. llvm-svn: 97100
-
- Feb 24, 2010
-
-
Daniel Dunbar authored
the hopes of fixing PPC bootstrap. llvm-svn: 97040
-
Dan Gohman authored
necessary to swap the operands to handle NaN and negative zero properly. Also, reintroduce logic for checking for NaN conditions when forming SSE min and max instructions, fixed to take into consideration NaNs and negative zeros. This allows forming min and max instructions in more cases. llvm-svn: 97025
-
Evan Cheng authored
llvm-svn: 97011
-
- Feb 23, 2010
-
-
Evan Cheng authored
llvm-svn: 96990
-
Chris Lattner authored
don't alis it in the MMX .td file with a different width, split into two X86ISD opcodes. This fixes an x86 testcase. llvm-svn: 96859
-
- Feb 22, 2010
-
-
Arnold Schwaighofer authored
during a tail call. A parameter might overwrite this stack slot during the tail call. The sequence during a tail call is: 1.) load return address to temp reg 2.) move parameters (might involve storing to return address stack slot) 3.) store return address to new location from temp reg If the stack location is marked immutable CodeGen can colocate load (1) with the store (3). This fixes bug 6225. llvm-svn: 96783
-
Dan Gohman authored
SSE min and max instructions. The real thing this code needs to be concerned about is negative zero. Update the sse-minmax.ll test accordingly, and add tests for -enable-unsafe-fp-math mode as well. llvm-svn: 96775
-
Chris Lattner authored
create an X86ISD::Cmp node with result type i64 on the CodeGen/X86/shift-i256.ll testcase and the new isel was assert on it downstream. llvm-svn: 96768
-
- Feb 21, 2010
-
-
Anton Korobeynikov authored
It turned out that we failed to emit proper symbol stubs on non-x86/darwin for ages (we emitted a reference to a stub, but no stub was emitted). The code inside x86-32/macho target objfile lowering should actually be the generic one - move it there. This (I really, really hope) should fix EH issues on ppc/darwin and arm/darwin. llvm-svn: 96755
-
- Feb 19, 2010
-
-
Duncan Sands authored
dragonegg self-host build. I reverted 96640 in order to revert 96556 (96640 goes on top of 96556), but it also looks like with both of them applied the breakage happens even earlier. The symptom of the 96556 miscompile is the following crash: llvm[3]: Compiling AlphaISelLowering.cpp for Release build cc1plus: /home/duncan/tmp/tmp/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4982: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed. Stack dump: 0. Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN4llvm19AlphaTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE' g++: Internal error: Aborted (program cc1plus) This occurs when building LLVM using LLVM built by LLVM (via dragonegg). Probably LLVM has miscompiled itself, though it may have miscompiled GCC and/or dragonegg itself: at this point of the self-host build, all of GCC, LLVM and dragonegg were built using LLVM. Unfortunately this kind of thing is extremely hard to debug, and while I did rummage around a bit I didn't find any smoking guns, aka obviously miscompiled code. Found by bisection. r96556 | evancheng | 2010-02-18 03:13:50 +0100 (Thu, 18 Feb 2010) | 5 lines Some dag combiner goodness: Transform br (xor (x, y)) -> br (x != y) Transform br (xor (xor (x,y), 1)) -> br (x == y) Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm" r96640 | evancheng | 2010-02-19 01:34:39 +0100 (Fri, 19 Feb 2010) | 16 lines Transform (xor (setcc), (setcc)) == / != 1 to (xor (setcc), (setcc)) != / == 1. e.g. On x86_64 %0 = icmp eq i32 %x, 0 %1 = icmp eq i32 %y, 0 %2 = xor i1 %1, %0 br i1 %2, label %bb, label %return => testl %edi, %edi sete %al testl %esi, %esi sete %cl cmpb %al, %cl je LBB1_2 llvm-svn: 96672
-
- Feb 18, 2010
-
-
Evan Cheng authored
Transform br (xor (x, y)) -> br (x != y) Transform br (xor (xor (x,y), 1)) -> br (x == y) Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm" llvm-svn: 96556
-
- Feb 16, 2010
-
-
Evan Cheng authored
If there exists a use of a build_vector that's the bitwise complement of the mask, then transform the node to (and (xor x, (build_vector -1,-1,-1,-1)), (build_vector ~c1,~c2,~c3,~c4)). Since this transformation is only useful when 1) the given build_vector will become a load from constpool, and 2) (and (xor x -1), y) matches to a single instruction, I decided this is appropriate as a x86 specific transformation. rdar://7323335 llvm-svn: 96389
-
- Feb 15, 2010
-
-
Anton Korobeynikov authored
Preliminary patch to improve dwarf EH generation - Hooks to return Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there llvm-svn: 96285
-
David Greene authored
Remove an assumption of default arguments. This is in anticipation of a change to SelectionDAG build APIs. llvm-svn: 96228
-
Duncan Sands authored
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! llvm-svn: 96223
-
- Feb 12, 2010
-
-
Anton Korobeynikov authored
This should fix alot of problems we saw so far, e.g. PRs 5851 & 2936 llvm-svn: 95980
-
- Feb 11, 2010
-
-
Chris Lattner authored
use a multipattern that generates both the 1-byte and 4-byte versions from the same defm llvm-svn: 95901
-
Mon P Wang authored
lowering and requires that certain types exist in ValueTypes.h. Modified widening to check if an op can trap and if so, the widening algorithm will apply only the op on the defined elements. It is safer to do this in widening because the optimizer can't guarantee removing unused ops in some cases. llvm-svn: 95823
-
- Feb 10, 2010
-
-
Dan Gohman authored
llvm-svn: 95781
-
- Feb 08, 2010
-
-
Chris Lattner authored
llvm-svn: 95593
-
Dan Gohman authored
its current purpose. llvm-svn: 95564
-
- Feb 06, 2010
-
-
Evan Cheng authored
Do not emit callseq instructions around sibcalls. This eliminated some unnecessary stack adjustments. llvm-svn: 95475
-
- Feb 05, 2010
-
-
Chris Lattner authored
llvm-svn: 95408
-
Chris Lattner authored
TSFlags directly instead of a TargetInstrDesc. llvm-svn: 95405
-