- Oct 31, 2012
-
-
Hans Wennborg authored
llvm-svn: 167130
-
Hal Finkel authored
BBVectorize would, except for loads and stores, always fuse instructions so that the first instruction (in the current source order) would always represent the low part of the input vectors and the second instruction would always represent the high part. This lead to too many shuffles being produced because sometimes the opposite order produces fewer of them. With this change, BBVectorize tracks the kind of pair connections that form the DAG of candidate pairs, and uses that information to reorder the pairs to avoid excess shuffles. Using this information, a future commit will be able to add VTTI-based shuffle costs to the pair selection procedure. Importantly, the number of remaining shuffles can now be estimated during pair selection. There are some trivial instruction reorderings in the test cases, and one simple additional test where we certainly want to do a reordering to avoid an unnecessary shuffle. llvm-svn: 167122
-
Hans Wennborg authored
- Use 0 instead of NULL - Helper function for "dyn_cast, else lookup in the constant pool". llvm-svn: 167121
-
Meador Inge authored
This patch migrates the strto* optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167119
-
Simon Atanasyan authored
llvm-svn: 167118
-
Hans Wennborg authored
llvm-svn: 167117
-
Benjamin Kramer authored
No functionality change. llvm-svn: 167116
-
Hans Wennborg authored
By propagating the value for the switch condition, LLVM can now build lookup tables for code such as: switch (x) { case 1: return 5; case 2: return 42; case 3: case 4: case 5: return x - 123; default: return 123; } Given that x is known for each case, "x - 123" becomes a constant for cases 3, 4, and 5. llvm-svn: 167115
-
Simon Atanasyan authored
is not a directory, Driver::GetProgramPath() routine does not try to append the program name as a "path component" to it. It just joins the "prefix" with the program name and checks the resulting path existence. The patch reviewed by Rafael Espindola. llvm-svn: 167114
-
Benjamin Kramer authored
llvm-svn: 167113
-
Benjamin Kramer authored
I'm not entirely happy with this solution, but I don't see a smarter way currently. Fixes PR14214. llvm-svn: 167112
-
Evgeniy Stepanov authored
llvm-svn: 167111
-
Benjamin Kramer authored
This makes the code match the comments. Resolves a crash in loop idiom (PR14219). llvm-svn: 167110
-
James Molloy authored
Patch by Pete Chou! llvm-svn: 167109
-
James Molloy authored
No testcase, as this is only testable on a C-A15 board. llvm-svn: 167108
-
Reed Kotler authored
llvm-svn: 167107
-
Craig Topper authored
llvm-svn: 167106
-
Meador Inge authored
This patch migrates the strpbrk optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167105
-
Michael Liao authored
llvm-svn: 167104
-
Meador Inge authored
This patch migrates the strlen optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167103
-
Meador Inge authored
This patch migrates the strncpy optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167102
-
Nadav Rotem authored
llvm-svn: 167101
-
Rafael Espindola authored
llvm-svn: 167100
-
Anna Zaks authored
llvm-svn: 167099
-
Rafael Espindola authored
llvm-svn: 167098
-
Sean Callanan authored
that confused external clients. <rdar://problem/12599528> llvm-svn: 167097
-
Sean Callanan authored
Headers build phase. llvm-svn: 167096
-
Sean Callanan authored
CXXMethodDecl but tried to manipulate it anyway. <rdar://problem/12601996> llvm-svn: 167095
-
Jason Molenda authored
so it is recognized correctly. The second patch needed for <rdar://problem/10652166>. llvm-svn: 167094
-
Rafael Espindola authored
llvm-svn: 167093
-
Anna Zaks authored
IdentifierInfo. Ee: C++ copy constructors. llvm-svn: 167092
-
Anna Zaks authored
llvm-svn: 167091
-
Bill Schmidt authored
parameters. Examples of these are: struct { } a; union { } b[256]; int a[0]; An empty aggregate has an address, although dereferencing that address is pointless. When passed as a parameter, an empty aggregate does not consume a protocol register, nor does it consume a doubleword in the parameter save area. Passing an empty aggregate by reference passes an address just as for any other aggregate. Returning an empty aggregate uses GPR3 as a hidden address of the return value location, just as for any other aggregate. The patch modifies PPCTargetLowering::LowerFormalArguments_64SVR4 and PPCTargetLowering::LowerCall_64SVR4 to properly skip empty aggregate parameters passed by value. The handling of return values and by-reference parameters was already correct. Built on powerpc64-unknown-linux-gnu and tested with no new regressions. A test case is included to test proper handling of empty aggregate parameters on both sides of the function call protocol. llvm-svn: 167090
-
Seth Cantrell authored
llvm-svn: 167089
-
Akira Hatanaka authored
type MachineInstr* and MachineBasicBlock::iterator. llvm-svn: 167088
-
Rafael Espindola authored
Patch by Kai. llvm-svn: 167087
-
Akira Hatanaka authored
llvm-svn: 167086
-
Rafael Espindola authored
Patch by Kai! llvm-svn: 167085
-
Nadav Rotem authored
This is important for loops in the LAPACK test-suite. These loops start at 1 because they are auto-converted from fortran. llvm-svn: 167084
-
Meador Inge authored
This patch migrates the stpcpy optimizations from the simplify-libcalls pass into the instcombine library call simplifier. Note that the __stpcpy_chk simplifications were migrated in a previous commit. llvm-svn: 167083
-