summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Simplify this class by removing the result cache.Gabor Greif2009-12-111-17/+13
| | | | | | | | | | | | | | | | | | | | | | This change removes the DefaultConstructible and CopyAssignable constraints on the template parameter T (the first one). The second template parameter (R) is defaulted to be identical to the first and controls the result type. By specifying it to be (const T&) additionally the CopyConstructible constraint on T can be removed. This allows to use StringSwitch e.g. for llvm::Constant instances. Regarding the other review feedback regarding performance because of taking pointers, this class should be completely optimizable like before, since all methods are inline and the pointer dereferencing and result value caching should be possible behind the scenes by the "as-if" rule. llvm-svn: 91123
* Revert part of r91101 which was causing an infinite loop in the self-hostingBill Wendling2009-12-111-3/+8
| | | | | | build bots. llvm-svn: 91113
* Add utility method for determining whether a function argumentDuncan Sands2009-12-112-0/+11
| | | | | | has the 'nest' attribute. llvm-svn: 91109
* Tests for 91103 and 91104.Evan Cheng2009-12-111-0/+93
| | | | llvm-svn: 91105
* Add support to 3-addressify 16-bit instructions.Evan Cheng2009-12-112-88/+135
| | | | llvm-svn: 91104
* Coalesce insert_subreg undef, x first to avoid phase ordering issue.Evan Cheng2009-12-112-5/+20
| | | | llvm-svn: 91103
* Address comments on last patch:Bill Wendling2009-12-112-16/+11
| | | | | | | | - Loosen the restrictions when checking of it branches to a landing pad. - Make the loop more efficient by checking the '.insert' return value. - Do cheaper checks first. llvm-svn: 91101
* A machine basic block may end in an unconditional branch, however it may haveBill Wendling2009-12-112-7/+41
| | | | | | | | | | | | | more than one successor. Normally, these extra successors are dead. However, some of them may branch to exception handling landing pads. If we remove those successors, then the landing pads could go away if all predecessors to it are removed. Before, it was checking if the direct successor was the landing pad. But it could be the result of jumping through multiple basic blocks to get to it. If we were to only check for the existence of an EH_LABEL in the basic block and not remove successors if it's in there, then it could stop actually dead basic blocks from being removed. llvm-svn: 91092
* Rough first pass at compare_and_swap atomic builtins for ARM mode. Work in ↵Jim Grosbach2009-12-115-0/+152
| | | | | | progress. llvm-svn: 91090
* Add qualifiers for calls to member functions in dependent bases.Anders Carlsson2009-12-111-2/+2
| | | | llvm-svn: 91087
* If VariableDIe is not created (may be because global was optimzed away) then ↵Devang Patel2009-12-101-0/+2
| | | | | | do not try to use the variable die. llvm-svn: 91077
* Add a test for the fix in revision 91009.Eric Christopher2009-12-101-0/+20
| | | | llvm-svn: 91062
* It's not safe to coalesce a move where src and dst registers have different ↵Evan Cheng2009-12-102-1/+47
| | | | | | | | subregister indices. e.g.: %reg16404:1<def> = MOV8rr %reg16412:2<kill> llvm-svn: 91061
* Remove a broken, unused headerDouglas Gregor2009-12-101-108/+0
| | | | llvm-svn: 91058
* Refactor code that finds context for a given die.Devang Patel2009-12-102-42/+24
| | | | | | Create global variable DIEs after creating subprogram DIEs. This allows function level static variable's to find their context at the time of DIE creation. llvm-svn: 91055
* Add instruction encoding for DMB/DSBJim Grosbach2009-12-101-3/+11
| | | | llvm-svn: 91053
* Refactor.Devang Patel2009-12-102-20/+39
| | | | llvm-svn: 91051
* Also attempt trivial coalescing for live intervals that end in a copy.Jakob Stoklund Olesen2009-12-103-78/+118
| | | | | | | | | | | | | | | The coalescer is supposed to clean these up, but when setting up parameters for a function call, there may be copies to physregs. If the defining instruction has been LICM'ed far away, the coalescer won't touch it. The register allocation hint does not always work - when the register allocator is backtracking, it clears the hints. This patch is more conservative than r90502, and does not break 483.xalancbmk/i686. It still breaks the PowerPC bootstrap, so it is disabled by default, and can be enabled with the -trivial-coalesce-ends option. llvm-svn: 91049
* Comparing std::string with NULL is a bad idea, so just check whether its empty.Torok Edwin2009-12-101-1/+1
| | | | | | | This code was crashing always with oprofile enabled, since it tried to create a StringRef out of NULL, which run strlen on NULL. llvm-svn: 91046
* Make sure the immediate dominator isn't NULL through iterationsEric Christopher2009-12-101-5/+6
| | | | | | | of the loop. We could get to this condition via indirect branches. llvm-svn: 91009
* Fix PR5744, a case where we were getting the pointer size instead of theChris Lattner2009-12-102-1/+17
| | | | | | | | value size. This only manifested when memdep inprecisely returns clobber, which is do to a caching issue in the PR5744 testcase. We can 'efficiently emulate' this by using '-no-aa' llvm-svn: 91004
* Add memory barrier intrinsic support for ARM. Moving towards adding the ↵Jim Grosbach2009-12-103-1/+49
| | | | | | atomic operations intrinsics. llvm-svn: 91003
* allow this to build when the #if 0's are enabled. No functionality change.Chris Lattner2009-12-101-6/+2
| | | | llvm-svn: 90999
* Dereference loopHeader after checking for null rather than before.Dan Gohman2009-12-091-1/+2
| | | | llvm-svn: 90990
* Fix test.Evan Cheng2009-12-091-1/+1
| | | | llvm-svn: 90988
* Optimize splat of a scalar load into a shuffle of a vector load when it's ↵Evan Cheng2009-12-094-4/+136
| | | | | | | | | | | | legal. e.g. vector_shuffle (scalar_to_vector (i32 load (ptr + 4))), undef, <0, 0, 0, 0> => vector_shuffle (v4i32 load ptr), undef, <1, 1, 1, 1> iff ptr is 16-byte aligned (or can be made into 16-byte aligned). llvm-svn: 90984
* Reuse the Threshold value to size these containers because it'sDan Gohman2009-12-091-2/+2
| | | | | | currently somewhat convenient for them to have the same value. llvm-svn: 90980
* Reapply r90858, a cleanup patch.Devang Patel2009-12-092-166/+81
| | | | llvm-svn: 90979
* fix hte last remaining known (by me) phi translation bug. When we reanalyzeChris Lattner2009-12-092-10/+25
| | | | | | | clobbers to forward pieces of large stores to small loads, we need to consider the properly phi translated pointer in the store block. llvm-svn: 90978
* change GetStoreValueForLoad to use IRBuilder, which is cleaner andChris Lattner2009-12-091-7/+7
| | | | | | implicitly constant folds. llvm-svn: 90977
* Fix a comment.Bob Wilson2009-12-091-1/+1
| | | | llvm-svn: 90975
* Add a minor optimization: if we haven't changed the operands of anChris Lattner2009-12-092-66/+4
| | | | | | | | | | add, there is no need to scan the world to find the same add again. This invalidates the previous testcase, which wasn't wonderful anyway, because it needed a run of instcombine to permute the use-lists in just the right way to before GVN was run (so it was really fragile). Not a big loss. llvm-svn: 90973
* Add note about loadable modules on windows.Anton Korobeynikov2009-12-091-1/+5
| | | | | | Patch by Gregory Petrosyan! llvm-svn: 90972
* fix PR5733, a case where we'd replace an add with a lexically identical Chris Lattner2009-12-092-1/+68
| | | | | | binary operator that wasn't an add. In this case, a xor. Whoops. llvm-svn: 90971
* <rdar://problem/7453528>. Track only physical registers that are valid for ↵David Goodwin2009-12-094-17/+28
| | | | | | the target. llvm-svn: 90970
* merge crash-2.ll into crash.llChris Lattner2009-12-092-43/+43
| | | | llvm-svn: 90969
* Silence conversion warning from 64 to 32-bit.Eric Christopher2009-12-091-1/+1
| | | | llvm-svn: 90962
* change AnalyzeLoadFromClobberingMemInst/AnalyzeLoadFromClobberingStoreChris Lattner2009-12-091-13/+22
| | | | | | to require the load ty/ptr to be passed in, no functionality change. llvm-svn: 90960
* change AnalyzeLoadFromClobberingWrite and clients to pass in type Chris Lattner2009-12-091-10/+12
| | | | | | and pointer instead of the load. No functionality change. llvm-svn: 90959
* enhance NonLocalDepEntry to keep the per-block phi translated addressChris Lattner2009-12-092-20/+41
| | | | | | of the query. llvm-svn: 90958
* DeltaAlgorithm: Add a virtual destructor and home.Daniel Dunbar2009-12-092-0/+5
| | | | llvm-svn: 90957
* change NonLocalDepEntry from being a typedef for an std::pair to be itsChris Lattner2009-12-093-64/+84
| | | | | | own small class. No functionality change. llvm-svn: 90956
* Added a new "splitting" spiller.Lang Hames2009-12-096-22/+343
| | | | | | | | | | | | | When a call is placed to spill an interval this spiller will first try to break the interval up into its component values. Single value intervals and intervals which have already been split (or are the result of previous splits) are spilled by the default spiller. Splitting intervals as described above may improve the performance of generated code in some circumstances. This work is experimental however, and it still miscompiles many benchmarks. It's not recommended for general use yet. llvm-svn: 90951
* Remove spurious extern.Daniel Dunbar2009-12-091-1/+1
| | | | llvm-svn: 90937
* Remove unneeded ';' and a class/struct mismatch (noticed by clang).Daniel Dunbar2009-12-094-4/+4
| | | | llvm-svn: 90934
* the code in GVN that tries to forward large loads to small Chris Lattner2009-12-091-0/+54
| | | | | | | | stores is not phi translating, thus it miscompiles really crazy testcases. This is from inspection, I haven't seen this in the wild. llvm-svn: 90930
* add some aborts to #if 0's.Chris Lattner2009-12-091-0/+2
| | | | llvm-svn: 90929
* Switch GVN and memdep to use PHITransAddr, which correctly handlesChris Lattner2009-12-094-345/+108
| | | | | | | | | | | | | | | | | | | | | | | phi translation of complex expressions like &A[i+1]. This has the following benefits: 1. The phi translation logic is all contained in its own class with a strong interface and verification that it is self consistent. 2. The logic is more correct than before. Previously, if intermediate expressions got PHI translated, we'd miss the update and scan for the wrong pointers in predecessor blocks. @phi_trans2 is a testcase for this. 3. We have a lot less code in memdep. We can handle phi translation across blocks of things like @phi_trans3, which is pretty insane :). This patch should fix the miscompiles of 255.vortex, and I tested it with a bootstrap of llvm-gcc, llvm-test and dejagnu of course. llvm-svn: 90926
* Teach InferPtrAlignment to infer GV+cst alignment and use it to simplify x86 ↵Evan Cheng2009-12-093-14/+10
| | | | | | isl lowering code. llvm-svn: 90925
* Remove tests that are not suitable anymore. Plus they are not testing the ↵Devang Patel2009-12-098-1035/+0
| | | | | | original bugfixes anymore. These tests were inserted to check bug fixes in code that handled debug info intrinsics. These intrinsics are no longer used and now llvm parser simply ignores old .dbg intrinsics from these dead tests. llvm-svn: 90923
OpenPOWER on IntegriCloud