summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Basic support for parsing templates, from Andrew SuttonDouglas Gregor2008-12-016-3/+372
| | | | llvm-svn: 60384
* Temporarily revert r60382. It caused CodeGen/X86/i2k.ll and others to fail.Bill Wendling2008-12-013-135/+40
| | | | llvm-svn: 60383
* - Have "ADD" instructions return an implicit EFLAGS.Bill Wendling2008-12-013-40/+135
| | | | | | - Add support for seto, setno, setc, and setnc instructions. llvm-svn: 60382
* Expand getVTList, getNodeValueTypes, and SelectNodeTo to handle more value ↵Bill Wendling2008-12-012-0/+42
| | | | | | types. llvm-svn: 60381
* Improve error recovery when parsing a function definition failsDouglas Gregor2008-12-011-1/+1
| | | | llvm-svn: 60380
* Initialize storage class even if we got an erroneous mutableDouglas Gregor2008-12-011-0/+1
| | | | llvm-svn: 60377
* Add rdar reference, make this actually fail when the patch isn't applied.Chris Lattner2008-12-011-2/+4
| | | | llvm-svn: 60376
* Consider only references to an IV within the loop whenDale Johannesen2008-12-012-6/+54
| | | | | | | | | figuring out the base of the IV. This produces better code in the example. (Addresses use (IV) instead of (BASE,IV) - a significant improvement on low-register machines like x86). llvm-svn: 60374
* Objective-C keywords are not always identifiers. Some are also C++ keywordsDouglas Gregor2008-12-012-4/+5
| | | | llvm-svn: 60373
* Fix RUN lineDouglas Gregor2008-12-011-1/+1
| | | | llvm-svn: 60372
* reenable array_pod_sort, this time hopefully happy on 64-bit Chris Lattner2008-12-011-9/+12
| | | | | | and big endian systems. llvm-svn: 60371
* Don't rebuild RHSNeg. Just use the one that's already there.Bill Wendling2008-12-011-2/+1
| | | | llvm-svn: 60370
* Document what this check is doing. Also, no need to cast to ConstantInt.Bill Wendling2008-12-011-4/+4
| | | | llvm-svn: 60369
* -Add several ObjC types to Decl::getDeclKindName(), a useful debug hook.Steve Naroff2008-12-013-0/+16
| | | | | | -Start adding support for rewriting @synthesize. llvm-svn: 60368
* Test blocks in C++ modeDouglas Gregor2008-12-011-0/+7
| | | | llvm-svn: 60367
* Use a simple comparison. Overflow on integer negation can only occur when theBill Wendling2008-12-011-13/+2
| | | | | | integer is "minint". llvm-svn: 60366
* don't #include <algorithm> into the llvm namespace.Chris Lattner2008-12-011-0/+2
| | | | llvm-svn: 60365
* Use EmitInt, not Emit, to emit unsigned valuesDouglas Gregor2008-12-011-2/+2
| | | | llvm-svn: 60364
* Add test case for __ASSEMBLER__ definition.Daniel Dunbar2008-12-012-1/+7
| | | | llvm-svn: 60363
* Add LangOptions marker for assembler-with-cpp mode and use to defineDaniel Dunbar2008-12-013-3/+7
| | | | | | | __ASSEMBLER__ properly. Patch from Roman Divacky (with minor formatting changes). Thanks! llvm-svn: 60362
* Enable blocks in C++Douglas Gregor2008-12-011-3/+0
| | | | llvm-svn: 60361
* Make sure __null test runs in both 32- and 64-bit. Thanks AndersDouglas Gregor2008-12-011-1/+2
| | | | llvm-svn: 60360
* Parse the exception-specification throw(...), a Microsoft extensionDouglas Gregor2008-12-013-5/+21
| | | | llvm-svn: 60359
* CellSPU:Scott Michel2008-12-014-99/+154
| | | | | | | | | - Fix v2[if]64 vector insertion code before IBM files a bug report. - Ensure that zero (0) offsets relative to $sp don't trip an assert (add $sp, 0 gets legalized to $sp alone, tripping an assert) - Shuffle masks passed to SPUISD::SHUFB are now v16i8 or v4i32 llvm-svn: 60358
* Add the test for __nullDouglas Gregor2008-12-011-0/+10
| | | | llvm-svn: 60357
* Define NULL to __null in C++, so that it's guaranteed to have the same size ↵Douglas Gregor2008-12-011-1/+1
| | | | | | as a pointer llvm-svn: 60355
* switch to std::sort until I have time to sort this out.Chris Lattner2008-12-011-3/+7
| | | | llvm-svn: 60354
* cleanups suggested by duncan, thanks!Chris Lattner2008-12-011-1/+2
| | | | llvm-svn: 60353
* define array_pod_sort in terms of operator< instead of my brainChris Lattner2008-12-011-13/+9
| | | | | | | damaged approximation. This should fix it on big endian platforms and on 64-bit. llvm-svn: 60352
* There are no longer any places that require aDuncan Sands2008-12-0111-52/+48
| | | | | | | | MERGE_VALUES node with only one operand, so get rid of special code that only existed to handle that possibility. llvm-svn: 60349
* Change the interface to the type legalization methodDuncan Sands2008-12-0120-378/+377
| | | | | | | | | | | ReplaceNodeResults: rather than returning a node which must have the same number of results as the original node (which means mucking around with MERGE_VALUES, and which is also easy to get wrong since SelectionDAG folding may mean you don't get the node you expect), return the results in a vector. llvm-svn: 60348
* Generalize the FoldOrWithConstant method to fold for any two constants whichBill Wendling2008-12-011-23/+22
| | | | | | don't have overlapping bits. llvm-svn: 60344
* Reduce copy-and-paste code by splitting out the code into its own function.Bill Wendling2008-12-011-58/+50
| | | | llvm-svn: 60343
* Use m_Specific() instead of double matching.Bill Wendling2008-12-012-19/+13
| | | | llvm-svn: 60341
* Move pattern check outside of the if-then statement. This prevents us from ↵Bill Wendling2008-12-011-10/+12
| | | | | | fiddling with constants unless we have to. llvm-svn: 60340
* Rename some variables, only increment BI once at the start of the loop ↵Chris Lattner2008-12-011-38/+30
| | | | | | instead of throughout it. llvm-svn: 60339
* pull the predMap densemap out of the inner loop of performPRE, soChris Lattner2008-12-011-2/+4
| | | | | | | that it isn't reallocated all the time. This is a tiny speedup for GVN: 3.90->3.88s llvm-svn: 60338
* switch a couple more calls to use array_pod_sort.Chris Lattner2008-12-012-3/+5
| | | | llvm-svn: 60337
* don't assume iterators implicitly convert to pointers.Chris Lattner2008-12-011-1/+1
| | | | llvm-svn: 60336
* Introduce a new array_pod_sort function and switch LSR to use itChris Lattner2008-12-012-2/+39
| | | | | | | | | instead of std::sort. This shrinks the release-asserts LSR.o file by 1100 bytes of code on my system. We should start using array_pod_sort where possible. llvm-svn: 60335
* Generate the correct results for the comma expression. Fixes PR3123.Anders Carlsson2008-12-011-7/+10
| | | | llvm-svn: 60334
* Revert change that made isNullPointerConstant start emitting warnings. We ↵Anders Carlsson2008-12-014-36/+11
| | | | | | don't want that :) llvm-svn: 60333
* Eliminate use of setvector for the DeadInsts set, just use a smallvector.Chris Lattner2008-12-011-17/+31
| | | | | | This is a lot cheaper and conceptually simpler. llvm-svn: 60332
* Fix test. (0 && (a(),1)) is a valid I-C-E according to C99.Anders Carlsson2008-12-011-2/+2
| | | | llvm-svn: 60331
* DeleteTriviallyDeadInstructions is always passed theChris Lattner2008-12-011-10/+9
| | | | | | DeadInsts ivar, just use it directly. llvm-svn: 60330
* simplify DeleteTriviallyDeadInstructions again, unlike my previousChris Lattner2008-12-011-20/+13
| | | | | | | | buggy rewrite, this notifies ScalarEvolution of a pending instruction about to be removed and then erases it, instead of erasing it then notifying. llvm-svn: 60329
* simplify these patterns using m_Specific. No need to grep for Chris Lattner2008-12-012-19/+7
| | | | | | xor in testcase (or is a substring). llvm-svn: 60328
* Teach jump threading to clean up after itself, DCE and constfolding theChris Lattner2008-12-011-1/+24
| | | | | | | | | new instructions it simplifies. Because we're threading jumps on edges with constants coming in from PHI's, we inherently are exposing a lot more constants to the new block. Folding them and deleting dead conditions allows the cost model in jump threading to be more accurate as it iterates. llvm-svn: 60327
* The PreVerifier pass preserves everything. In practice, thisChris Lattner2008-12-011-0/+4
| | | | | | | prevents the passmgr from adding yet-another domtree invocation for Verifier if there is already one live. llvm-svn: 60326
* Change instcombine to use FoldPHIArgGEPIntoPHI to fold two operand PHIsChris Lattner2008-12-011-17/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of using FoldPHIArgBinOpIntoPHI. In addition to being more obvious, this also fixes a problem where instcombine wouldn't merge two phis that had different variable indices. This prevented instcombine from factoring big chunks of code in 403.gcc. For example: insn_cuid.exit: - %tmp336 = load i32** @uid_cuid, align 4 - %tmp337 = getelementptr %struct.rtx_def* %insn_addr.0.ph.i, i32 0, i32 3 - %tmp338 = bitcast [1 x %struct.rtunion]* %tmp337 to i32* - %tmp339 = load i32* %tmp338, align 4 - %tmp340 = getelementptr i32* %tmp336, i32 %tmp339 br label %bb62 bb61: - %tmp341 = load i32** @uid_cuid, align 4 - %tmp342 = getelementptr %struct.rtx_def* %insn, i32 0, i32 3 - %tmp343 = bitcast [1 x %struct.rtunion]* %tmp342 to i32* - %tmp344 = load i32* %tmp343, align 4 - %tmp345 = getelementptr i32* %tmp341, i32 %tmp344 br label %bb62 bb62: - %iftmp.62.0.in = phi i32* [ %tmp345, %bb61 ], [ %tmp340, %insn_cuid.exit ] + %insn.pn2 = phi %struct.rtx_def* [ %insn, %bb61 ], [ %insn_addr.0.ph.i, %insn_cuid.exit ] + %tmp344.pn.in.in = getelementptr %struct.rtx_def* %insn.pn2, i32 0, i32 3 + %tmp344.pn.in = bitcast [1 x %struct.rtunion]* %tmp344.pn.in.in to i32* + %tmp341.pn = load i32** @uid_cuid + %tmp344.pn = load i32* %tmp344.pn.in + %iftmp.62.0.in = getelementptr i32* %tmp341.pn, i32 %tmp344.pn %iftmp.62.0 = load i32* %iftmp.62.0.in llvm-svn: 60325
OpenPOWER on IntegriCloud