- Mar 11, 2013
-
-
Nick Lewycky authored
lower an expect intrinsic that is a constant expression. llvm-svn: 176830
-
- Mar 10, 2013
-
-
Jakub Staszak authored
llvm-svn: 176787
-
- Mar 09, 2013
-
-
Jakob Stoklund Olesen authored
PHIs are allowed to have multiple operand pairs per predecessor, and this code works just fine when it happens. llvm-svn: 176734
-
- Mar 08, 2013
-
-
Jan Wen Voung authored
Summary: Statistics are still available in Release+Asserts (any +Asserts builds), and stats can also be turned on with LLVM_ENABLE_STATS. Move some of the FastISel stats that were moved under DEBUG() back out of DEBUG(), since stats are disabled across the board now. Many tests depend on grepping "-stats" output. Move those into a orig_dir/Stats/. so that they can be marked as unsupported when building without statistics. Differential Revision: http://llvm-reviews.chandlerc.com/D486 llvm-svn: 176733
-
Jakob Stoklund Olesen authored
To find the last use of a register unit, start from the bottom and scan upwards until a user is found. <rdar://problem/13353090> llvm-svn: 176706
-
Benjamin Kramer authored
llvm-svn: 176703
-
Tom Stellard authored
llvm-svn: 176695
-
Tom Stellard authored
LegalizeDAG.cpp uses the value of the comparison operands when checking the legality of BR_CC, so DAGCombiner should do the same. v2: - Expand more BR_CC value types for NVPTX v3: - Expand correct BR_CC value types for Hexagon, Mips, and XCore. llvm-svn: 176694
-
Andrew Trick authored
This verifies live intervals both before and after scheduling. It's useful for anyone hacking on live interval update. Note that we don't yet pass verification all the time. We don't yet handle updating nonallocatable live intervals perfectly. llvm-svn: 176685
-
Bill Wendling authored
Code generation makes some basic assumptions about the IR it's been given. In particular, if there is only one 'invoke' in the function, then that invoke won't be going away. However, with the advent of the `llvm.donothing' intrinsic, those invokes may go away. If all of them go away, the landing pad no longer has any users. This confuses the back-end, which asserts. This happens with SjLj exceptions, because that's the model that modifies the IR based on there being invokes, etc. in the function. Remove any invokes of `llvm.donothing' during SjLj EH preparation. This will give us a CFG that the back-end won't be confused about. If all of the invokes in a function are removed, then the SjLj EH prepare pass won't insert the bogus code the relies upon the invokes being there. <rdar://problem/13228754&13316637> llvm-svn: 176677
-
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
-