summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add a "-a" option to "image list" to show the image at a given address.Jim Ingham2011-10-241-107/+164
| | | | llvm-svn: 142833
* In accordance with the C89, C99 and C++98 standards, ICEs can only containRichard Smith2011-10-243-7/+16
| | | | | | | floating-point literals if they are the immediate operands of casts. ImplicitCastExpr is not a cast in the language-standards sense. llvm-svn: 142832
* [analyzer] Convert ExprEngine::visit() to use short lived builders.Anna Zaks2011-10-2412-280/+417
| | | | | | | | | | | This commit removes the major functional dependency on the ExprEngine::Builder member variable. In some cases the code became more verbose. Particularly, we call takeNodes() and addNodes() to move responsibility for the nodes from one builder to another. This will get simplified later on. llvm-svn: 142831
* [analyzer] Convert VisitDeclStmt to use local node builder.Anna Zaks2011-10-243-23/+31
| | | | llvm-svn: 142830
* [analyzer] Convert more functions (ex:evalBind()) to iterative buildersAnna Zaks2011-10-243-15/+38
| | | | llvm-svn: 142829
* [analyzer] Convert VisitUnaryOperator to use short lived Node buildersAnna Zaks2011-10-244-27/+67
| | | | | | | | | | To convert iteratively, we take the nodes the local builder will process from the from the global builder and add the generated nodes after the short lived builder is done. PureStmtNodeBuilder is the one we should eventually use everywhere. Added Stmt index and Builder context as ExprEngine globals. To avoid passing them around. llvm-svn: 142828
* [analyzer] Use a temporary builder in CheckerContext.Anna Zaks2011-10-246-37/+68
| | | | | | | First step toward removing the global Stmt builder. Added several transitional methods (like takeNodes/addNodes). + Stop early if the set of exploded nodes for the next iteration is empty. llvm-svn: 142827
* [analyzer] Pass external Dst set to NodeBuilderAnna Zaks2011-10-248-71/+71
| | | | | | | | This moves the responsibility for storing the output node set from the builder to the clients. The builder is just responsible for transforming an input set into the output set: {SrcSet/SrcNode} -> {Frontier}. llvm-svn: 142826
* Fix test regressions due to the addition of 'display' alias to the top level ↵Johnny Chen2011-10-241-1/+1
| | | | | | | | commands, which conflicts with the original 'dis' -> 'disassemble' unique expansion. Change it to 'disass' now. llvm-svn: 142825
* Removed the @expectedFailure decorators from test cases. They have been ↵Johnny Chen2011-10-241-5/+3
| | | | | | fixed with the r142717 check-in. llvm-svn: 142823
* Really unbreak CMake buildDouglas Gregor2011-10-241-3/+1
| | | | llvm-svn: 142822
* Unbreak CMake buildDouglas Gregor2011-10-241-0/+1
| | | | llvm-svn: 142821
* Fix a NEON disassembly case that was broken in the recent refactorings. As ↵Owen Anderson2011-10-242-6/+4
| | | | | | more of this code gets refactored, a lot of these manual decoding hooks should get smaller and/or go away entirely. llvm-svn: 142817
* Delete the top-down "Latency" scheduler. Top-down scheduling doesn't handleDan Gohman2011-10-243-270/+0
| | | | | | | physreg dependencies, and upcoming codegen changes will require proper physreg dependence handling. llvm-svn: 142816
* Delete the Latency scheduling preference.Dan Gohman2011-10-242-3/+0
| | | | llvm-svn: 142815
* Simplify parsing ellipsis in Parser::ParseAlignArgument, spotted by Doug.Peter Collingbourne2011-10-241-4/+2
| | | | llvm-svn: 142814
* Change this overloaded use of Sched::Latency to be an overloadedDan Gohman2011-10-242-6/+6
| | | | | | use of Sched::ILP instead, as Sched::Latency is going away. llvm-svn: 142813
* Constant expression evaluation: factor out VarDecl initializer evaluation andRichard Smith2011-10-241-68/+42
| | | | | | caching. llvm-svn: 142812
* Remove the explicit request for "Latency" scheduling from MSP430,Dan Gohman2011-10-243-3/+2
| | | | | | as the Latency scheduler is going away. llvm-svn: 142811
* Change the default scheduler from Latency to ILP, since LatencyDan Gohman2011-10-2418-234/+184
| | | | | | is going away. llvm-svn: 142810
* Minor refactoring of my last patch. Per Doug's suggestion.Fariborz Jahanian2011-10-241-1/+1
| | | | llvm-svn: 142807
* Update test for r142801.Jim Grosbach2011-10-241-1/+1
| | | | llvm-svn: 142806
* [libclang] Make sure we don't try to erase past the StoredDiagnostics vector.Argyrios Kyrtzidis2011-10-242-19/+22
| | | | | | Ted came upon the bug but I couldn't make a test out of it. llvm-svn: 142805
* XFAIL test on leak checkers.Benjamin Kramer2011-10-241-0/+1
| | | | llvm-svn: 142804
* Fix mismatched new[]/delete[].Benjamin Kramer2011-10-241-1/+1
| | | | llvm-svn: 142803
* Decoupling of lock-related code from the core of ScriptInterpreterPython. ↵Enrico Granata2011-10-242-234/+161
| | | | | | All that concerns locking the Python interpreter is now delegated to the internal ScriptInterpreterPython::Locker class. Several changes in ScriptInterpreterPython to accommodate this new pattern. llvm-svn: 142802
* Thumb2 LDM instructions can target PC. Make sure to encode it.Jim Grosbach2011-10-241-8/+4
| | | | | | PR11220 llvm-svn: 142801
* Cleanup. Get rid of the old SjLj EH lowering code. No functionality change.Bill Wendling2011-10-241-584/+10
| | | | llvm-svn: 142800
* Sink an otherwise unused variable's initializer into the asserts thatChandler Carruth2011-10-241-3/+2
| | | | | | used it. Fixes an unused variable warning from GCC on release builds. llvm-svn: 142799
* Have -fms-no-extensions turn off -fms-compatibilityDouglas Gregor2011-10-241-2/+6
| | | | llvm-svn: 142798
* Make -fms-compatibility imply -fms-extensions. Fixes PR11204.Douglas Gregor2011-10-242-1/+5
| | | | llvm-svn: 142797
* Remove debugging printfs that some idiot left in.David Chisnall2011-10-241-3/+0
| | | | llvm-svn: 142796
* Enable experimental support for objc_msgSend with GNUstep ObjC runtime.David Chisnall2011-10-242-10/+33
| | | | llvm-svn: 142795
* Implement comparison operators for BranchProbability in a way that can't ↵Benjamin Kramer2011-10-242-10/+27
| | | | | | | | overflow INT64_MAX. Add a test case for the edge case that triggers this. Thanks to Chandler for bringing this to my attention. llvm-svn: 142794
* Remove return heuristics from the static branch probabilities, andChandler Carruth2011-10-243-74/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | introduce no-return or unreachable heuristics. The return heuristics from the Ball and Larus paper don't work well in practice as they pessimize early return paths. The only good hitrate return heuristics are those for: - NULL return - Constant return - negative integer return Only the last of these three can possibly require significant code for the returning block, and even the last is fairly rare and usually also a constant. As a consequence, even for the cold return paths, there is little code on that return path, and so little code density to be gained by sinking it. The places where sinking these blocks is valuable (inner loops) will already be weighted appropriately as the edge is a loop-exit branch. All of this aside, early returns are nearly as common as all three of these return categories, and should actually be predicted as taken! Rather than muddy the waters of the static predictions, just remain silent on returns and let the CFG itself dictate any layout or other issues. However, the return heuristic was flagging one very important case: unreachable. Unfortunately it still gave a 1/4 chance of the branch-to-unreachable occuring. It also didn't do a rigorous job of finding those blocks which post-dominate an unreachable block. This patch builds a more powerful analysis that should flag all branches to blocks known to then reach unreachable. It also has better worst-case runtime complexity by not looping through successors for each block. The previous code would perform an N^2 walk in the event of a single entry block branching to N successors with a switch where each successor falls through to the next and they finally fall through to a return. Test case added for noreturn heuristics. Also doxygen comments improved along the way. llvm-svn: 142793
* Revert "Test commit"NAKAMURA Takumi2011-10-242-2/+0
| | | | llvm-svn: 142792
* Test commitNAKAMURA Takumi2011-10-242-0/+2
| | | | llvm-svn: 142791
* Reapply r142781 with fix. Original message:Nick Lewycky2011-10-242-21/+65
| | | | | | | | | | | | | | | | | | | Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the loop header when computing the trip count. With this, we now constant evaluate: struct ListNode { const struct ListNode *next; int i; }; static const struct ListNode node1 = {0, 1}; static const struct ListNode node2 = {&node1, 2}; static const struct ListNode node3 = {&node2, 3}; int test() { int sum = 0; for (const struct ListNode *n = &node3; n != 0; n = n->next) sum += n->i; return sum; } llvm-svn: 142790
* Doxygen-ify the comments on the public interface for BPI. Also, move theChandler Carruth2011-10-241-18/+47
| | | | | | | two more subtle routines to the bottom and expand on their cautionary comments a bit. No functionality or actual interface change here. llvm-svn: 142789
* PHI nodes not in the loop header aren't part of the loop iteration initialNick Lewycky2011-10-241-1/+1
| | | | | | | state. Furthermore, they might not have two operands. This fixes the underlying issue behind the crashes introduced in r142781. llvm-svn: 142788
* A dead malloc, a free(NULL) and a free(undef) are all trivially deadNick Lewycky2011-10-242-2/+9
| | | | | | | | | | instructions. This doesn't introduce any optimizations we weren't doing before (except potentially due to pass ordering issues), now passes will eliminate them sooner as part of their own cleanups. llvm-svn: 142787
* Speculatively revert r142781. Bots are showingNick Lewycky2011-10-242-65/+21
| | | | | | | Assertion `i_nocapture < OperandTraits<PHINode>::operands(this) && "getOperand() out of range!"' failed. coming out of indvars. llvm-svn: 142786
* Windows/Path.inc: [PR8460] Get rid of ScopedNullTerminator. Thanks to Zvi ↵NAKAMURA Takumi2011-10-241-18/+9
| | | | | | Rackover! llvm-svn: 142785
* Actually rename the file AnalysisContext.cpp -> AnalysisDeclContext.cppChandler Carruth2011-10-241-0/+0
| | | | | | | to match the CMakeLists.txt change in r142782; this should fix the CMake build. llvm-svn: 142784
* Simplify the design of BranchProbabilityInfo by collapsing it intoChandler Carruth2011-10-242-155/+120
| | | | | | | | | | | | | a single class. Previously it was split between two classes, one internal and one external. The concern seemed to center around exposing the weights used, but those can remain confined to the implementation file. Having a single class to maintain the state and analyses in use will also simplify several of the enhancements I want to make to our static heuristics. llvm-svn: 142783
* Rename AnalysisContext to AnalysisDeclContext. Not only is this name more ↵Ted Kremenek2011-10-2438-178/+178
| | | | | | accurate, but it frees up the name AnalysisContext for other uses. llvm-svn: 142782
* Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in theNick Lewycky2011-10-232-21/+65
| | | | | | | | | | | | | | | | | | loop header when computing the trip count. With this, we now constant evaluate: struct ListNode { const struct ListNode *next; int i; }; static const struct ListNode node1 = {0, 1}; static const struct ListNode node2 = {&node1, 2}; static const struct ListNode node3 = {&node2, 3}; int test() { int sum = 0; for (const struct ListNode *n = &node3; n != 0; n = n->next) sum += n->i; return sum; } llvm-svn: 142781
* Tidy up a loop to be more idiomatic for LLVM's codebase, and remove someChandler Carruth2011-10-231-18/+9
| | | | | | | extraneous whitespace. Trying to clean-up this pass as much as I can before I start making functional changes. llvm-svn: 142780
* Add X86 SARX, SHRX, and SHLX instructions.Craig Topper2011-10-234-18/+135
| | | | llvm-svn: 142779
* Teach the BranchProbabilityInfo pass to print its results, and use thatChandler Carruth2011-10-234-5/+119
| | | | | | | | | | to bring it under direct test instead of merely indirectly testing it in the BlockFrequencyInfo pass. The next step is to start adding tests for the various heuristics employed, and to start fixing those heuristics once they're under test. llvm-svn: 142778
OpenPOWER on IntegriCloud