- Aug 24, 2012
-
-
Eric Christopher authored
we're using the darwin old gdb compat mode for emitting dwarf. llvm-svn: 162486
-
- Aug 23, 2012
-
-
Eric Christopher authored
llvm-svn: 162438
-
Eric Christopher authored
with older gdbs on darwin. rdar://10975874 llvm-svn: 162436
-
Eric Christopher authored
rdar://10393214 llvm-svn: 162434
-
Eric Christopher authored
llvm-svn: 162432
-
Andrew Trick authored
The logic for recomputing latency based on a ScheduleDAG edge was shady. This bypasses the problem by requiring the client to provide operand indices. This ensures consistent use of the machine model's API. llvm-svn: 162420
-
- Aug 22, 2012
-
-
David Blaikie authored
Based on CR feedback from r162301 and Craig Topper's refactoring in r162347 here are a few other places that could use the same API (& in one instance drop a Function.h dependency). llvm-svn: 162367
-
Benjamin Kramer authored
llvm-svn: 162362
-
Stepan Dyatkovskiy authored
Rejected 169195. As Duncan commented, bitcasting to proper type is wrong approach. We need to insert some valid TRANCATE node here. llvm-svn: 162354
-
Craig Topper authored
Add a getName function to MachineFunction. Use it in places that previously did getFunction()->getName(). Remove includes of Function.h that are no longer needed. llvm-svn: 162347
-
Richard Smith authored
SelectionDAG's 'init' has not been called when the SelectionDAGBuilder is constructed (in SelectionDAGISel's constructor), so this was previously always initialized with 0. llvm-svn: 162333
-
- Aug 21, 2012
-
-
David Blaikie authored
Even looking at the revision history I couldn't quite piece together why this cast was ever written in the first place, but I assume it was because of some change in the inheritance, perhaps this function was reimplemented in a derived type & this caller was meant to get the base version (& it wasn't virtual)? llvm-svn: 162301
-
Chad Rosier authored
PR9673 llvm-svn: 162284
-
Jakob Stoklund Olesen authored
The getSumForBlock function was quadratic in the number of successors because getSuccWeight would perform a linear search for an already known iterator. This patch was originally committed as r161460, but reverted again because of assertion failures. Now that duplicate Machine CFG edges have been eliminated, this works properly. llvm-svn: 162233
-
- Aug 20, 2012
-
-
Jakob Stoklund Olesen authored
IR that hasn't been through SimplifyCFG can look like this: br i1 %b, label %r, label %r Make sure we don't create duplicate Machine CFG edges in this case. Fix the machine code verifier to accept conditional branches with a single CFG edge. llvm-svn: 162230
-
Jakob Stoklund Olesen authored
This pass often has weird CFG hacks and hand-written MI building code that can go wrong in many ways. llvm-svn: 162224
-
Jakob Stoklund Olesen authored
Verify that the predecessor and successor lists are consistent and free of duplicates. llvm-svn: 162223
-
Stepan Dyatkovskiy authored
The DAGCombiner tries to optimise a BUILD_VECTOR by checking if it consists purely of get_vector_elts from one or two source vectors. If so, it either makes a concat_vectors node or a shufflevector node. However, it doesn't check the element type width of the underlying vector, so if you have this sequence: Node0: v4i16 = ... Node1: i32 = extract_vector_elt Node0 Node2: i32 = extract_vector_elt Node0 Node3: v16i8 = BUILD_VECTOR Node1, Node2, ... It will attempt to: Node0: v4i16 = ... NewNode1: v16i8 = concat_vectors Node0, ... Where this is actually invalid because the element width is completely different. This causes an assertion failure on DAG legalization stage. Fix: If output item type of BUILD_VECTOR differs from input item type. Make concat_vectors based on input element type and then bitcast it to the output vector type. So the case described above will transformed to: Node0: v4i16 = ... NewNode1: v8i16 = concat_vectors Node0, ... NewNode2: v16i8 = bitcast NewNode1 llvm-svn: 162195
-
- Aug 18, 2012
-
-
Eli Friedman authored
so other unexpected operations don't slip through. Based on patch by Logan Chien. PR11786/PR13186. llvm-svn: 162146
-
- Aug 17, 2012
-
-
Bill Wendling authored
<rdar://problem/10545247> llvm-svn: 162131
-
Bill Wendling authored
make it more consistent with its intended semantics. The `linker_private_weak_def_auto' linkage type was meant to automatically hide globals which never had their addresses taken. It has nothing to do with the `linker_private' linkage type, which outputs the symbols with a `l' (ell) prefix among other things. The intended semantic is more like the `linkonce_odr' linkage type. Change the name of the linkage type to `linkonce_odr_auto_hide'. And therefore changing the semantics so that it produces the correct output for the linker. Note: The old linkage name `linker_private_weak_def_auto' will still parse but is not a synonym for `linkonce_odr_auto_hide'. This should be removed in 4.0. <rdar://problem/11754934> llvm-svn: 162114
-
Benjamin Kramer authored
TargetLowering: Use the large shift amount during legalize types. The legalizer may call us with an overly large type. llvm-svn: 162101
-
Jakob Stoklund Olesen authored
Increment the MBB iterator at the top of the loop to properly handle the current (and previous) instructions getting erased. This fixes PR13625. llvm-svn: 162099
-
Jakob Stoklund Olesen authored
Select instructions pick one of two virtual registers based on a condition, like x86 cmov. On targets like ARM that support predication, selects can sometimes be eliminated by predicating the instruction defining one of the operands. Teach PeepholeOptimizer to recognize select instructions, and ask the target to optimize them. llvm-svn: 162059
-
- Aug 15, 2012
-
-
Richard Smith authored
pointer. llvm-svn: 161919
-
- Aug 14, 2012
-
-
Richard Smith authored
llvm-svn: 161853
-
Eric Christopher authored
llvm-svn: 161851
-
Owen Anderson authored
Add a roundToIntegral method to APFloat, which can be parameterized over various rounding modes. Use this to implement SelectionDAG constant folding of FFLOOR, FCEIL, and FTRUNC. llvm-svn: 161807
-
Jakob Stoklund Olesen authored
llvm-svn: 161805
-
Jakob Stoklund Olesen authored
llvm-svn: 161804
-
- Aug 13, 2012
-
-
Jakob Stoklund Olesen authored
It never does anything when running 'make check', and it get's in the way of updating live intervals in 2-addr. The hook was originally added to help form IT blocks in Thumb2 code before register allocation, but the pass ordering has changed since then, and we run if-conversion after register allocation now. When the MI scheduler is enabled, there will be no less than two schedulers between 2-addr and Thumb2ITBlockPass, so this hook is unlikely to help anything. llvm-svn: 161794
-
Bill Wendling authored
llvm-svn: 161788
-
Jakob Stoklund Olesen authored
llvm-svn: 161783
-
Jakob Stoklund Olesen authored
llvm-svn: 161782
-
Jakob Stoklund Olesen authored
It is still possible to if-convert if the tail block has extra predecessors, but the tail phis must be rewritten instead of being removed. llvm-svn: 161781
-
- Aug 11, 2012
-
-
Benjamin Kramer authored
llvm-svn: 161729
-
Benjamin Kramer authored
This is common e.g. when doing rip-relative addressing on x86_64. llvm-svn: 161728
-
Jakob Stoklund Olesen authored
Detect when there is not enough available ILP, so if-conversion can't speculate instructions for free. Compute the lengthening of the critical path when inserting a select instruction that depends on the condition as well as both sides of the if. Reject conversions that would stretch the critical path by more than half a mispredict penalty. llvm-svn: 161713
-
Jakob Stoklund Olesen authored
llvm-svn: 161712
-
Jakob Stoklund Olesen authored
Trace::getResourceLength() computes the number of cycles required to execute the trace when ignoring data dependencies. The number can be compared to the critical path to estimate the trace ILP. Trace::getPHIDepth() computes the data dependency depth of a PHI in a trace successor that isn't necessarily part of the trace. llvm-svn: 161711
-