- Jan 31, 2013
-
-
Manman Ren authored
We used to create children DIEs for a scope, then check whether ScopeDIE is null. If ScopeDIE is null, the children DIEs will be dangling. Other DIEs can link to those dangling DIEs, which are not emitted at all, causing dwarf error. The current testing case is 4k lines, from MultiSource/BenchMark/McCat/09-vor. rdar://problem/13071959 llvm-svn: 174084
-
Chad Rosier authored
Each target implementation was needlessly recomputing the index. Part of rdar://13076458 llvm-svn: 174083
-
- Jan 29, 2013
-
-
Weiming Zhao authored
llvm-svn: 173833
-
David Blaikie authored
Provides the functionality for Clang change r172911 - I just had this still lying around. llvm-svn: 173820
-
Edwin Vane authored
Fixed set-but-not-used warnings. Reviewer: gribozavr llvm-svn: 173810
-
Andrew Trick authored
llvm-svn: 173775
-
Evan Cheng authored
conditions are met: 1. They share the same operand and are in the same BB. 2. Both outputs are used. 3. The target has a native instruction that maps to ISD::FSINCOS node or the target provides a sincos library call. Implemented the generic optimization in sdisel and enabled it for Mac OSX. Also added an additional optimization for x86_64 Mac OSX by using an alternative entry point __sincos_stret which returns the two results in xmm0 / xmm1. rdar://13087969 PR13204 llvm-svn: 173755
-
- Jan 28, 2013
-
-
Bill Schmidt authored
The common code in the post-RA scheduler to break anti-dependencies on the critical path contained a flaw. In the reported case, an anti-dependency between the overlapping registers %X4 and %R4 exists: %X29<def> = OR8 %X4, %X4 %R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1> The unpatched code breaks the dependency by replacing %R4 and its uses with %R3, the first register on the available list. However, %R3 and %X3 overlap, so this creates two overlapping definitions on the same instruction. The fix is straightforward, preventing selection of a register that overlaps any other defined register on the same instruction. The test case is reduced from the bug report, and verifies that we no longer produce "lbzu 3, 1(3)" when breaking this anti-dependency. llvm-svn: 173706
-
Eric Christopher authored
llvm-svn: 173698
-
Michael Gottesman authored
Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. llvm-svn: 173647
-
- Jan 27, 2013
-
-
Benjamin Kramer authored
llvm-svn: 173625
-
Benjamin Kramer authored
llvm-svn: 173620
-
Benjamin Kramer authored
Fix that by adding a cast to the shift expander. This came up with vector shifts on sse-less X86 CPUs. <2 x i64> = shl <2 x i64> <2 x i64> -> i64,i64 = shl i64 i64; shl i64 i64 -> i32,i32,i32,i32 = shl_parts i32 i32 i64; shl_parts i32 i32 i64 Now we cast the last two i64s to the right type. Fixes the crash in PR14668. llvm-svn: 173615
-
- Jan 25, 2013
-
-
Jakub Staszak authored
llvm-svn: 173497
-
Preston Gurd authored
with an initial number of elements, instead of DenseMap, which has zero initial elements, in order to avoid the copying of elements when the size changes and to avoid allocating space every time LegalizeTypes is run. This patch will not affect the memory footprint, because DenseMap will increase the element size to 64 when the first element is added. Patch by Wan Xiaofei. llvm-svn: 173448
-
Andrew Trick authored
llvm-svn: 173433
-
Andrew Trick authored
llvm-svn: 173432
-
Andrew Trick authored
llvm-svn: 173431
-
Andrew Trick authored
This fixes DAG subtree analysis at the boundary. llvm-svn: 173427
-
Andrew Trick authored
Maintain separate per-node and per-tree book-keeping. Track all instructions above a DAG node including nested subtrees. Seperately track instructions within a subtree. Record subtree parents. llvm-svn: 173426
-
Andrew Trick authored
Allow the strategy to select SchedDFS. Allow the results of SchedDFS to affect initialization of the scheduler state. llvm-svn: 173425
-
Andrew Trick authored
This is mostly refactoring, along with adding an instruction count within the subtrees and ensuring we only look at data edges. llvm-svn: 173420
-
Andrew Trick authored
interface and allow other strategies to select it. llvm-svn: 173413
-
Andrew Trick authored
For sanity, create a root when NumDataSuccs >= 4. Splitting large subtrees will no longer be detrimental after my next checkin to handle nested tree. A magic number of 4 is fine because single subtrees seldom rejoin more than this. It makes subtrees easier to visualize and heuristics more sane. llvm-svn: 173399
-
Jakob Stoklund Olesen authored
Patch by Stefan Hepp. llvm-svn: 173395
-
- Jan 24, 2013
-
-
Andrew Trick authored
llvm-svn: 173318
-
Andrew Trick authored
Allow schedulers to order DAG edges by critical path. This makes DFS-based heuristics more stable and effective. llvm-svn: 173317
-
- Jan 23, 2013
-
-
Bill Wendling authored
The requirements of the strong heuristic are: * A Protector is required for functions which contain an array, regardless of type or length. * A Protector is required for functions which contain a structure/union which contains an array, regardless of type or length. Note, there is no limit to the depth of nesting. * A protector is required when the address of a local variable (i.e., stack based variable) is exposed. (E.g., such as through a local whose address is taken as part of the RHS of an assignment or a local whose address is taken as part of a function argument.) llvm-svn: 173231
-
Bill Wendling authored
SSPStrong applies a heuristic to insert stack protectors in these situations: * A Protector is required for functions which contain an array, regardless of type or length. * A Protector is required for functions which contain a structure/union which contains an array, regardless of type or length. Note, there is no limit to the depth of nesting. * A protector is required when the address of a local variable (i.e., stack based variable) is exposed. (E.g., such as through a local whose address is taken as part of the RHS of an assignment or a local whose address is taken as part of a function argument.) This patch implements the SSPString attribute to be equivalent to SSPRequired. This will change in a subsequent patch. llvm-svn: 173230
-
- Jan 22, 2013
-
-
Tim Northover authored
Previously we tried to infer it from the bit width size, with an added IsIEEE argument for the PPC/IEEE 128-bit case, which had a default value. This default value allowed bugs to creep in, where it was inappropriate. llvm-svn: 173138
-
- Jan 21, 2013
-
-
Michael Ilseman authored
A SparseMultiSet adds multiset behavior to SparseSet, while retaining SparseSet's desirable properties. Essentially, SparseMultiSet provides multiset behavior by storing its dense data in doubly linked lists that are inlined into the dense vector. This allows it to provide good data locality as well as vector-like constant-time clear() and fast constant time find(), insert(), and erase(). It also allows SparseMultiSet to have a builtin recycler rather than keeping SparseSet's behavior of always swapping upon removal, which allows it to preserve more iterators. It's often a better alternative to a SparseSet of a growable container or vector-of-vector. llvm-svn: 173064
-
- Jan 20, 2013
-
-
Nadav Rotem authored
Revert 172708. The optimization handles esoteric cases but adds a lot of complexity both to the X86 backend and to other backends. This optimization disables an important canonicalization of chains of SEXT nodes and makes SEXT and ZEXT asymmetrical. Disabling the canonicalization of consecutive SEXT nodes into a single node disables other DAG optimizations that assume that there is only one SEXT node. The AVX mask optimizations is one example. Additionally this optimization does not update the cost model. llvm-svn: 172968
-
David Blaikie authored
llvm-svn: 172941
-
- Jan 18, 2013
-
-
Eric Christopher authored
llvm-svn: 172857
-
Bill Wendling authored
Further encapsulation of the Attribute object. Don't allow direct access to the Attribute object as an aggregate. llvm-svn: 172853
-
Bill Wendling authored
Remove unused parameter. Also use the AttributeSet query methods instead of the Attribute query methods. llvm-svn: 172852
-
Daniel Dunbar authored
- Also, fixup syntax errors in LangRef and missing newline in the MCAsmStreamer. llvm-svn: 172837
-
- Jan 17, 2013
-
-
Elena Demikhovsky authored
v8i8 -> v8i64, v8i8 -> v8i32, v4i8 -> v4i64, v4i16 -> v4i64 for AVX and AVX2. Bug 14865. llvm-svn: 172708
-
Eric Christopher authored
changing both the string of the dwo_name to be correct and the type of the statement list. Testcases all around. llvm-svn: 172699
-
Eric Christopher authored
emitting the dwarf32 version of DW_FORM_sec_offset and correct disassembler support. llvm-svn: 172698
-