Daniel Dunbar [Tue, 15 Dec 2009 00:41:47 +0000 (00:41 +0000)]
NNT: Make sure stderr for build commands goes to log file, as intended but misdirected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91379
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 15 Dec 2009 00:41:36 +0000 (00:41 +0000)]
Propagate zest through logical shift.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91378
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 15 Dec 2009 00:40:55 +0000 (00:40 +0000)]
Formatting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91377
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 15 Dec 2009 00:39:24 +0000 (00:39 +0000)]
Revert these. They may have been causing 483_xalancbmk to fail:
$ svn merge -c -91161 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91161 into '.':
U lib/CodeGen/BranchFolding.cpp
U lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91113 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91113 into '.':
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91101 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91101 into '.':
U include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91092 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91092 into '.':
G include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91376
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 15 Dec 2009 00:12:35 +0000 (00:12 +0000)]
nand atomic requires opposite operand ordering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91371
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 23:40:38 +0000 (23:40 +0000)]
Fix integer cast code to handle vector types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91362
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 23:36:03 +0000 (23:36 +0000)]
Move Flag and isVoid after the vector types, since bit arithmetic with
those enum values is less common.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91361
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 23:34:36 +0000 (23:34 +0000)]
Fix these asserts to check the invariant that the code actually
depends on.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91360
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 23:13:31 +0000 (23:13 +0000)]
Update this comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91356
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 23:08:09 +0000 (23:08 +0000)]
Fix this to properly clear the FastISel debug location. Thanks to
Bill for spotting this!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91355
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Mon, 14 Dec 2009 22:44:22 +0000 (22:44 +0000)]
Rearrange rules to add missing dependency and allow parallel makes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91352
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Mon, 14 Dec 2009 21:51:34 +0000 (21:51 +0000)]
Add encoding bits "let Inst{11-4} =
0b00000000;" to BR_JTr to disambiguate
between BR_JTr and STREXD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91339
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 14 Dec 2009 21:49:44 +0000 (21:49 +0000)]
The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91337
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 21:33:32 +0000 (21:33 +0000)]
v6 sync insn copy/paste error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91333
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 21:24:16 +0000 (21:24 +0000)]
Add ARMv6 memory and sync barrier instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91329
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Mon, 14 Dec 2009 21:01:46 +0000 (21:01 +0000)]
Fixed encoding bits typo of ldrexd/strexd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91327
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 20:14:59 +0000 (20:14 +0000)]
Thumb2 atomic operations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91321
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 19:55:22 +0000 (19:55 +0000)]
Add svn:ignore entries for the Disassembler files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91320
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 19:43:09 +0000 (19:43 +0000)]
Move several function bodies which are rarely inlined out of line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91319
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 14 Dec 2009 19:34:32 +0000 (19:34 +0000)]
fix an obvious bug found by clang++ and collapse a redundant if.
Here's the diagnostic from clang:
/Volumes/Data/dgregor/Projects/llvm/lib/Target/CppBackend/CPPBackend.cpp:989:23: warning: 'gv' is always NULL in this context
printConstant(gv);
^
1 diagnostic generated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91318
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 19:32:31 +0000 (19:32 +0000)]
Micro-optimize these functions in the case where they are not inlined.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91316
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 19:24:11 +0000 (19:24 +0000)]
correct selection requirements for thumb2 vs. arm versions of the barrier intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91313
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 14 Dec 2009 19:07:25 +0000 (19:07 +0000)]
Add radar fixed in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91312
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 18:56:47 +0000 (18:56 +0000)]
add Thumb2 atomic and memory barrier instruction definitions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91310
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 18:36:32 +0000 (18:36 +0000)]
whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91307
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 18:31:20 +0000 (18:31 +0000)]
ARM memory barrier instructions are not predicable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91305
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 14 Dec 2009 17:58:33 +0000 (17:58 +0000)]
NNT: Use [e]grep -a when scanning logs, its possibly they will have non-text
characters in them, in which case the grep will just return 'Binary file
matches' and the whole thing falls over.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91302
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 14 Dec 2009 17:58:27 +0000 (17:58 +0000)]
NNT: Always create the -sentdata.txt file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91301
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:35:17 +0000 (17:35 +0000)]
Clear the Processed set when it is no longer used, and clear the
IVUses list in releaseMemory().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91296
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:31:01 +0000 (17:31 +0000)]
Fix a thinko; isNotAlreadyContainedIn had a built-in negative, so the
condition was inverted when the code was converted to contains().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91295
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:19:06 +0000 (17:19 +0000)]
Remove unnecessary #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91293
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:14:32 +0000 (17:14 +0000)]
Make the IVUses member private.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91291
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:12:51 +0000 (17:12 +0000)]
Instead of having a ScalarEvolution pointer member in BasedUser, just pass
the ScalarEvolution pointer into the functions which need it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91289
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:10:44 +0000 (17:10 +0000)]
Don't bother cleaning up if there's nothing to clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91288
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:08:09 +0000 (17:08 +0000)]
Delete an unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91287
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:06:50 +0000 (17:06 +0000)]
Drop Loop::isNotAlreadyContainedIn in favor of Loop::contains. The
former was just exposing a LoopInfoBase implementation detail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91286
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 17:02:55 +0000 (17:02 +0000)]
add ldrexd/strexd instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91284
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 17:02:34 +0000 (17:02 +0000)]
LSR itself doesn't need LoopInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91283
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 16:57:08 +0000 (16:57 +0000)]
LSR itself doesn't need DominatorTree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91282
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 16:52:55 +0000 (16:52 +0000)]
Remove the code in LSR that manually hoists expansions out of loops;
SCEVExpander does this automatically.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91281
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Dec 2009 16:37:29 +0000 (16:37 +0000)]
Minor code cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91280
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 14 Dec 2009 16:18:45 +0000 (16:18 +0000)]
Use DW_AT_specification to point to DIE describing function declaration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91278
91177308-0d34-0410-b5e6-
96231b3b80d8
Shantonu Sen [Mon, 14 Dec 2009 14:15:15 +0000 (14:15 +0000)]
Remove empty file completely
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91277
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Mon, 14 Dec 2009 12:38:18 +0000 (12:38 +0000)]
Add "generic" fallback.
gcc warned that the function may not have a return value, indeed
for non-intel and non-amd X86 CPUs it is right (VIA, etc.).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91276
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 14 Dec 2009 07:43:25 +0000 (07:43 +0000)]
Added CalcSpillWeights to CMakeLists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91275
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 14 Dec 2009 06:51:19 +0000 (06:51 +0000)]
Whitespace changes, comment clarification. No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91274
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 14 Dec 2009 06:49:42 +0000 (06:49 +0000)]
Moved spill weight calculation out of SimpleRegisterCoalescing and into its own pass: CalculateSpillWeights.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91273
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 14 Dec 2009 05:11:02 +0000 (05:11 +0000)]
revert r91184, because it causes a crash on a .bc file I just
sent to Bob.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91268
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 14 Dec 2009 04:22:04 +0000 (04:22 +0000)]
atomic binary operations up to 32-bits wide.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91260
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Mon, 14 Dec 2009 04:06:38 +0000 (04:06 +0000)]
Add a test for the 'init' option property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91259
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Sun, 13 Dec 2009 20:30:32 +0000 (20:30 +0000)]
Reinstate r91208 to fix available_externally linkage for globals, with
nlewycky's fix to add -rdynamic so the JIT can look symbols up in Linux builds
of the JITTests binary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91250
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Sun, 13 Dec 2009 08:59:40 +0000 (08:59 +0000)]
Using _MSC_VER there was wrong, better just use the already existing ifdefs for
x86 CPU detection for the X86 getHostCPUName too, and create a simple
getHostCPUName that returns "generic" for all else.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91240
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sun, 13 Dec 2009 07:04:45 +0000 (07:04 +0000)]
Don't leave pointers uninitialized in the default constructor. GCC complains
about the potential use of these uninitialized members under certain conditions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91239
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 13 Dec 2009 01:00:59 +0000 (01:00 +0000)]
Fix weird typo which leads to unallocated memory access for nodes with 4 results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91233
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 13 Dec 2009 01:00:32 +0000 (01:00 +0000)]
Do not allow uninitialize access during debug printing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91232
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Sat, 12 Dec 2009 23:23:43 +0000 (23:23 +0000)]
More info on this transformation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91230
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Sat, 12 Dec 2009 21:41:48 +0000 (21:41 +0000)]
Remove some stuff that's already implemented. Also, remove the note about
merging x >u 5 and x <s 20 because it's impossible to implement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91228
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Sat, 12 Dec 2009 21:17:54 +0000 (21:17 +0000)]
Update install-clang target for clang-cc removal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91226
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 12 Dec 2009 20:03:14 +0000 (20:03 +0000)]
Disable r91104 for x86. It causes partial register stall which pessimize code in 32-bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91223
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 12 Dec 2009 18:55:37 +0000 (18:55 +0000)]
Implement variable-width shifts.
No testcase yet - it seems we're exposing generic codegen bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91221
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 12 Dec 2009 18:55:26 +0000 (18:55 +0000)]
Add comment about potential partial register stall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91220
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 12 Dec 2009 18:51:56 +0000 (18:51 +0000)]
Fix an obvious bug. No test case since LEA16r is not being used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91219
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Sat, 12 Dec 2009 12:42:31 +0000 (12:42 +0000)]
Enable CPU detection when using MS VS 2k8 too.
MSVS2k8 doesn't define __i386__, hence all the CPU detection code was disabled.
Enable it by looking for _MSC_VER.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91217
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 12 Dec 2009 09:25:50 +0000 (09:25 +0000)]
Fix some CHECK lines which were ignored by accident.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91214
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Sat, 12 Dec 2009 06:18:46 +0000 (06:18 +0000)]
Revert r91208. Something on Linux prevents the JIT from looking up a symbol
defined in the test, and I don't have time tonight to figure it out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91209
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Sat, 12 Dec 2009 05:58:14 +0000 (05:58 +0000)]
Fix available_externally linkage for globals. It's probably still not
supported by emitGlobals, but I don't have a test case for that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91208
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Sat, 12 Dec 2009 04:08:32 +0000 (04:08 +0000)]
Make it easier to use the llvm_unreachable and DEBUG macros without "using
namespace llvm" by qualifying their implementations with ::llvm::.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91206
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sat, 12 Dec 2009 01:40:06 +0000 (01:40 +0000)]
Framework for atomic binary operations. The emitter for the pseudo instructions
just issues an error for the moment. The front end won't yet generate these
intrinsics for ARM, so this is behind the scenes until complete.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91200
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 11 Dec 2009 23:47:40 +0000 (23:47 +0000)]
Revise scalar replacement to be more flexible about handle bitcasts and GEPs.
While scanning through the uses of an alloca, keep track of the current offset
relative to the start of the alloca, and check memory references to see if
the offset & size correspond to a component within the alloca. This has the
nice benefit of unifying much of the code from isSafeUseOfAllocation,
isSafeElementUse, and isSafeUseOfBitCastedAllocation. The code to rewrite
the uses of a promoted alloca, after it is determined to be safe, is
reorganized in the same way.
Also, when rewriting GEP instructions, mark them as "in-bounds" since all the
indices are known to be safe.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91184
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 11 Dec 2009 23:26:08 +0000 (23:26 +0000)]
Delete an unnecessary line. The VTSDNode on a SIGN_EXTEND_REG is never
a vector type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91181
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 11 Dec 2009 23:01:29 +0000 (23:01 +0000)]
Lower setcc branchless, if this is profitable.
Based on the patch by Brian Lucas!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91175
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 11 Dec 2009 21:47:36 +0000 (21:47 +0000)]
Don't try to move a MBB into the fall-through position if it's a landing pad or
branches only to a landing pad. Without this check, the compiler would go into
an infinite loop because the branch to a landing pad is an "abnormal" edge which
wasn't being taken into account.
This is the meat of that fix:
if (!PrevBB.canFallThrough() && !MBB->BranchesToLandingPad(MBB)) {
The other stuff is simplification of the "branches to a landing pad" code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91161
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 11 Dec 2009 21:37:07 +0000 (21:37 +0000)]
Construct CompileUnits lazily.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91159
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 11 Dec 2009 21:31:27 +0000 (21:31 +0000)]
Implement vector widening, splitting, and scalarizing for SIGN_EXTEND_INREG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91158
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 11 Dec 2009 20:29:53 +0000 (20:29 +0000)]
memory barrier instructions by definition have side effects. This prevents the post-RA scheduler from moving them around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91150
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 11 Dec 2009 20:09:21 +0000 (20:09 +0000)]
Change this to the correct PR number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91148
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 11 Dec 2009 20:05:23 +0000 (20:05 +0000)]
Make getUniqueExitBlocks's precondition assert more precise, to
avoid spurious failures. This fixes PR5758.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91147
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 11 Dec 2009 19:50:50 +0000 (19:50 +0000)]
Fix the result type of SELECT nodes lowered from Select instructions with
aggregate return values. This fixes PR5754.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91145
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 11 Dec 2009 19:39:55 +0000 (19:39 +0000)]
Honour setHasCalls() set from isel.
This is used in some weird cases like general dynamic TLS model.
This fixes PR5723
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91144
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 11 Dec 2009 19:37:26 +0000 (19:37 +0000)]
Store Register Exclusive should leave the source register Inst{3-0} unspecified.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91143
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 11 Dec 2009 18:52:41 +0000 (18:52 +0000)]
Update properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91140
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Fri, 11 Dec 2009 15:30:07 +0000 (15:30 +0000)]
Simplify this class by removing the result cache.
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91123
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 11 Dec 2009 10:43:41 +0000 (10:43 +0000)]
Revert part of r91101 which was causing an infinite loop in the self-hosting
build bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91113
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 11 Dec 2009 08:36:17 +0000 (08:36 +0000)]
Add utility method for determining whether a function argument
has the 'nest' attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91109
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Dec 2009 06:02:21 +0000 (06:02 +0000)]
Tests for 91103 and 91104.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91105
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Dec 2009 06:01:48 +0000 (06:01 +0000)]
Add support to 3-addressify 16-bit instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91104
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Dec 2009 06:01:00 +0000 (06:01 +0000)]
Coalesce insert_subreg undef, x first to avoid phase ordering issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91103
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 11 Dec 2009 03:14:18 +0000 (03:14 +0000)]
Address comments on last patch:
- 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91101
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 11 Dec 2009 01:49:14 +0000 (01:49 +0000)]
A machine basic block may end in an unconditional branch, however it may have
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91092
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 11 Dec 2009 01:42:04 +0000 (01:42 +0000)]
Rough first pass at compare_and_swap atomic builtins for ARM mode. Work in progress.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91090
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 11 Dec 2009 01:04:42 +0000 (01:04 +0000)]
Add qualifiers for calls to member functions in dependent bases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91087
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 10 Dec 2009 23:25:41 +0000 (23:25 +0000)]
If VariableDIe is not created (may be because global was optimzed away) then do not try to use the variable die.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91077
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 10 Dec 2009 21:11:40 +0000 (21:11 +0000)]
Add a test for the fix in revision 91009.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91062
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Dec 2009 20:59:45 +0000 (20:59 +0000)]
It's not safe to coalesce a move where src and dst registers have different subregister indices. e.g.:
%reg16404:1<def> = MOV8rr %reg16412:2<kill>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91061
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 10 Dec 2009 19:52:22 +0000 (19:52 +0000)]
Remove a broken, unused header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91058
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 10 Dec 2009 19:14:49 +0000 (19:14 +0000)]
Refactor code that finds context for a given die.
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91055
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 10 Dec 2009 18:35:32 +0000 (18:35 +0000)]
Add instruction encoding for DMB/DSB
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91053
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 10 Dec 2009 18:05:33 +0000 (18:05 +0000)]
Refactor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91051
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 10 Dec 2009 17:48:32 +0000 (17:48 +0000)]
Also attempt trivial coalescing for live intervals that end in a copy.
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91049
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Thu, 10 Dec 2009 10:01:47 +0000 (10:01 +0000)]
Comparing std::string with NULL is a bad idea, so just check whether its empty.
This code was crashing always with oprofile enabled, since it tried to create a StringRef
out of NULL, which run strlen on NULL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91046
91177308-0d34-0410-b5e6-
96231b3b80d8