summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Minor comment change.Johnny Chen2011-01-281-0/+5
| | | | llvm-svn: 124488
* My auto-simplifier noticed that ((X/Y)*Y)/Y occurs several times in SPECDuncan Sands2011-01-285-61/+235
| | | | | | | | | | | | | | | | | benchmarks, and that it can be simplified to X/Y. (In general you can only simplify (Z*Y)/Y to Z if the multiplication did not overflow; if Z has the form "X/Y" then this is the case). This patch implements that transform and moves some Div logic out of instcombine and into InstructionSimplify. Unfortunately instcombine gets in the way somewhat, since it likes to change (X/Y)*Y into X-(X rem Y), so I had to teach instcombine about this too. Finally, thanks to the NSW/NUW flags, sometimes we know directly that "Z*Y" does not overflow, because the flag says so, so I added that logic too. This eliminates a bunch of divisions and subtractions in 447.dealII, and has good effects on some other benchmarks too. It seems to have quite an effect on tramp3d-v4 but it's hard to say if it's good or bad because inlining decisions changed, resulting in massive changes all over. llvm-svn: 124487
* Fix libffi usage when it is on a custom path.Oscar Fuentes2011-01-281-9/+1
| | | | llvm-svn: 124486
* Add support for parsing .floatRoman Divacky2011-01-282-1/+4
| | | | llvm-svn: 124485
* Move all the cleanups framework code into a single file.John McCall2011-01-288-1661/+1710
| | | | | | Pure motion. llvm-svn: 124484
* Reorganize the value-dominance metaprogram and introduce a specializationJohn McCall2011-01-282-121/+119
| | | | | | for CodeGen's RValue type. llvm-svn: 124483
* Rename functions to follow coding standard. Also rejiggers comments. NoNick Lewycky2011-01-281-89/+88
| | | | | | functionality change. llvm-svn: 124482
* Convert the exception-freeing cleanup over to the conditional cleanups code,John McCall2011-01-285-150/+141
| | | | | | | | | fixing a crash which probably nobody was ever going to see. In doing so, fix a horrendous number of problems with the conditional-cleanups code. Also, make conditional cleanups re-use the cleanup's activation variable, which avoids some unfortunate repetitiveness. llvm-svn: 124481
* Add a doxygen comment for this class.Nick Lewycky2011-01-281-0/+2
| | | | llvm-svn: 124480
* Reorder for readability. (Chris, is this what you meant?)Nick Lewycky2011-01-281-148/+150
| | | | llvm-svn: 124479
* Revert r124462. There are a few big regressions that I need to fix first.Evan Cheng2011-01-2810-78/+32
| | | | llvm-svn: 124478
* PR9037: Allow override, final, and new as an extension on inline members.Nico Weber2011-01-287-7/+65
| | | | llvm-svn: 124477
* Not really any point to testing control flow in this test withoutJohn McCall2011-01-281-8/+1
| | | | | | ret duplication. llvm-svn: 124476
* Reduce the number of functions we look at in the first pass, and preallocateNick Lewycky2011-01-281-1/+3
| | | | | | the function equality set. llvm-svn: 124475
* Update exceptions.m for r124462.Eric Christopher2011-01-281-4/+7
| | | | llvm-svn: 124474
* Clean up the tests a little, make sure we match an instruction in the rightNick Lewycky2011-01-281-5/+4
| | | | | | test. llvm-svn: 124473
* Fix build with stdcxx by using llvm::next. Patch by Joerg Sonnenberger!Nick Lewycky2011-01-281-1/+2
| | | | llvm-svn: 124472
* Add a triple.Rafael Espindola2011-01-281-1/+1
| | | | llvm-svn: 124471
* Add missing include for ptrdiff_t. Patch by Joerg Sonnenberger!Nick Lewycky2011-01-281-0/+1
| | | | llvm-svn: 124470
* Fold select + select where both selects are on the same condition.Nick Lewycky2011-01-282-1/+29
| | | | llvm-svn: 124469
* Print the visibility of declarations.Rafael Espindola2011-01-282-1/+25
| | | | llvm-svn: 124468
* PR8951: Support for .equiv in integrated assembler, patch by Jörg Sonnenberger!Nico Weber2011-01-282-8/+21
| | | | llvm-svn: 124467
* Add emulate_sub_r7_ip_imm() (set frame pointer to some ip offset) and ↵Johnny Chen2011-01-281-0/+112
| | | | | | | | emulate_sub_ip_sp_imm() ( set ip to some stack offset) entries to the g_arm_opcodes table. llvm-svn: 124466
* Give OpaqueValueExpr a source location, because its source locationDouglas Gregor2011-01-2810-12/+34
| | | | | | | | might be queried in places where we absolutely require a valid location (e.g., for template instantiation). Fixes some major brokenness in the use of __is_convertible_to. llvm-svn: 124465
* Fix a little thinko in sending down the thread name to SetName.Jim Ingham2011-01-281-1/+1
| | | | llvm-svn: 124464
* The thread_info changes over the life of the thread, so you can't get it ↵Jim Ingham2011-01-281-4/+4
| | | | | | once and cache it, you have to fetch it every time you want to use it. llvm-svn: 124463
* - Stop simplifycfg from duplicating "ret" instructions into unconditionalEvan Cheng2011-01-2811-82/+78
| | | | | | | | branches. PR8575, rdar://5134905, rdar://8911460. - Allow codegen tail duplication to dup small return blocks after register allocation is done. llvm-svn: 124462
* Should provide more useful context info for the emulate_ldr_rd_pc_rel() impl.Johnny Chen2011-01-281-10/+9
| | | | | | The context being that it's a PC relative load. llvm-svn: 124460
* If the user specfies one of stdin, stdout or stderr, don'tCaroline Tice2011-01-281-4/+17
| | | | | | automatically set the non-specified ones to /dev/null. llvm-svn: 124459
* Fix PLD encoding.Evan Cheng2011-01-272-2/+60
| | | | llvm-svn: 124458
* Eliminate extraneous {};Douglas Gregor2011-01-271-2/+0
| | | | llvm-svn: 124456
* Allow elision of invocations of move constructors from temporary objects.Douglas Gregor2011-01-272-7/+4
| | | | llvm-svn: 124455
* Changed llvm-mc arm target to give an error if .syntax divided is used. SinceKevin Enderby2011-01-271-1/+1
| | | | | | only .syntax unified is supported. llvm-svn: 124454
* When producing IR for a lvalue-to-rvalue cast *as an lvalue*, onlyDouglas Gregor2011-01-272-2/+55
| | | | | | | | | non-class prvalues actually require the realization of a temporary. For everything else, we already have an lvalue (or class prvalue) in the subexpression. Note: we're missing some move elision in this case. I'll tackle that next. llvm-svn: 124453
* Updated getting started directions.Howard Hinnant2011-01-271-7/+36
| | | | llvm-svn: 124452
* Fix an objective-c rewriter bug rewriting a __block Fariborz Jahanian2011-01-272-5/+24
| | | | | | | variable declaration of a struct declared type. // rdar://8918702 llvm-svn: 124451
* Fix a comment typo.Bob Wilson2011-01-271-1/+1
| | | | llvm-svn: 124450
* Use the paths to libffi's header and library even when no customOscar Fuentes2011-01-271-6/+10
| | | | | | location was stated with FFI_INCLUDE_DIR/FFI_LIBRARY_DIR. llvm-svn: 124449
* Add emulate_ldr_rd_pc_rel entry to the g_thumb_opcodes table, which represents aJohnny Chen2011-01-272-4/+73
| | | | | | | PC relative immediate load into register, possibly followed by an add operation to adjust the SP. llvm-svn: 124448
* [AVX] Clean up the code to configure target lowering for AVX. SpecifyDavid Greene2011-01-271-73/+47
| | | | | | | how to lower more/new operations. This is a prerequisite for adding additional AVX lowering. llvm-svn: 124447
* Teach the evaluation of the __is_convertible_to trait to translateDouglas Gregor2011-01-275-39/+122
| | | | | | | | | | | | | | | access control errors into SFINAE errors, so that the trait provides enough support to implement the C++0x std::is_convertible type trait. To get there, the SFINAETrap now knows how to set up a SFINAE context independent of any template instantiations or template argument deduction steps, and (separately) can set a Sema flag to translate access control errors into SFINAE errors. The latter can also be useful if we decide that access control errors during template argument deduction should cause substitution failure (rather than a hard error) as has been proposed for C++0x. llvm-svn: 124446
* Adjust casing of attributes in examples.Ted Kremenek2011-01-271-2/+2
| | | | llvm-svn: 124445
* Remove a temporary workaround for a lencod miscompile. Depends on the fix in ↵Andrew Trick2011-01-271-2/+0
| | | | | | r124442. llvm-svn: 124443
* VirtRegRewriter fix: update kill flags, which are used by the scavenger.Andrew Trick2011-01-271-64/+88
| | | | | | | | | | | | | | | | | | | | | | | rdar://problem/8893967: JM/lencod miscompile at -arch armv7 -mthumb -O3 Added ResurrectKill to remove kill flags after we decide to reused a physical register. And (hopefully) ensure that we call it in all the right places. Sorry, I'm not checking in a unit test given that it's a miscompile I can't reproduce easily with a toy example. Failures in the rewriter depend on a series of heuristic decisions maked during one of the many upstream phases in codegen. This case would require coercing regalloc to generate a couple of rematerialzations in a way that causes the scavenger to reuse the same register at just the wrong point. The general way to test this is to implement kill flags verification. Then we could have a simple, robust compile-only unit test. That would be worth doing if the whole pass was not about to disappear. At this point we focus verification work on the next generation of regalloc. llvm-svn: 124442
* Separate the access-control diagnostics from other diagnostics that do not ↵Douglas Gregor2011-01-2712-36/+50
| | | | | | have SFINAE behavior. llvm-svn: 124441
* Clang: separate the access-control diagnostics from other diagnostics that ↵Douglas Gregor2011-01-271-1/+7
| | | | | | do not have SFINAE behavior. llvm-svn: 124440
* updated buildit to work with recent clang updatesHoward Hinnant2011-01-271-1/+3
| | | | llvm-svn: 124432
* clang found a missing return statement.Howard Hinnant2011-01-271-0/+1
| | | | llvm-svn: 124431
* Make forward_list splice_after and merge work for lvalue listsHoward Hinnant2011-01-271-22/+49
| | | | llvm-svn: 124430
* Reverted previous fix to is_convertible as it caused more problems than it ↵Howard Hinnant2011-01-271-0/+15
| | | | | | fixed. But this reverted fix will only matter for non-clang compilers. Installed __is_convertible_to for clang. llvm-svn: 124429
OpenPOWER on IntegriCloud