- Mar 08, 2013
-
-
Jakob Stoklund Olesen authored
llvm-svn: 176669
-
Jakob Stoklund Olesen authored
In very rare cases caused by irreducible control flow, the dominating block can have the same trace head without actually being part of the trace. As long as such a dominator still has valid instruction depths, it is OK to use it for computing instruction depths. Rename the function to avoid lying, and add a check that instruction depths are computed for the dominator. llvm-svn: 176668
-
- Mar 07, 2013
-
-
Chad Rosier authored
rdar://13370942 llvm-svn: 176659
-
Chad Rosier authored
rdar://13370942 llvm-svn: 176649
-
Benjamin Kramer authored
llvm-svn: 176648
-
Andrew Trick authored
llvm-svn: 176638
-
Andrew Trick authored
rdar:13370002 [pre-RA-sched] assertion: released too many times I tracked this down to an earlier hack that is no longer applicable and interfered with normal scheduler logic. With the changes in r176037, it was causing an instruction to be scheduled multiple times. I have an external test case that I tried hard to reduce and failed. I can't even reproduce with llc. llvm-svn: 176636
-
Nadav Rotem authored
llvm-svn: 176615
-
Jim Grosbach authored
Just scalarize the element and rebuild a vector of the result type from that. rdar://13281568 llvm-svn: 176614
-
Manman Ren authored
We now emit a line table for each compile unit. To reduce the prologue size of each line table, the files and directories used by each compile unit are stored in std::map<unsigned, std::vector< > > instead of std::vector< >. The prologue for a lto'ed image can be as big as 93K. Duplicating 93K for each compile unit causes a huge increase of debug info. With this patch, each prologue will only emit the files required by the compile unit. rdar://problem/13342023 llvm-svn: 176605
-
- Mar 05, 2013
-
-
Bill Wendling authored
llvm-svn: 176467
-
- Mar 02, 2013
-
-
Eli Bendersky authored
llvm-svn: 176391
-
- Mar 01, 2013
-
-
Akira Hatanaka authored
llvm-svn: 176378
-
Chad Rosier authored
handle indirect register inputs. rdar://13322011 llvm-svn: 176367
-
Michael Liao authored
- ISD::SHL/SRL/SRA must have either both scalar or both vector operands but TLI.getShiftAmountTy() so far only return scalar type. As a result, backend logic assuming that breaks. - Rename the original TLI.getShiftAmountTy() to TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to return target-specificed scalar type or the same vector type as the 1st operand. - Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar type. llvm-svn: 176364
-
Andrew Trick authored
llvm-svn: 176316
-
Andrew Trick authored
We avoided computing DAG height/depth during Node printing because it shouldn't depend on an otherwise valid DAG. But this has become far too annoying for the common case of a valid DAG where we want to see valid values. If doing the computation on-the-fly turns out to be a problem in practice, then I'll add a mode to the diagnostics to only force it when we're likely to have a valid DAG, otherwise explicitly print INVALID instead of bogus numbers. For now, just go for it all the time. llvm-svn: 176314
-
Eli Bendersky authored
SelectionDAGIsel::LowerArguments needs a function, not a basic block. So it makes sense to pass it the function instead of extracting a basic-block from the function and then tossing it. This is also more self-documenting (functions have arguments, BBs don't). In addition, added comments to a couple of Select* methods. llvm-svn: 176305
-
- Feb 28, 2013
-
-
Benjamin Kramer authored
We make the cost for calling libm functions extremely high as emitting the calls is expensive and causes spills (on x86) so performance suffers. We still vectorize important calls like ceilf and friends on SSE4.1. and fabs. Differential Revision: http://llvm-reviews.chandlerc.com/D466 llvm-svn: 176287
-
Eli Bendersky authored
other per-instruction statistics. llvm-svn: 176273
-
Eric Christopher authored
a few lines above. llvm-svn: 176224
-
Eric Christopher authored
llvm-svn: 176223
-
Eric Christopher authored
llvm-svn: 176222
-
Manman Ren authored
definition DIE (TAG_variable), and put AT_MIPS_linkage_name to TAG_member when DarwinGDBCompat is true. Darwin GDB needs AT_MIPS_linkage_name at both places to work. Follow-up patch to r176143. rdar://problem/13291234 llvm-svn: 176220
-
- Feb 27, 2013
-
-
Nadav Rotem authored
llvm-svn: 176218
-
Nadav Rotem authored
The FastISEL should be fast. But when we record statistics we use atomic operations to increment the counters. This patch disables the counters on non-debug builds. This reduces the runtime of SelectionDAGISel::SelectCodeCommon by ~5%. llvm-svn: 176214
-
Michael Ilseman authored
llvm-svn: 176204
-
Manman Ren authored
CurrentCallSite to avoid an assertion failure: assert(MMI.getCurrentCallSite() == 0 && "Overlapping call sites!"); rdar://problem/13228754 llvm-svn: 176154
-
Manman Ren authored
definition DIE, to make old GDB happy. We have a regression for old GDB when Clang uses DW_TAG_member to declare static members inside a class, instead of DW_TAG_variable. This patch will fix this regression. rdar://problem/13291234 llvm-svn: 176143
-
Michael Ilseman authored
llvm-svn: 176136
-
- Feb 26, 2013
-
-
Manman Ren authored
llvm-svn: 176129
-
Manman Ren authored
TAG_member inside a class to the specification DIE. Having AT_MIPS_linkage_name on TAG_member caused old gdb (GNU 6.3.50) to error out. Also gcc 4.7 has AT_MIPS_linkage_name on the specification DIE. rdar://problem/13291234 llvm-svn: 176120
-
- Feb 25, 2013
-
-
Chad Rosier authored
llvm-svn: 176055
-
Chad Rosier authored
fewer scalar integer (i32 or i64) arguments. It completely eliminates the need for SDISel for trivial functions. Also, add the new llc -fast-isel-abort-args option, which is similar to -fast-isel-abort option, but for formal argument lowering. llvm-svn: 176052
-
Andrew Trick authored
Fixes rdar:13279013: scheduler was blowing up on select instructions. llvm-svn: 176037
-
Matt Beaumont-Gay authored
llvm-svn: 176031
-
Chandler Carruth authored
llvm-svn: 176023
-
Chandler Carruth authored
memory intrinsics in the SDAG builder. When alignment is zero, the lang ref says that *no* alignment assumptions can be made. This is the exact opposite of the internal API contracts of the DAG where alignment 0 indicates that the alignment can be made to be anything desired. There is another, more explicit alignment that is better suited for the role of "no alignment at all": an alignment of 1. Map the intrinsic alignment to this early so that we don't end up generating aligned DAGs. It is really terrifying that we've never seen this before, but we suddenly started generating a large number of alignment 0 memcpys due to the new code to do memcpy-based copying of POD class members. That patch contains a bug that rounds bitfield alignments down when they are the first field. This can in turn produce zero alignments. This fixes weird crashes I've seen in library users of LLVM on 32-bit hosts, etc. llvm-svn: 176022
-
- Feb 24, 2013
-
-
Cameron Zwarich authored
builds. llvm-svn: 175981
-
Cameron Zwarich authored
true when shouldOnlyCommute is false, so we can remove code that checks otherwise. llvm-svn: 175980
-