summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Model vst lane instructions with REG_SEQUENCE.Evan Cheng2010-05-161-7/+75
| | | | llvm-svn: 103898
* Avoid renaming loadable modules at install time. Now the gold plugin is namedRafael Espindola2010-05-162-1/+6
| | | | | | LLVMgold.so both in both the build and install directories. llvm-svn: 103897
* Use $ORIGIN in the rpath of libraries.Rafael Espindola2010-05-161-0/+4
| | | | llvm-svn: 103896
* Emit a type record for TYPE_OBJC_OBJECT in the PCH file. I'm notJohn McCall2010-05-161-0/+1
| | | | | | entirely sure what this does, to be honest. llvm-svn: 103895
* Be sure to initialize the "has base type as written" field of anJohn McCall2010-05-161-3/+4
| | | | | | | ObjCObjectTypeLoc. This should clear up some valgrind errors we've been seeing. llvm-svn: 103894
* Avoid doing two switches in TypeLoc's initialize() loop. The optimizerJohn McCall2010-05-161-3/+14
| | | | | | | can probably do this for us, but it's actually somewhat nicer to write it out here. llvm-svn: 103893
* When initializing thread-safe statics, put the call toDouglas Gregor2010-05-164-19/+102
| | | | | | | | | | | | | __cxa_guard_abort along the exceptional edge into (in effect) a nested "try" that rethrows after aborting. Fixes PR7144 and the remaining Boost.ProgramOptions failures, along with the regressions that r103880 caused. The crucial difference between this and r103880 is that we now follow LLVM's little dance with the llvm.eh.exception and llvm.eh.selector calls, then use _Unwind_Resume_or_Rethrow to rethrow. llvm-svn: 103892
* [rand.dist.pois.weibull]Howard Hinnant2010-05-1619-1/+880
| | | | llvm-svn: 103891
* Revert r103880 (thread-safe static initialization w/ exceptions),Douglas Gregor2010-05-164-68/+20
| | | | | | because it's causing strange linker errors. Unfixes PR7144. llvm-svn: 103890
* Minor twik to my last patch. (for radar 7986354).Fariborz Jahanian2010-05-161-2/+2
| | | | llvm-svn: 103889
* [rand.dist.norm.chisq]Howard Hinnant2010-05-1522-1/+886
| | | | llvm-svn: 103888
* Fix API gen for objc_msgSend property of aggregate typesFariborz Jahanian2010-05-152-7/+21
| | | | | | in Objective-c++ mode. Fixes radar 7986354. llvm-svn: 103887
* Revisited [rand.dist.bern.bin] and [rand.dist.pois.poisson] with better ↵Howard Hinnant2010-05-157-353/+736
| | | | | | algorithms llvm-svn: 103886
* Fix uint64->{float, double} conversion to do rounding correctly in 32-bit.Dale Johannesen2010-05-152-24/+76
| | | | | | | | | | | | | | | | | The implementation in LegalizeIntegerTypes to handle this as sint64->float + appropriate power of 2 is subject to double rounding, considered incorrect by numerics people. Use this implementation only when it is safe. This leads to using library calls in some cases that produced inline code before, but it's correct now. (EVTToAPFloatSemantics belongs somewhere else, any suggestions?) Add a correctly rounding (though not particularly fast) conversion that uses X87 80-bit computations for x86-32. 7885399, 5901940. This shows up in gcc.c-torture/execute/ieee/rbug.c in the gcc testsuite on some platforms. llvm-svn: 103883
* Improve assertion messages.Dale Johannesen2010-05-151-3/+8
| | | | llvm-svn: 103882
* Some cheap DAG combine goodness for multiplication with a particular constant.Anton Korobeynikov2010-05-152-4/+101
| | | | | | This can be extended later on to handle more "complex" constants. llvm-svn: 103881
* When initializing thread-safe statics, put the call toDouglas Gregor2010-05-154-20/+68
| | | | | | | | __cxa_guard_abort along the exceptional edge into (in effect) a nested "try" that rethrows after aborting. Fixes PR7144 and the remaining Boost.ProgramOptions failures. llvm-svn: 103880
* Attempt to satisfy Release-Asserts buildDouglas Gregor2010-05-151-3/+0
| | | | llvm-svn: 103879
* "trap" pseudo-op turned out to be apple-local.Anton Korobeynikov2010-05-152-2/+8
| | | | | | Temporary emit it as raw bytes until it will be added to binutils as well. llvm-svn: 103878
* improve portability to systems that don't have round, patch byChris Lattner2010-05-152-4/+6
| | | | | | Evzen Muller! llvm-svn: 103877
* improve portability to systems that don't have powf/modf (e.g. solaris 9)Chris Lattner2010-05-154-5/+5
| | | | | | patch by Evzen Muller! llvm-svn: 103876
* Modify this comment per Doug's suggestion: we don't need to mangle protocols.John McCall2010-05-151-2/+2
| | | | llvm-svn: 103875
* sighChris Lattner2010-05-151-1/+1
| | | | llvm-svn: 103874
* fix _mm_shuffle_pd too, thanks to Joel Falcou for pointing this out.Chris Lattner2010-05-152-3/+4
| | | | llvm-svn: 103873
* When applying the named return value optimization, we still need toDouglas Gregor2010-05-152-2/+18
| | | | | | | destroy the variable along the exceptional edge; it's only during normal execution that we avoid destroying this variable. llvm-svn: 103872
* Substantially alter the design of the Objective C type AST by introducingJohn McCall2010-05-1544-623/+747
| | | | | | | | | | | | | | | | | | | | | ObjCObjectType, which is basically just a pair of one of {primitive-id, primitive-Class, user-defined @class} with a list of protocols. An ObjCObjectPointerType is therefore just a pointer which always points to one of these types (possibly sugared). ObjCInterfaceType is now just a kind of ObjCObjectType which happens to not carry any protocols. Alter a rather large number of use sites to use ObjCObjectType instead of ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather than hashing them in a FoldingSet. Remove some number of methods that are no longer used, at least after this patch. By simplifying ObjCObjectPointerType, we are now able to easily remove and apply pointers to Objective-C types, which is crucial for a certain kind of ObjC++ metaprogramming common in WebKit. llvm-svn: 103870
* Fix an GCC warning that seems to have actually caught a bug (!!!) inChandler Carruth2010-05-151-2/+2
| | | | | | | | a condition's grouping. Every other use of Allocatable.test(Hint) groups it the same way as it is indented, so move the parentheses to agree with that grouping. llvm-svn: 103869
* Model 128-bit vld lane with REG_SEQUENCE.Evan Cheng2010-05-151-19/+44
| | | | llvm-svn: 103868
* Implement a simple form of the C++ named return value optimization forDouglas Gregor2010-05-154-24/+99
| | | | | | | | | return statements. We perform NRVO only when all of the return statements in the function return the same variable. Fixes some link failures in Boost.Interprocess (which is relying on NRVO), and probably improves performance for some C++ applications. llvm-svn: 103867
* Calculate liveness on the fly for local registers.Jakob Stoklund Olesen2010-05-151-0/+31
| | | | | | | | When working top-down in a basic block, substituting physregs for virtregs, the use-def chains are kept up to date. That means we can recognize a virtreg kill by the use-def chain becoming empty. This makes the fast allocator independent of incoming kill flags. llvm-svn: 103866
* Implement semantic analysis and an AST representation for the namedDouglas Gregor2010-05-1511-80/+187
| | | | | | | | | | | | return value optimization. Sema marks return statements with their NRVO candidates (which may or may not end up using the NRVO), then, at the end of a function body, computes and marks those variables that can be allocated into the return slot. I've checked this locally with some debugging statements (not committed), but there won't be any tests until CodeGen comes along. llvm-svn: 103865
* add type casts to _mm_shuffle_ps so the front-end appliesChris Lattner2010-05-151-1/+2
| | | | | | | implicit conversions where needed. This fixes an error reported on cfe-dev, not really worth a testcase though. llvm-svn: 103864
* Teach the always inliner to release its inline cost estimates, like the basicNick Lewycky2010-05-151-0/+3
| | | | | | | inliner did in r103653. Why does the always inliner even bother with cost estimates anyways? llvm-svn: 103858
* Clean up, no functional change.Nick Lewycky2010-05-151-9/+9
| | | | llvm-svn: 103857
* Add reg_nodbg_iteratorJakob Stoklund Olesen2010-05-151-0/+14
| | | | llvm-svn: 103856
* v4i64 and v8i64 are only synthesizable when NEON is available.Evan Cheng2010-05-151-4/+6
| | | | llvm-svn: 103855
* Allow TargetLowering::getRegClassFor() to be called on illegal types. AlsoEvan Cheng2010-05-154-9/+29
| | | | | | | allow target to override it in order to map register classes to illegal but synthesizable types. e.g. v4i64, v8i64 for ARM / NEON. llvm-svn: 103854
* <rdar://problem/7987491> Libcompiler_rt isn't platform awareNick Kledzik2010-05-151-0/+6
| | | | llvm-svn: 103852
* Model 64-bit lane vld with REG_SEQUENCE.Evan Cheng2010-05-151-6/+28
| | | | llvm-svn: 103851
* A partial re-def instruction may be a copy.Evan Cheng2010-05-151-1/+8
| | | | llvm-svn: 103850
* Recognize when the named return value optimization applies in aDouglas Gregor2010-05-158-74/+117
| | | | | | | | | | "return" statement and mark the corresponding CXXConstructExpr as elidable. Teach CodeGen that eliding a temporary is different from eliding an object construction. This is just a baby step toward NRVO. llvm-svn: 103849
* C++/ABI/x86_64: Member pointers should be classified as INTEGER.Daniel Dunbar2010-05-152-0/+13
| | | | llvm-svn: 103843
* C++/ABI/i386: Member function pointers should be passed by value.Daniel Dunbar2010-05-152-2/+12
| | | | llvm-svn: 103842
* Change install_name for libclang.dylib to '@rpath/libclang.dylib'. Fixes ↵Ted Kremenek2010-05-141-1/+1
| | | | | | <rdar://problem/7987039>. llvm-svn: 103837
* Teach two-address pass to do some coalescing while eliminating REG_SEQUENCEEvan Cheng2010-05-147-3/+204
| | | | | | | | | | | | | | | | | | | | | | | | | | instructions. e.g. %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1027<def> = EXTRACT_SUBREG %reg1026, 6 %reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5 ... %reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12 After REG_SEQUENCE is eliminated, we are left with: %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6 %reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5 The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger sub-register (or combined to be reg1026 itself as is the case here). If it is possible, it will be able to replace references of reg1026 with reg1029 + the larger sub-register index. llvm-svn: 103835
* Add some comments about undef.Dan Gohman2010-05-141-1/+6
| | | | llvm-svn: 103834
* Model VST*_UPD and VST*oddUPD pair with REG_SEQUENCE.Evan Cheng2010-05-141-25/+68
| | | | llvm-svn: 103833
* Fast ISel trivially coalesces away no-op casts, so check for this whenDan Gohman2010-05-141-4/+16
| | | | | | setting kill flags. llvm-svn: 103832
* Don't bother spilling before a returnJakob Stoklund Olesen2010-05-141-4/+13
| | | | llvm-svn: 103831
* RegAllocLocal can count copies tooJakob Stoklund Olesen2010-05-141-1/+4
| | | | llvm-svn: 103830
OpenPOWER on IntegriCloud