Anders Carlsson [Mon, 21 Mar 2011 02:42:27 +0000 (02:42 +0000)]
As suggested by Nick Lewycky, ignore debugging intrinsics when trying to decide whether a destructor is empty or not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127985
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 21 Mar 2011 02:26:01 +0000 (02:26 +0000)]
Fix comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127984
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 21 Mar 2011 01:33:03 +0000 (01:33 +0000)]
This README entry was fixed recently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127982
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 21 Mar 2011 01:19:09 +0000 (01:19 +0000)]
Re-apply r127953 with fixes: eliminate empty return block if it has no predecessors; update dominator tree if cfg is modified.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127981
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sun, 20 Mar 2011 20:21:33 +0000 (20:21 +0000)]
Don't try to eliminate invokes to __cxa_atexit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127976
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sun, 20 Mar 2011 20:16:43 +0000 (20:16 +0000)]
Don't segfault on mutual recursion, as pointed out by Frits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127975
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sun, 20 Mar 2011 19:51:13 +0000 (19:51 +0000)]
Address comments from Frits van Bommel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127974
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sun, 20 Mar 2011 19:46:23 +0000 (19:46 +0000)]
Process all dead defs after rematerializing during splitting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127973
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sun, 20 Mar 2011 18:44:20 +0000 (18:44 +0000)]
Write the section table and the section data in the same order that
gun as does. This makes it a lot easier to compare the output of both
as the addresses are now a lot closer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127972
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sun, 20 Mar 2011 17:59:11 +0000 (17:59 +0000)]
Add an optimization to GlobalOpt that eliminates calls to __cxa_atexit, if the function passed is empty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127970
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 20 Mar 2011 15:52:24 +0000 (15:52 +0000)]
Avoid initializing posix_spawn_file_actions_t if not used.
- glibc falls back to fork+exec if a file actions object is present.
- On BSDs this saves a malloc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127969
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Sun, 20 Mar 2011 06:14:56 +0000 (06:14 +0000)]
If a class inherits from RefCountedBaseVPTR allow all its subclasses to be used with IntrusiveRefCntPtr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127966
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sun, 20 Mar 2011 05:44:58 +0000 (05:44 +0000)]
Also eliminate redundant spills downstream of inserted reloads.
This can happen when multiple sibling registers are spilled after live range
splitting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127965
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sun, 20 Mar 2011 05:44:55 +0000 (05:44 +0000)]
Change an argument to a LiveInterval instead of a register number to save some redundant lookups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127964
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Sun, 20 Mar 2011 00:04:51 +0000 (00:04 +0000)]
Disable test in a way that keeps lit happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127962
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 19 Mar 2011 23:02:49 +0000 (23:02 +0000)]
Replace a broken LiveInterval::MergeValueInAsValue() with something simpler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127960
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 19 Mar 2011 23:02:47 +0000 (23:02 +0000)]
Add debug output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127959
91177308-0d34-0410-b5e6-
96231b3b80d8
Oscar Fuentes [Sat, 19 Mar 2011 22:52:33 +0000 (22:52 +0000)]
Make llvm-config.in configuration more MSYS-friendly.
Some of those POSIX <-> Windows command line conversions ended on
failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127958
91177308-0d34-0410-b5e6-
96231b3b80d8
Oscar Fuentes [Sat, 19 Mar 2011 22:52:25 +0000 (22:52 +0000)]
CMake: store TARGET_TRIPLE on llvm-config.in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127957
91177308-0d34-0410-b5e6-
96231b3b80d8
Oscar Fuentes [Sat, 19 Mar 2011 22:52:13 +0000 (22:52 +0000)]
Update CMake library dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127956
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Sat, 19 Mar 2011 21:47:14 +0000 (21:47 +0000)]
Revert r127953, "SimplifyCFG has stopped duplicating returns into predecessors
to canonicalize IR", it broke a lot of things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127954
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 19 Mar 2011 17:17:39 +0000 (17:17 +0000)]
SimplifyCFG has stopped duplicating returns into predecessors to canonicalize IR
to have single return block (at least getting there) for optimizations. This
is general goodness but it would prevent some tailcall optimizations.
One specific case is code like this:
int f1(void);
int f2(void);
int f3(void);
int f4(void);
int f5(void);
int f6(void);
int foo(int x) {
switch(x) {
case 1: return f1();
case 2: return f2();
case 3: return f3();
case 4: return f4();
case 5: return f5();
case 6: return f6();
}
}
=>
LBB0_2: ## %sw.bb
callq _f1
popq %rbp
ret
LBB0_3: ## %sw.bb1
callq _f2
popq %rbp
ret
LBB0_4: ## %sw.bb3
callq _f3
popq %rbp
ret
This patch teaches codegenprep to duplicate returns when the return value
is a phi and where the phi operands are produced by tail calls followed by
an unconditional branch:
sw.bb7: ; preds = %entry
%call8 = tail call i32 @f5() nounwind
br label %return
sw.bb9: ; preds = %entry
%call10 = tail call i32 @f6() nounwind
br label %return
return:
%retval.0 = phi i32 [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], ... [ 0, %entry ]
ret i32 %retval.0
This allows codegen to generate better code like this:
LBB0_2: ## %sw.bb
jmp _f1 ## TAILCALL
LBB0_3: ## %sw.bb1
jmp _f2 ## TAILCALL
LBB0_4: ## %sw.bb3
jmp _f3 ## TAILCALL
rdar://
9147433
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127953
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 19 Mar 2011 17:03:16 +0000 (17:03 +0000)]
Minor code re-structuring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127952
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 19 Mar 2011 13:09:10 +0000 (13:09 +0000)]
Add support for legalizing UINT_TO_FP of vectors on platforms which do
not have native support for this operation (such as X86).
The legalized code uses two vector INT_TO_FP operations and is faster
than scalarizing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127951
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Sat, 19 Mar 2011 05:02:14 +0000 (05:02 +0000)]
Update Passes.html, part 3: alphabetize descriptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127948
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Sat, 19 Mar 2011 04:55:29 +0000 (04:55 +0000)]
Update Passes.html, part 2: cleanup a bit more dead docs, a few more
description updates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127947
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Sat, 19 Mar 2011 04:47:52 +0000 (04:47 +0000)]
Update Passes.html, part 1: remove passes which were removed from the tree,
update short descriptions to match those from the options, alphabetize table
of contents.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127946
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Sat, 19 Mar 2011 03:56:38 +0000 (03:56 +0000)]
Disable test to unbreak Linux. Radar
9156771.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127945
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Sat, 19 Mar 2011 02:42:31 +0000 (02:42 +0000)]
Reapply 127939 since Daniel fixed the breakage. <rdar://problem/
9012638>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127944
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Sat, 19 Mar 2011 02:33:56 +0000 (02:33 +0000)]
Revert 127939. <rdar://problem/
9012638>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127943
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Sat, 19 Mar 2011 01:40:43 +0000 (01:40 +0000)]
Test case for r127940.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127941
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Sat, 19 Mar 2011 01:32:01 +0000 (01:32 +0000)]
Revise r126127 to address Daniel's comments. <rdar://problem/
9012638>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127939
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Sat, 19 Mar 2011 01:16:20 +0000 (01:16 +0000)]
Fixed an assert by the ARM disassembler for LDRD_PRE/POST.
The relevant instruction table entries were changed sometime ago to no longer take
<Rt2> as an operand. Modify ARMDisassemblerCore.cpp to accomodate the change and
add a test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127935
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Sat, 19 Mar 2011 00:59:37 +0000 (00:59 +0000)]
Tweak CrashRecoveryContextCleanup to provide an easy method for clients to select between 'delete' and 'destructor' cleanups, and allow the destructor of CrashRecoveryContextCleanupRegister to be pseudo re-entrant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127929
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Sat, 19 Mar 2011 00:59:33 +0000 (00:59 +0000)]
Tweak CrashRecoveryContext::GetCurrent() to return quickly if 'gCrsahRecoveryEnabled' is false. This avoids us needing to go to thread local storage for
the performance sensitive case where we are compiling code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127928
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 19 Mar 2011 00:41:39 +0000 (00:41 +0000)]
FileCheckize a test.
(one-by-one until valgrind is happy)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127925
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 18 Mar 2011 23:45:43 +0000 (23:45 +0000)]
If an AllocaInst referred by DbgDeclareInst is used by a LoadInst then the LoadInst should also get a corresponding llvm.dbg.value intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127924
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 18 Mar 2011 23:33:58 +0000 (23:33 +0000)]
Remove dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127923
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 18 Mar 2011 23:28:02 +0000 (23:28 +0000)]
Consider debug info intrinsics pointing to null value as dead instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127922
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 22:50:49 +0000 (22:50 +0000)]
Silence a warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127918
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 18 Mar 2011 22:50:18 +0000 (22:50 +0000)]
Add support to the ARM asm parser for the register-shifted-register forms of basic instructions like ADD. More work left to be done to support other instances of shifter ops in the ISA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127917
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 22:48:41 +0000 (22:48 +0000)]
Beginnings of MC-JIT code generation.
Proof-of-concept code that code-gens a module to an in-memory MachO object.
This will be hooked up to a run-time dynamic linker library (see: llvm-rtdyld
for similarly conceptual work for that part) which will take the compiled
object and link it together with the rest of the system, providing back to the
JIT a table of available symbols which will be used to respond to the
getPointerTo*() queries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127916
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 18 Mar 2011 21:52:42 +0000 (21:52 +0000)]
Match a few more obvious patterns to revsh. rdar://
9147637.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127913
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 18 Mar 2011 21:42:19 +0000 (21:42 +0000)]
Extend live debug values down the dominator tree by following copies.
The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we
should be able to extend the range of a value by tracking that value through
register copies. This greatly improves the debug value tracking for function
arguments that for some reason are copied to a second virtual register at the
end of the entry block.
We only extend the debug value range where its register is killed. All original
llvm.dbg.value locations are still respected.
Copies from physical registers are ignored. That should not be a problem since
the entry block already adds DBG_VALUE instructions for the virtual registers
holding the function arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127912
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Fri, 18 Mar 2011 21:12:29 +0000 (21:12 +0000)]
Revert r127852; it's apparently causing an ICE on mingw.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127909
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 18 Mar 2011 19:51:00 +0000 (19:51 +0000)]
Use lazy parsing in LTO. Unfortunately this is only a 3% time saving for
'ar'. Have to figure out how to make libLTO even lazier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127901
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 18 Mar 2011 19:47:14 +0000 (19:47 +0000)]
Clean whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127900
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 18 Mar 2011 19:46:58 +0000 (19:46 +0000)]
Reduce code duplication.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127899
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Holewinski [Fri, 18 Mar 2011 19:24:28 +0000 (19:24 +0000)]
PTX: Fix various codegen issues
- Emit mad instead of mad.rn for shader model 1.0
- Emit explicit mov.u32 instructions for reading global variables
- (most PTX instructions cannot take global variable immediates)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127895
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 18:54:32 +0000 (18:54 +0000)]
Add llvm-rtdyld support for loading 32-bit code.
Factor out the 64-bit specific bits into a helper function and add an
equivalent that loads the 32-bit sections. This allows using llvm-rtdyld on ARM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127892
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 18:51:03 +0000 (18:51 +0000)]
setExecutable() should default to success if there's nothing custom for it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127891
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 18 Mar 2011 17:42:55 +0000 (17:42 +0000)]
Thumb2 PC-relative loads require a fixup rather than just an immediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127888
91177308-0d34-0410-b5e6-
96231b3b80d8
Oscar Fuentes [Fri, 18 Mar 2011 17:27:04 +0000 (17:27 +0000)]
Update list of link components for llvm-rtdyld.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127887
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 17:24:21 +0000 (17:24 +0000)]
Naming conventional tidy up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127886
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 17:11:39 +0000 (17:11 +0000)]
MachO file loader and execution utility.
Add a bone-simple utility to load a MachO object into memory, look for
a function (main) in it, and run that function directly. This will be used
as a test and development platform for MC-JIT work regarding symbol resolution,
dynamic lookup, etc..
Code by Daniel Dunbar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127885
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 18 Mar 2011 16:50:32 +0000 (16:50 +0000)]
Avoid creating canonical induction variables for non-native types.
For example, on 32-bit architecture, don't promote all uses of the IV
to 64-bits just because one use is a 64-bit cast.
Alternate implementation of the patch by Arnaud de Grandmaison.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127884
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 18 Mar 2011 16:39:36 +0000 (16:39 +0000)]
Tidy up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127883
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Fri, 18 Mar 2011 11:59:40 +0000 (11:59 +0000)]
Support explicit argument forms for the X86 string instructions.
For now, only the default segments are supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127875
91177308-0d34-0410-b5e6-
96231b3b80d8
Che-Liang Chiou [Fri, 18 Mar 2011 11:23:56 +0000 (11:23 +0000)]
ptx: fix parameter order that is reversed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127874
91177308-0d34-0410-b5e6-
96231b3b80d8
Che-Liang Chiou [Fri, 18 Mar 2011 11:08:52 +0000 (11:08 +0000)]
ptx: add unconditional and conditional branch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127873
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 18 Mar 2011 09:30:10 +0000 (09:30 +0000)]
raw_ostream: [PR6745] Tweak formatting (double)%e for Windows hosts.
On MSVCRT and compatible, output of %e is incompatible to Posix by default. Number of exponent digits should be at least 2. "%+03d"
FIXME: Implement our formatter in future!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127872
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 18 Mar 2011 09:09:44 +0000 (09:09 +0000)]
Initialize the only-used-with-PPC-double-double parts of the APFloat class. This
makes valgrind stop complaining about uninitialized variables being read when it
accesses a bitfield (category) that shares its bits with these variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127871
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 18 Mar 2011 05:12:38 +0000 (05:12 +0000)]
Simplify the computation of undefined symbols. Instead of walking
functions and initializers, just report the declarations present in
the module.
The motivation is to open the way for using the lazy module parsing,
which should speed up clients that just want a symbol list (nm, ar).
This is slightly less precise, but since both -strip-dead-prototypes
and -globaldce are part of the standard pipeline, this shouldn't
change the result for clang/dragonegg produced binaries.
Any decl in an IL file was also put there because a FE expected it
to be necessary, so this should not be a problem for "-O0 -emit-llvm".
As a sanity check, I have bootstrapped clang on linux and built
firefox on both linux and darwin. A clang bootstrap on darwin
with LTO fails with or without this patch because, ironically,
the linker doesn't like the combination of dead_strip and LTO
when building libLTO.so :-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127870
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 18 Mar 2011 04:23:06 +0000 (04:23 +0000)]
Hoist spills when the same value is known to be in less loopy sibling registers.
Stack slot real estate is virtually free compared to registers, so it is
advantageous to spill earlier even though the same value is now kept in both a
register and a stack slot.
Also eliminate redundant spills by extending the stack slot live range
underneath reloaded registers.
This can trigger a dead code elimination, removing copies and even reloads that
were only feeding spills.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127868
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 18 Mar 2011 04:07:44 +0000 (04:07 +0000)]
Some release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127867
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 18 Mar 2011 03:46:21 +0000 (03:46 +0000)]
Tweak CrashRecoveryContextCleanup::createCleanup() to use the 'delete' cleanup as opposed to the 'destructor' cleanup (reclaims more memory).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127865
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 18 Mar 2011 03:21:11 +0000 (03:21 +0000)]
tools/lto/LTOModule.cpp: Eliminate an unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127859
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 18 Mar 2011 03:21:04 +0000 (03:21 +0000)]
llvm-bcanalyzer.cpp: Tweak format string to suppress warnings on mingw32-g++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127858
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 18 Mar 2011 03:06:04 +0000 (03:06 +0000)]
Accept instructions that read undefined values.
This is not supposed to happen, but I have seen the x86 rematter getting
confused when rematerializing partial redefs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127857
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 18 Mar 2011 03:06:02 +0000 (03:06 +0000)]
Be more accurate about the slot index reading a register when dealing with defs
and early clobbers.
Assert when trying to find an undefined value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127856
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 18 Mar 2011 03:04:18 +0000 (03:04 +0000)]
Add new CrashRecoveryContextCleanup subclass: CrashRecoveryContextDeleteCleanup. This deletes the object, not just calls its destructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127855
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 18 Mar 2011 02:55:51 +0000 (02:55 +0000)]
Check RequiresNullTerminator first, or we might read from an invalid address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127853
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Fri, 18 Mar 2011 02:34:11 +0000 (02:34 +0000)]
Add a target-specific branchless method for double-width relational
comparisons on x86. Essentially, the way this works is that SUB+SBB sets
the relevant flags the same way a double-width CMP would.
This is a substantial improvement over the generic lowering in LLVM. The output
is also shorter than the gcc-generated output; I haven't done any detailed
benchmarking, though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127852
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 18 Mar 2011 02:05:11 +0000 (02:05 +0000)]
Augment CrashRecoveryContext to have registered "cleanup" objects that can be used to release resources during a crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127849
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Fri, 18 Mar 2011 01:24:16 +0000 (01:24 +0000)]
Add some svn:ignore properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127847
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Fri, 18 Mar 2011 01:10:31 +0000 (01:10 +0000)]
FileCheck-ize and update test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127845
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 18 Mar 2011 00:38:03 +0000 (00:38 +0000)]
The disassembler for Thumb was wrongly adding 4 to the computed imm32 offset.
Remove the offending logic and update the test cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127843
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 18 Mar 2011 00:36:39 +0000 (00:36 +0000)]
Remove TargetData and ValueTracking includes. I didn't mean for them to sneak in my last checkin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127842
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 17 Mar 2011 23:52:05 +0000 (23:52 +0000)]
There are two pseudos in this case that are Thumb mode, not one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127840
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Thu, 17 Mar 2011 23:51:11 +0000 (23:51 +0000)]
Added isValidRewrite() to check the result of ScalarEvolutionExpander.
SCEV may generate expressions composed of multiple pointers, which can
lead to invalid GEP expansion. Until we can teach SCEV to follow strict
pointer rules, make sure no bad GEPs creep into IR.
Fixes rdar://problem/
9038671.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127839
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Thu, 17 Mar 2011 23:46:48 +0000 (23:46 +0000)]
whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127837
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 17 Mar 2011 22:18:42 +0000 (22:18 +0000)]
Use RequiresNullTerminator to create buffers without a null terminator
instead of copying.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127835
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 17 Mar 2011 22:18:16 +0000 (22:18 +0000)]
Try to not lose variable's debug info during instcombine.
This is done by lowering dbg.declare intrinsic into dbg.value intrinsic.
Radar
9143931.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127834
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Thu, 17 Mar 2011 22:04:05 +0000 (22:04 +0000)]
It used to be that t_addrmode_s4 was used for both:
o A8.6.195 STR (register) -- Encoding T1
o A8.6.193 STR (immediate, Thumb) -- Encoding T1
It has been changed so that now they use different addressing modes
and thus different MC representation (Operand Infos). Modify the
disassembler to reflect the change, and add relevant tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127833
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 17 Mar 2011 21:58:19 +0000 (21:58 +0000)]
Refactor into a separate utility function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127832
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 17 Mar 2011 20:39:14 +0000 (20:39 +0000)]
BuildUDIV: If the divisor is even we can simplify the fixup of the multiplied value by introducing an early shift.
This allows us to compile "unsigned foo(unsigned x) { return x/28; }" into
shrl $2, %edi
imulq $
613566757, %rdi, %rax
shrq $32, %rax
ret
instead of
movl %edi, %eax
imulq $
613566757, %rax, %rcx
shrq $32, %rcx
subl %ecx, %eax
shrl %eax
addl %ecx, %eax
shrl $4, %eax
on x86_64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127829
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 17 Mar 2011 20:39:06 +0000 (20:39 +0000)]
Add an argument to APInt's magic udiv calculation to specify the number of bits that are known zero in the divided number.
This will come in handy soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127828
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 17 Mar 2011 20:37:07 +0000 (20:37 +0000)]
Dead code elimination may separate the live interval into multiple connected components.
I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual registers for the components.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127827
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Thu, 17 Mar 2011 19:50:04 +0000 (19:50 +0000)]
Reapply: Add type output to llvm-dis annotations. Patch by Yuri!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127824
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Osborne [Thu, 17 Mar 2011 18:42:05 +0000 (18:42 +0000)]
Add XCore intrinsic for setpsc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127821
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Thu, 17 Mar 2011 16:54:27 +0000 (16:54 +0000)]
Revert 127813 while fixing broken test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127814
91177308-0d34-0410-b5e6-
96231b3b80d8
Stuart Hastings [Thu, 17 Mar 2011 16:30:14 +0000 (16:30 +0000)]
Add type output to llvm-dis. Patch by Yuri!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127813
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 17 Mar 2011 16:25:24 +0000 (16:25 +0000)]
MC/Mach-O: Fix regression introduced in r126127, this assignment shouldn't have
been removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127812
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 17 Mar 2011 14:53:37 +0000 (14:53 +0000)]
Move more logic into getTypeForExtArgOrReturn.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127809
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 17 Mar 2011 14:21:58 +0000 (14:21 +0000)]
Change the signext language in LangRef to closer match zeroext.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127808
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 17 Mar 2011 14:21:56 +0000 (14:21 +0000)]
Rename getTypeForExtendedInteger() to getTypeForExtArgOrReturn().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127807
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 17 Mar 2011 05:20:12 +0000 (05:20 +0000)]
Add comments for the demanglings. Correct mangled form of operator delete!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127801
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 17 Mar 2011 04:24:40 +0000 (04:24 +0000)]
test/CodeGen/X86/h-registers-1.ll: Add explicit -mtriple=x86_64-linux. It does not need to be checked on x86_64-win32 (aka Win64).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127800
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 17 Mar 2011 01:46:14 +0000 (01:46 +0000)]
Add "swi" which is an obsolete mnemonic for "svc".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127788
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Thu, 17 Mar 2011 01:22:09 +0000 (01:22 +0000)]
A couple new README entries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127786
91177308-0d34-0410-b5e6-
96231b3b80d8