summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* many cleanups to the pow optimizer. Allow it to handle powf,Chris Lattner2008-04-091-34/+50
| | | | | | | add support for pow(x, 2.0) -> x*x. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49411 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename -disable-required-unwind-tables to unwind-tables-optional.Dale Johannesen2008-04-081-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49389 91177308-0d34-0410-b5e6-96231b3b80d8
* Convenience method for setting the nounwindDuncan Sands2008-04-081-0/+9
| | | | | | | attribute for a function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49373 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix insert point handling for multiple return values.Devang Patel2008-04-081-4/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49367 91177308-0d34-0410-b5e6-96231b3b80d8
* Handle the situation in 2008-01-25-EmptyFunction.llDale Johannesen2008-04-081-10/+11
| | | | | | | | correctly when unwind info is being generated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49366 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement new llc flag -disable-required-unwind-tables.Dale Johannesen2008-04-084-5/+19
| | | | | | | | Corresponds to -fno-unwind-tables (usually default in gcc). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49361 91177308-0d34-0410-b5e6-96231b3b80d8
* Make getDirnameSep a static method (not part of Path's interface).Ted Kremenek2008-04-073-3/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49354 91177308-0d34-0410-b5e6-96231b3b80d8
* Added method Path::getDirname().Ted Kremenek2008-04-073-2/+45
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49352 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename MemOperand to MachineMemOperand. This was suggested byDan Gohman2008-04-075-16/+17
| | | | | | | | review feedback from Chris quite a while ago. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49348 91177308-0d34-0410-b5e6-96231b3b80d8
* Add operator= implementations to SparseBitVector, allowing it to be used in ↵Owen Anderson2008-04-071-16/+8
| | | | | | | | | | GVN. This results in both time and memory savings for GVN. For example, one testcase went from 10.5s to 6s with this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49345 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR 2169.Daniel Berlin2008-04-071-0/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49339 91177308-0d34-0410-b5e6-96231b3b80d8
* Use Intrinsic::getDeclaration in more places.Duncan Sands2008-04-072-22/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49338 91177308-0d34-0410-b5e6-96231b3b80d8
* The "stacksave is not nounwind problem" no longerDuncan Sands2008-04-071-8/+3
| | | | | | | | | | needs to be fixed here - a previous commit made sure that intrinsics always get the right attributes. So remove no-longer needed code, and while there use Intrinsic::getDeclaration rather than getOrInsertFunction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49337 91177308-0d34-0410-b5e6-96231b3b80d8
* Use Intrinsic::getDeclaration to get hold ofDuncan Sands2008-04-071-7/+8
| | | | | | | | intrinsics. Fix up the argument type (should be i8*, was an array*). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49336 91177308-0d34-0410-b5e6-96231b3b80d8
* Make sure that intrinsics automagically get theDuncan Sands2008-04-072-3/+9
| | | | | | | | right parameter attributes no matter how they are obtained. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49335 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-commit of the r48822, where the infinite looping problem discoveredRoman Levenstein2008-04-079-117/+131
| | | | | | | | by Dan Gohman is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49330 91177308-0d34-0410-b5e6-96231b3b80d8
* Make GVN more memory efficient, particularly on code that contains a large ↵Owen Anderson2008-04-071-1/+15
| | | | | | | | | number of allocations, which GVN can't optimize anyways. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49329 91177308-0d34-0410-b5e6-96231b3b80d8
* Mark calls to llvm.stacksave, llvm.stackrestore asDale Johannesen2008-04-071-1/+4
| | | | | | | | | | nounwind. When such calls are inlined into something else that is invoked, they were getting changed to invokes, which is badness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49299 91177308-0d34-0410-b5e6-96231b3b80d8
* regenerateGabor Greif2008-04-063-4989/+3649
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49293 91177308-0d34-0410-b5e6-96231b3b80d8
* fix warnings with assertions disabled.Chris Lattner2008-04-061-21/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49285 91177308-0d34-0410-b5e6-96231b3b80d8
* Silence warning when no assertions.Chris Lattner2008-04-061-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49284 91177308-0d34-0410-b5e6-96231b3b80d8
* silence a warning when assertions are disabled.Chris Lattner2008-04-061-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49283 91177308-0d34-0410-b5e6-96231b3b80d8
* fix a warningGabor Greif2008-04-061-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49282 91177308-0d34-0410-b5e6-96231b3b80d8
* Prefer to expand mask for xor to -1, so we have a chance to turn it into a not.Torok Edwin2008-04-061-4/+19
| | | | | | | | If it cannot be expanded, it will keep the old behaviour and try to shrink the constant. Part of enhancement for PR2191. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49280 91177308-0d34-0410-b5e6-96231b3b80d8
* API changes for class Use size reduction, wave 1.Gabor Greif2008-04-0656-571/+621
| | | | | | | | | Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
* disable this for now.Chris Lattner2008-04-051-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49248 91177308-0d34-0410-b5e6-96231b3b80d8
* 1. IMPLICIT_DEF can *re-define* any register.Evan Cheng2008-04-051-2/+42
| | | | | | | | 2. Coalescer can now create an interesting situation where a register def can reaches itself without being killed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49246 91177308-0d34-0410-b5e6-96231b3b80d8
* Favors pshufd over shufps when shuffling elements from one vector. pshufd is ↵Evan Cheng2008-04-052-48/+52
| | | | | | faster than shufps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49244 91177308-0d34-0410-b5e6-96231b3b80d8
* Make sure both PendingLoads and PendingExports are flushedDale Johannesen2008-04-041-1/+4
| | | | | | | | | | | | before an invoke. Failure to do this causes references in the landing pad to variables that were not set. Fixes g++.dg/eh/delayslot1.C g++.dg/eh/fp-regs.C g++.old-deja/g++.brendan/eh1.C git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49243 91177308-0d34-0410-b5e6-96231b3b80d8
* strdup needs <cstring>. This fixes a build error with g++-4.3.Torok Edwin2008-04-041-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49218 91177308-0d34-0410-b5e6-96231b3b80d8
* Provide an initial cut at exposing JIT compiled symbols to performanceChris Lattner2008-04-041-1/+139
| | | | | | | | tools. This is currently only enabled on the mac, but could easily be supported by other hosts that are interested. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49207 91177308-0d34-0410-b5e6-96231b3b80d8
* Make ExecutionEngine::updateGlobalMapping return the old mapping.Chris Lattner2008-04-041-5/+18
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49206 91177308-0d34-0410-b5e6-96231b3b80d8
* Undo PHI elimination copy placement patch. This causes coalescing ↵Evan Cheng2008-04-041-30/+1
| | | | | | (performace) issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49198 91177308-0d34-0410-b5e6-96231b3b80d8
* This is done.Evan Cheng2008-04-041-4/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49197 91177308-0d34-0410-b5e6-96231b3b80d8
* if some functions don't have debug info, we were outputing the same label at ↵Andrew Lenharth2008-04-031-2/+5
| | | | | | the start of each of those functions. This makes assemblers unhappy git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49176 91177308-0d34-0410-b5e6-96231b3b80d8
* - Turn copies of implicit_def into implicit_def instructions.Evan Cheng2008-04-032-6/+71
| | | | | | | - Be smarter about coalescing copies from implicit_def. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49168 91177308-0d34-0410-b5e6-96231b3b80d8
* Special handling of zero-sized live intervals.Evan Cheng2008-04-031-5/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49167 91177308-0d34-0410-b5e6-96231b3b80d8
* - Treat a live range defined by an implicit_def as a zero-sized one.Evan Cheng2008-04-031-2/+28
| | | | | | | - Eliminate an implicit_def when it's being spilled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49166 91177308-0d34-0410-b5e6-96231b3b80d8
* - PHI elimination also eliminates implicit_def that fits into a PHI node ↵Evan Cheng2008-04-031-42/+84
| | | | | | | | | rather than copying it. - Be (slightly) smarter about where to place the copies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49165 91177308-0d34-0410-b5e6-96231b3b80d8
* Start of a series of patches related to implicit_def.Evan Cheng2008-04-031-37/+70
| | | | | | | There is no point in creating a long live range defined by an implicit_def. Scheduler now duplicates implicit_def instruction for each of its uses. Therefore, if an implicit_def node has multiple uses, it will become a number of very short live ranges, rather than a long one. This will make coalescer's job easier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49164 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-implemented Path::createDirectoryOnDisk (for Unix).Ted Kremenek2008-04-031-32/+39
| | | | | | | | | | | | | | | | | | | | | | | | | This method allows one to create a directory, and optionally create all parent directories that do not exist. The original implementation would require that *all* directories along a path are writable by the user, including directories that already exist. For example, suppose we wanted to create the directory "/tmp/foo/bar", and the directory "/tmp" already exists, but not "/tmp/foo". Since "/tmp" is writable by all users, the original implementation would work, and create "/tmp/foo", followed by "/tmp/bar". A problem occurred, however if one wanted to created the directory "/Users/myuser/bar" (or equivalently "/home/myuser/bar"), and "/Users/myuser" already existed and is writable by the current user. The directory "/User/myuser" is writable by the user, but "/User" is not. The original implementation of createDirectoryOnDisk would return with failure since "/User" is not writable, even though "/User/mysuser" is writable. The new implementation works by recursively creating parents as needed, and thus doesn't need to check the permissions on every directory in a path. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49162 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-enable SSE4.Evan Cheng2008-04-031-3/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49158 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix x86-64 encoding bug. REX prefix must always follow 0x0F prefix. For ↵Evan Cheng2008-04-031-10/+13
| | | | | | example, extractps in 64bit mode: 66 REX 0F 3A 17, not 66 0F 3A REX 17. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49157 91177308-0d34-0410-b5e6-96231b3b80d8
* CosmeticEvan Cheng2008-04-031-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49156 91177308-0d34-0410-b5e6-96231b3b80d8
* Temporarily disabling SSE4 until we fix the encoding issues.Evan Cheng2008-04-031-2/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49129 91177308-0d34-0410-b5e6-96231b3b80d8
* Backing out 48222 temporarily.Evan Cheng2008-04-039-145/+116
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49124 91177308-0d34-0410-b5e6-96231b3b80d8
* Suppress the 128-bit integer typedef on 32-bit targets, becauseDan Gohman2008-04-021-6/+12
| | | | | | | it causes compile errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49122 91177308-0d34-0410-b5e6-96231b3b80d8
* Make EH work with unnamed functions. Reenable runningDale Johannesen2008-04-021-2/+4
| | | | | | | | StripSymbols when EH is on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49110 91177308-0d34-0410-b5e6-96231b3b80d8
* Partial CBackend support for 128-bit integers. This is neededDan Gohman2008-04-021-2/+9
| | | | | | | | now that llvm-gcc is lowering appropriately-sized struct returns to i128 on x86-64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49109 91177308-0d34-0410-b5e6-96231b3b80d8
* Iterators folloring a SmallVector erased element are invalidated soDavid Greene2008-04-021-6/+4
| | | | | | | | | don't access cached iterators from after the erased element. Re-apply 49056 with SmallVector support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49106 91177308-0d34-0410-b5e6-96231b3b80d8