summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* lit: Don't use close_fds=True on Windows.Daniel Dunbar2009-09-221-1/+5
| | | | llvm-svn: 82521
* lit: When executing commands internally, perform PATH resolution ourselves.Daniel Dunbar2009-09-221-2/+23
| | | | llvm-svn: 82520
* Switch FoldingSet::AddString to StringRef based API.Daniel Dunbar2009-09-222-15/+5
| | | | | | - This also fixes a dereference of std::string::end, which makes MSVC unhappy and was causing all the static analyzer clang tests to fail. llvm-svn: 82517
* Workaround what I believe is an MSVC bug where it emits a definition for aDaniel Dunbar2009-09-221-0/+3
| | | | | | | | static const class member into each translation unit, with external linkage??? - If someone understands this issue better, please clue me in, I haven't consulted the standard yet. llvm-svn: 82516
* Switch DIDescriptor to use a TrackingVH. - This makes it much safer to work ↵Daniel Dunbar2009-09-222-4/+14
| | | | | | with debug info, since it was extraordinarily easy to have dangling pointers thanks to MDNode uniquing. llvm-svn: 82507
* Add a TrackingVH value handle.Daniel Dunbar2009-09-222-3/+99
| | | | | | | | | | This is designed for tracking a value even when it might move (like WeakVH), but it is an error to delete the referenced value (unlike WeakVH0. TrackingVH is templated like AssertingVH on the tracked Value subclass, it is an error to RAUW a tracked value to an incompatible type. For implementation reasons the latter error is only diagnosed on accesses to a mis-RAUWed TrackingVH, because we don't want a virtual interface in a templated class. The former error is also only diagnosed on access, so that clients are allowed to delete a tracked value, as long as they don't use it. This makes it easier for the client to reason about destruction. llvm-svn: 82506
* Fix a pasto. Also simplify for Bill's benefit.Evan Cheng2009-09-223-4/+6
| | | | llvm-svn: 82505
* Minor bug fix. LowerSubregs should translate Evan Cheng2009-09-221-0/+1
| | | | | | | | | | %S0<def> = EXTRACT_SUBREG %Q0<kill>, 1 to %S0<def> = IMPLICIT_DEF %Q0<imp-use,kill> Implicit_def does not *read* any register so the operand should be marked "implicit". The missing "implicit" marker on the operand is wrong, but it doesn't actually break anything. llvm-svn: 82503
* Fix PR5023: The instruction form of DominatorTree::dominates did not Chris Lattner2009-09-212-1/+31
| | | | | | | | | take into consideration that the result of an invoke is only valid in the normal dest, not the unwind dest. This caused 'PHINode::hasConstantValue' to return true in an invalid situation, causing mem2reg to delete a phi that was actually needed. This caused a crash building 483.xalancbmk. llvm-svn: 82491
* move DominatorTree::dominates for instructions out of line,Chris Lattner2009-09-212-24/+22
| | | | | | no functionality change. llvm-svn: 82490
* tidy upChris Lattner2009-09-211-18/+17
| | | | llvm-svn: 82489
* tidy upChris Lattner2009-09-211-7/+8
| | | | llvm-svn: 82488
* Clean up spill weight computation. Also some changes to give loop inductionEvan Cheng2009-09-219-68/+145
| | | | | | | | | | variable increment / decrement slighter high priority. This has major impact on some micro-benchmarks. On MultiSource/Applications and spec tests, it's a minor win. It also reduce 256.bzip instruction count by 8%, 55 on 164.gzip on i386 / Darwin. llvm-svn: 82485
* Add Cortex-A8 VFP model.David Goodwin2009-09-214-99/+370
| | | | llvm-svn: 82483
* Change MachineMemOperand's alignment value to be the alignment ofDan Gohman2009-09-215-9/+17
| | | | | | | the base pointer, without the offset. This matches MemSDNode's new alignment behavior, and holds more interesting information. llvm-svn: 82473
* Add a comment mentioning the rdar number associated with this test.Dan Gohman2009-09-211-0/+1
| | | | llvm-svn: 82471
* Add support for rematerializing FsFLD0SS and FsFLD0SD as constant-poolDan Gohman2009-09-213-16/+137
| | | | | | loads in order to reduce register pressure. llvm-svn: 82470
* Recognize SSE min and max opportunities in even more cases.Dan Gohman2009-09-213-41/+442
| | | | | | | | | | And fix a bug with the behavior of min/max instructions formed from fcmp uge comparisons. Also, use FiniteOnlyFPMath() for this code instead of UnsafeFPMath, as it is more specific. llvm-svn: 82466
* Fix the offset values for these memoperands. For frame objects, theDan Gohman2009-09-212-2/+2
| | | | | | | PseudoSourceValue already effectively represents the offset from the frame base, so the actual offset should not be added to it. llvm-svn: 82465
* big endian systems shift by bits too, hopefully this will fix the ppc Chris Lattner2009-09-211-1/+1
| | | | | | bootstrap problems. llvm-svn: 82464
* Nick pointed out that DominanceFrontier and DominanceTree are preservedDan Gohman2009-09-211-2/+0
| | | | | | by setPreservesCFG(). llvm-svn: 82463
* Remove the special-case for constants in PHI nodes; it's not reallyDan Gohman2009-09-211-3/+0
| | | | | | | helpful, and it didn't correctly handle the case of constants input to PHIs for backedges. llvm-svn: 82462
* fix PR5016, a crash I introduced in GVN handing first classChris Lattner2009-09-212-10/+52
| | | | | | arrays and structs, which cannot be bitcast to integers. llvm-svn: 82460
* Use raw_ostream::indent instead of passing strings.Mikhail Glushenkov2009-09-211-145/+163
| | | | llvm-svn: 82456
* Fix this assertion string to mention subreg_to_reg.Dan Gohman2009-09-211-2/+2
| | | | llvm-svn: 82455
* initialize SymbolsCanStartWithDigit to false by defaultNuno Lopes2009-09-211-1/+1
| | | | llvm-svn: 82454
* Update cmake.Xerxes Ranby2009-09-211-0/+1
| | | | llvm-svn: 82449
* Verify that phi instructions refer to MBBs in the CFG.Jakob Stoklund Olesen2009-09-211-7/+8
| | | | | | | The machine code verifier no longer tolerates phi instructions with noop operands. All MBBs on a phi instruction must be in the CFG. llvm-svn: 82448
* enable non-local analysis and PRE of large store -> little load.Chris Lattner2009-09-212-31/+117
| | | | | | | This doesn't kick in too much because of phi translation issues, but this can be resolved in the future. llvm-svn: 82447
* convert an std::pair to an explicit struct.Chris Lattner2009-09-211-17/+32
| | | | llvm-svn: 82446
* move some functions, add a comment.Chris Lattner2009-09-211-164/+165
| | | | llvm-svn: 82444
* split HandleLoadFromClobberingStore in two pieces: one that does theChris Lattner2009-09-211-21/+41
| | | | | | analysis, one that does the xform. llvm-svn: 82443
* add a noteChris Lattner2009-09-211-1/+14
| | | | llvm-svn: 82442
* Register the MachineModuleInfo for the ARM JIT, and update JITDwarfEmitter toDaniel Dunbar2009-09-212-1/+12
| | | | | | assert if the setModuleInfo hasn't been called. llvm-svn: 82441
* add pr#Chris Lattner2009-09-211-0/+1
| | | | llvm-svn: 82440
* Improve GVN to be able to forward substitute a small load Chris Lattner2009-09-212-7/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from a piece of a large store when both are in the same block. This allows clang to compile the testcase in PR4216 to this code: _test_bitfield: movl 4(%esp), %eax movl %eax, %ecx andl $-65536, %ecx orl $32962, %eax andl $40186, %eax orl %ecx, %eax ret This is not ideal, but is a whole lot better than the code produced by llvm-gcc: _test_bitfield: movw $-32574, %ax orw 4(%esp), %ax andw $-25350, %ax movw %ax, 4(%esp) movw 7(%esp), %cx shlw $8, %cx movzbl 6(%esp), %edx orw %cx, %dx movzwl %dx, %ecx shll $16, %ecx movzwl %ax, %eax orl %ecx, %eax ret and dramatically better than that produced by gcc 4.2: _test_bitfield: pushl %ebx call L3 "L00000000001$pb": L3: popl %ebx movl 8(%esp), %eax leal 0(,%eax,4), %edx sarb $7, %dl movl %eax, %ecx andl $7168, %ecx andl $-7201, %ebx movzbl %dl, %edx andl $1, %edx sall $5, %edx orl %ecx, %ebx orl %edx, %ebx andl $24, %eax andl $-58336, %ebx orl %eax, %ebx orl $32962, %ebx movl %ebx, %eax popl %ebx ret llvm-svn: 82439
* add a helper method.Chris Lattner2009-09-211-0/+12
| | | | llvm-svn: 82438
* Fix PR4986. "r1024 = insert_subreg r1024, undef, 2" cannot be turned in an ↵Evan Cheng2009-09-212-10/+57
| | | | | | implicit_def. Instead, it's an identity copy so it should be eliminated. Also make sure to update livevariable kill information. llvm-svn: 82436
* Don't allow formatted_ostream to be unbuffered, even if its underlying bufferDaniel Dunbar2009-09-211-1/+6
| | | | | | | | | | | | is. - The problem is that formatted_ostream forces its underlying buffer to be unbuffered, so if some client happens to wrap a formatted_ostream around something, but still use the underlying stream, then we can end up writing on a fully unbuffered output (which was never intended to be unbuffered). - This makes clang (and presumably llvm-gcc) -emit-llvm -S a mere 10x faster. llvm-svn: 82434
* one case handled, expanded another testcase inline.Chris Lattner2009-09-211-20/+16
| | | | llvm-svn: 82427
* formatting cleanups, no functionality change.Chris Lattner2009-09-211-118/+116
| | | | llvm-svn: 82426
* Add documentation on how to use enable debug information in the JIT and use ↵Reid Kleckner2009-09-212-0/+174
| | | | | | it with GDB. llvm-svn: 82425
* fix a FileCheck bug where:Chris Lattner2009-09-212-4/+3
| | | | | | | | | | ; CHECK: foo ; CHECK-NOT: foo ; CHECK: bar would always fail. llvm-svn: 82424
* Move ARM and X86 specific AsmParser tests into separate subdirectories, and onlyDaniel Dunbar2009-09-217-3/+11
| | | | | | run if appropriate target is supported. llvm-svn: 82419
* Implement the JIT side of the GDB JIT debugging interface. To enable thisReid Kleckner2009-09-2010-18/+405
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | feature, either build the JIT in debug mode to enable it by default or pass -jit-emit-debug to lli. Right now, the only debug information that this communicates to GDB is call frame information, since it's already being generated to support exceptions in the JIT. Eventually, when DWARF generation isn't tied so tightly to AsmPrinter, it will be easy to push that information to GDB through this interface. Here's a step-by-step breakdown of how the feature works: - The JIT generates the machine code and DWARF call frame info (.eh_frame/.debug_frame) for a function into memory. - The JIT copies that info into an in-memory ELF file with a symbol for the function. - The JIT creates a code entry pointing to the ELF buffer and adds it to a linked list hanging off of a global descriptor at a special symbol that GDB knows about. - The JIT calls a function marked noinline that GDB knows about and has put an internal breakpoint in. - GDB catches the breakpoint and reads the global descriptor to look for new code. - When sees there is new code, it reads the ELF from the inferior's memory and adds it to itself as an object file. - The JIT continues, and the next time we stop the program, we are able to produce a proper backtrace. Consider running the following program through the JIT: #include <stdio.h> void baz(short z) { long w = z + 1; printf("%d, %x\n", w, *((int*)NULL)); // SEGFAULT here } void bar(short y) { int z = y + 1; baz(z); } void foo(char x) { short y = x + 1; bar(y); } int main(int argc, char** argv) { char x = 1; foo(x); } Here is a backtrace before this patch: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x2aaaabdfbd10 (LWP 25476)] 0x00002aaaabe7d1a8 in ?? () (gdb) bt #0 0x00002aaaabe7d1a8 in ?? () #1 0x0000000000000003 in ?? () #2 0x0000000000000004 in ?? () #3 0x00032aaaabe7cfd0 in ?? () #4 0x00002aaaabe7d12c in ?? () #5 0x00022aaa00000003 in ?? () #6 0x00002aaaabe7d0aa in ?? () #7 0x01000002abe7cff0 in ?? () #8 0x00002aaaabe7d02c in ?? () #9 0x0100000000000001 in ?? () #10 0x00000000014388e0 in ?? () #11 0x00007fff00000001 in ?? () #12 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70, F=0x14024e0, ArgValues=@0x7fffffffe050) at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395 #13 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain (this=0x1405b70, Fn=0x14024e0, argv=@0x13f06f8, envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377 #14 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe398, envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208 And a backtrace after this patch: Program received signal SIGSEGV, Segmentation fault. 0x00002aaaabe7d1a8 in baz () (gdb) bt #0 0x00002aaaabe7d1a8 in baz () #1 0x00002aaaabe7d12c in bar () #2 0x00002aaaabe7d0aa in foo () #3 0x00002aaaabe7d02c in main () #4 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70, F=0x14024e0, ArgValues=...) at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395 #5 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain (this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377 #6 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8, envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208 llvm-svn: 82418
* Work around a FileCheck bug, for now.Daniel Dunbar2009-09-201-0/+1
| | | | llvm-svn: 82416
* simplify as daniel suggestsChris Lattner2009-09-201-16/+9
| | | | llvm-svn: 82415
* write rfind in terms of npos as daniel requestedChris Lattner2009-09-201-6/+4
| | | | llvm-svn: 82414
* remove a dead method.Chris Lattner2009-09-201-7/+0
| | | | llvm-svn: 82413
* grammaroChris Lattner2009-09-201-1/+1
| | | | llvm-svn: 82412
OpenPOWER on IntegriCloud