oota-llvm.git
11 years agoFix an issue where we failed to adjust the alignment constraint on
Chandler Carruth [Wed, 3 Oct 2012 08:26:28 +0000 (08:26 +0000)]
Fix an issue where we failed to adjust the alignment constraint on
a memcpy to reflect that '0' has a different meaning when applied to
a load or store. Now we correctly use underaligned loads and stores for
the test case added.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165101 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTry to use a better set of abstractions for computing the alignment
Chandler Carruth [Wed, 3 Oct 2012 08:14:02 +0000 (08:14 +0000)]
Try to use a better set of abstractions for computing the alignment
necessary during rewriting. As part of this, fix a real think-o here
where we might have left off an alignment specification when the address
is in fact underaligned. I haven't come up with any way to trigger this,
as there is always some other factor that reduces the alignment, but it
certainly might have been an observable bug in some way I can't think
of. This also slightly changes the strategy for placing explicit
alignments on loads and stores to only do so when the alignment does not
match that required by the ABI. This causes a few redundant alignments
to go away from test cases.

I've also added a couple of tests that really push on the alignment that
we end up with on loads and stores. More to come here as I try to fix an
underlying bug I have conjectured and produced test cases for, although
it's not clear if this bug is the one currently hitting dragonegg's
gcc47 bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165100 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert 165051-165049 while looking into the foreach.m failure in
Eric Christopher [Wed, 3 Oct 2012 08:10:01 +0000 (08:10 +0000)]
Revert 165051-165049 while looking into the foreach.m failure in
more detail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165099 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix doxygen comment to match function name.
Craig Topper [Wed, 3 Oct 2012 06:47:18 +0000 (06:47 +0000)]
Fix doxygen comment to match function name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165094 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove unused function that used to get itineraries from SubTargetFeatures. This...
Craig Topper [Wed, 3 Oct 2012 06:26:11 +0000 (06:26 +0000)]
Remove unused function that used to get itineraries from SubTargetFeatures. This is done from MCSubTargetInfo these days.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165092 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix 80-column violation
Craig Topper [Wed, 3 Oct 2012 03:56:12 +0000 (03:56 +0000)]
Fix 80-column violation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165089 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agotest/ExecutionEngine/MCJIT: MCJIT should work also on mingw.
NAKAMURA Takumi [Wed, 3 Oct 2012 01:42:37 +0000 (01:42 +0000)]
test/ExecutionEngine/MCJIT: MCJIT should work also on mingw.

FIXME: Also cygwin?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165081 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThird try at fixing this. ;] Go back to using std::remove_if, which has
Chandler Carruth [Wed, 3 Oct 2012 01:04:07 +0000 (01:04 +0000)]
Third try at fixing this. ;] Go back to using std::remove_if, which has
most of the behavior we want, but wrap the predicate in one which erases
elements from the set if they pass the predicate. Oh what I wouldn't
give for a lambda here.

Let me know if the predicate wrapping is too much magic. ;]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165076 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThe early if conversion pass is ready to be used as an opt-in.
Jakob Stoklund Olesen [Wed, 3 Oct 2012 00:51:32 +0000 (00:51 +0000)]
The early if conversion pass is ready to be used as an opt-in.

Enable the pass by default for targets that request it, and change the
-enable-early-ifcvt to the opposite -disable-early-ifcvt.

There are still some x86 regressions when enabling early if-conversion
because of the missing machine models. Disable the pass for x86 until
machine models are added.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165075 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSwitch the SetVector::remove_if implementation to use partition which
Chandler Carruth [Wed, 3 Oct 2012 00:03:00 +0000 (00:03 +0000)]
Switch the SetVector::remove_if implementation to use partition which
preserves the values of the relocated entries, unlikely remove_if. This
allows walking them and erasing them.

Also flesh out the predicate we are using for this to support the
various constraints actually imposed on a UnaryPredicate -- without this
we can't compose it with std::not1.

Thanks to Sean Silva for the review here and noticing the issue with
std::remove_if.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165073 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a serious X86 instruction selection bug. In
Evan Cheng [Tue, 2 Oct 2012 23:49:13 +0000 (23:49 +0000)]
Fix a serious X86 instruction selection bug. In
X86DAGToDAGISel::PreprocessISelDAG(), isel is moving load inside
callseq_start / callseq_end so it can be folded into a call. This can
create a cycle in the DAG when the call is glued to a copytoreg. We
have been lucky this hasn't caused too many issues because the pre-ra
scheduler has special handling of call sequences. However, it has
caused a crash in a specific tailcall case.

rdar://12393897

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165072 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert "Don't use a debug location for frame setup instructions in the"
Eric Christopher [Tue, 2 Oct 2012 23:43:11 +0000 (23:43 +0000)]
Revert "Don't use a debug location for frame setup instructions in the"

This reverts 165055 and 165052 temporarily while I look at debugger
failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165071 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert 165057, per Jim's request. This requires further discussion.
Chad Rosier [Tue, 2 Oct 2012 23:38:50 +0000 (23:38 +0000)]
Revert 165057, per Jim's request.  This requires further discussion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165069 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThe mips 64bit instructions DSLL, DSRA, DSRL, DEXT and DINS get transformed by the...
Jack Carter [Tue, 2 Oct 2012 23:09:40 +0000 (23:09 +0000)]
The mips 64bit instructions DSLL, DSRA, DSRL, DEXT and DINS get transformed by the assembler or through codegen direct object output to other variants based on the value of the immediate values of the operands.

If the code is generated as assembler, this transformation does not occur assuming that it will occur later in the assembler.

This code was originally called from  MipsAsmPrinter.cpp and we needed to check for OutStreamer.hasRawTextSupport(). This was not a good place for it and has been moved to MCTargetDesc/MipsMCCodeEmitter.cpp where both direct object and the assembler use it it automagically.

The test cases have been checked in for a number of weeks now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165067 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTeach the new SROA to handle cases where an alloca that has already been
Chandler Carruth [Tue, 2 Oct 2012 22:46:45 +0000 (22:46 +0000)]
Teach the new SROA to handle cases where an alloca that has already been
scheduled for processing on the worklist eventually gets deleted while
we are processing another alloca, fixing the original test case in
PR13990.

To facilitate this, add a remove_if helper to the SetVector abstraction.
It's not easy to use the standard abstractions for this because of the
specifics of SetVectors types and implementation.

Finally, a nice small test case is included. Thanks to Benjamin for the
fantastic reduced test case here! All I had to do was delete some empty
basic blocks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165065 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoClean up these doxygen comments to follow the proposed new style. This
Chandler Carruth [Tue, 2 Oct 2012 22:46:40 +0000 (22:46 +0000)]
Clean up these doxygen comments to follow the proposed new style. This
also makes it more consistent with Clang and several passes' doxygen
style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165064 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake sure to put our sret argument into %rax on x86-64. Fixes PR13563!
Nick Lewycky [Tue, 2 Oct 2012 22:45:06 +0000 (22:45 +0000)]
Make sure to put our sret argument into %rax on x86-64. Fixes PR13563!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165063 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove the old coalescer algorithm.
Jakob Stoklund Olesen [Tue, 2 Oct 2012 22:45:03 +0000 (22:45 +0000)]
Remove the old coalescer algorithm.

The new algorithm has been enabled by default for almost a week now and
seems to be stable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165062 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoHandle reserved registers more accurately in handleMove().
Jakob Stoklund Olesen [Tue, 2 Oct 2012 22:08:36 +0000 (22:08 +0000)]
Handle reserved registers more accurately in handleMove().

Reserved register live ranges look like a set of dead defs - any uses of
reserved registers are ignored.

Instead of skipping the updating of reserved register operands entirely,
just ignore the use operands and treat the def operands normally.

No test case, handleMove() is not commonly used yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165060 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-inline asm] Add basic support for wildcard MCParsedAsmOperands. This type
Chad Rosier [Tue, 2 Oct 2012 21:49:07 +0000 (21:49 +0000)]
[ms-inline asm] Add basic support for wildcard MCParsedAsmOperands.  This type
of operand is specific to MS-style inline assembly and should not be generated
when parsing normal assembly.

The purpose of the wildcard operands are to allow the AsmParser to match
multiple instructions (i.e., MCInsts) to a given ms-style asm statement.  For
the time being the matcher just returns the first match.  This patch only
implements wildcard matches for memory operands.  Support for register
wildcards will be added in the near future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165057 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake sure the whole live range is covered when values are pruned twice.
Jakob Stoklund Olesen [Tue, 2 Oct 2012 21:46:39 +0000 (21:46 +0000)]
Make sure the whole live range is covered when values are pruned twice.

JoinVals::pruneValues() calls LIS->pruneValue() to avoid conflicts when
overlapping two different values. This produces a set of live range end
points that are used to reconstruct the live range (with SSA update)
after joining the two registers.

When a value is pruned twice, the set of end points was insufficient:

  v1 = DEF
  v1 = REPLACE1
  v1 = REPLACE2
  KILL v1

The end point at KILL would only reconstruct the live range from
REPLACE2 to KILL, leaving the range REPLACE1-REPLACE2 dead.

Add REPLACE2 as an end point in this case so the full live range is
reconstructed.

This fixes PR13999.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165056 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAllow alternate instructions to silence bot.
Eric Christopher [Tue, 2 Oct 2012 21:44:16 +0000 (21:44 +0000)]
Allow alternate instructions to silence bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165055 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago80-col.
Eric Christopher [Tue, 2 Oct 2012 21:44:12 +0000 (21:44 +0000)]
80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165054 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoClean-up of memory buffer and object ownership model in MCJIT
Andrew Kaylor [Tue, 2 Oct 2012 21:18:39 +0000 (21:18 +0000)]
Clean-up of memory buffer and object ownership model in MCJIT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165053 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't use a debug location for frame setup instructions in the
Eric Christopher [Tue, 2 Oct 2012 21:17:00 +0000 (21:17 +0000)]
Don't use a debug location for frame setup instructions in the
prologue. Also skip frame setup instructions when looking for the
first location.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165052 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse the existing DebugLoc.
Eric Christopher [Tue, 2 Oct 2012 21:16:55 +0000 (21:16 +0000)]
Use the existing DebugLoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165051 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake the location a parameter since we may not want the next one
Eric Christopher [Tue, 2 Oct 2012 21:16:53 +0000 (21:16 +0000)]
Make the location a parameter since we may not want the next one
in the block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165050 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove the SavePoint infrastructure from fast isel, replace
Eric Christopher [Tue, 2 Oct 2012 21:16:50 +0000 (21:16 +0000)]
Remove the SavePoint infrastructure from fast isel, replace
with just an insert point from the MachineBasicBlock and let
the location be updated as we access it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165049 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSet the 'build clang only' flag when we're building only clang.
Bill Wendling [Tue, 2 Oct 2012 20:32:23 +0000 (20:32 +0000)]
Set the 'build clang only' flag when we're building only clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165042 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImprove overflow detection in StringRef::getAsUnsignedInteger().
Nick Kledzik [Tue, 2 Oct 2012 20:01:48 +0000 (20:01 +0000)]
Improve overflow detection in StringRef::getAsUnsignedInteger().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165038 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix another crasher in SROA, reported by Joel.
Chandler Carruth [Tue, 2 Oct 2012 18:57:13 +0000 (18:57 +0000)]
Fix another crasher in SROA, reported by Joel.

We require that the indices into the use lists are stable in order to
build fast lookup tables to locate a particular partition use from an
operand of a PHI or select. This is (obviously in hind sight)
incompatible with erasing elements from the array. Really, we don't want
to erase anyways. It is expensive, and a rare operation. Instead, simply
weaken the contract of the PartitionUse structure to allow null Use
pointers to represent dead uses. Now we can clear out the pointer to
mark things as dead, and all it requires is adding some 'continue'
checks to the various loops.

I'm still reducing a test case for this, as the test case I have is
huge. I think this one I can get a nice test case for though, as it was
much more deterministic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165032 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSupport for generating ELF objects on Windows.
Andrew Kaylor [Tue, 2 Oct 2012 18:38:34 +0000 (18:38 +0000)]
Support for generating ELF objects on Windows.

This adds 'elf' as a recognized target triple environment value and overrides the default generated object format on Windows platforms if that value is present.  This patch also enables MCJIT tests on Windows using the new environment value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165030 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a silly coding error on my part. The whole point of the speculator
Chandler Carruth [Tue, 2 Oct 2012 17:49:47 +0000 (17:49 +0000)]
Fix a silly coding error on my part. The whole point of the speculator
being separate was that it can grow the use list. As a consequence, we
can't use the iterator-pair interface, we need an index based interface.
Expose such an interface from the AllocaPartitioning, and use it in the
speculator.

This should at least fix a use-after-free bug found by Duncan, and may
fix some of the other crashers.

I don't have a nice deterministic test case yet, but if I get a good
one, I'll add it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165027 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix broken tests.
Benjamin Kramer [Tue, 2 Oct 2012 15:49:34 +0000 (15:49 +0000)]
Fix broken tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165019 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix PR13991: legalizing an overflowing multiplication operation is harder than
Duncan Sands [Tue, 2 Oct 2012 15:03:49 +0000 (15:03 +0000)]
Fix PR13991: legalizing an overflowing multiplication operation is harder than
the add/sub case since in the case of multiplication you also have to check that
the operation in the larger type did not overflow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165017 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd default JIT LIT variable.
James Molloy [Tue, 2 Oct 2012 10:57:08 +0000 (10:57 +0000)]
Add default JIT LIT variable.

Patch by David Tweed!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164996 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTurn the new SROA pass back on. Let's see if it sticks this time. =]
Chandler Carruth [Tue, 2 Oct 2012 04:24:01 +0000 (04:24 +0000)]
Turn the new SROA pass back on. Let's see if it sticks this time. =]

Again, let me know if anything breaks due to this!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164986 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix 80-column violations. Cleanup whitespace in generated code.
Chad Rosier [Tue, 2 Oct 2012 00:25:57 +0000 (00:25 +0000)]
Fix 80-column violations. Cleanup whitespace in generated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164983 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-inline asm] Add the convertToMapAndConstraints() function that is used to
Chad Rosier [Mon, 1 Oct 2012 23:45:51 +0000 (23:45 +0000)]
[ms-inline asm] Add the convertToMapAndConstraints() function that is used to
map constraints and MCInst operands to inline asm operands.  This replaces the
getMCInstOperandNum() function.

The logic to determine the constraints are not in place, so we still default to
a register constraint (i.e., "r"). Also, we no longer build the MCInst but
rather return just the opcode to get the MCInstrDesc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164979 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agotest/CodeGen/X86/red-zone2.ll: Add -mtriple=x86_64-linux, and FileCheck-ize.
NAKAMURA Takumi [Mon, 1 Oct 2012 22:48:07 +0000 (22:48 +0000)]
test/CodeGen/X86/red-zone2.ll: Add -mtriple=x86_64-linux, and FileCheck-ize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164975 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMachO: direct-to-object attribute for data-in-code markers.
Jim Grosbach [Mon, 1 Oct 2012 22:20:54 +0000 (22:20 +0000)]
MachO: direct-to-object attribute for data-in-code markers.

The target backend can support data-in-code load commands even when
the assembler doesn't, or vice-versa. Allow targets to opt-in for
direct-to-object.

PR13973.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164974 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agochecking test case for r164811. was an omission to not check this in. this was alrea...
Reed Kotler [Mon, 1 Oct 2012 21:35:06 +0000 (21:35 +0000)]
checking test case for  r164811. was an omission to not check this in. this was already approved

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164972 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-inline asm] Expose the getReg() function in the base class.
Chad Rosier [Mon, 1 Oct 2012 20:53:03 +0000 (20:53 +0000)]
[ms-inline asm] Expose the getReg() function in the base class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164969 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[Docs] Update File Headers section to cover doxygen style file level docs.
Michael J. Spencer [Mon, 1 Oct 2012 19:59:21 +0000 (19:59 +0000)]
[Docs] Update File Headers section to cover doxygen style file level docs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164964 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRe-enable support for --program-prefix.
Jordan Rose [Mon, 1 Oct 2012 18:40:32 +0000 (18:40 +0000)]
Re-enable support for --program-prefix.

The Apple buildbots have been modified not to pass --target,
so they shouldn't choke on a default program prefix anymore.

Patch by Rick Foos!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164956 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoForgot the SPIR test case.
Micah Villmow [Mon, 1 Oct 2012 17:07:51 +0000 (17:07 +0000)]
Forgot the SPIR test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164949 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd in support for SPIR to LLVM core. This adds a new target and two new calling...
Micah Villmow [Mon, 1 Oct 2012 17:01:31 +0000 (17:01 +0000)]
Add in support for SPIR to LLVM core. This adds a new target and two new calling conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164948 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix PR13899
Michael Liao [Mon, 1 Oct 2012 16:44:04 +0000 (16:44 +0000)]
Fix PR13899

- Update maximal stack alignment when stack arguments are prepared before a
  call.
- Test cases are enhanced to show it's not a Win32 specific issue but a generic
  one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164946 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoProvide a shortcut for MCObjectStreamer when emitting fills.
Benjamin Kramer [Mon, 1 Oct 2012 15:14:14 +0000 (15:14 +0000)]
Provide a shortcut for MCObjectStreamer when emitting fills.

Reduces runtime of i386-large-relocations.s by 10x in Release builds, even more
in Debug+Asserts builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164945 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix more misspellings found by Duncan during review.
Chandler Carruth [Mon, 1 Oct 2012 12:30:45 +0000 (12:30 +0000)]
Fix more misspellings found by Duncan during review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164940 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake this plural. Spotted by Duncan in review (and a very old typo, this
Chandler Carruth [Mon, 1 Oct 2012 12:24:42 +0000 (12:24 +0000)]
Make this plural. Spotted by Duncan in review (and a very old typo, this
is the second time I've moved this comment around...)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164939 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoPrune some unnecessary includes.
Chandler Carruth [Mon, 1 Oct 2012 12:21:54 +0000 (12:21 +0000)]
Prune some unnecessary includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164938 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix several issues with alignment. We weren't always accounting for type
Chandler Carruth [Mon, 1 Oct 2012 12:16:54 +0000 (12:16 +0000)]
Fix several issues with alignment. We weren't always accounting for type
alignment requirements of the new alloca. As one consequence which was
reported as a bug by Duncan, we overaligned memcpy calls to ranges of
allocas after they were rewritten to types with lower alignment
requirements. Other consquences are possible, but I don't have any test
cases for them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164937 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTargetData: s/uint32_t/unsigned/ per Kuba's request.
Benjamin Kramer [Mon, 1 Oct 2012 11:56:16 +0000 (11:56 +0000)]
TargetData: s/uint32_t/unsigned/ per Kuba's request.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164935 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSimplifyCFG: Don't crash when forming a switch bitmap with an undef default value.
Benjamin Kramer [Mon, 1 Oct 2012 11:31:48 +0000 (11:31 +0000)]
SimplifyCFG: Don't crash when forming a switch bitmap with an undef default value.

Fixes PR13985.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164934 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFactor the PHI and select speculation into a separate rewriter. This
Chandler Carruth [Mon, 1 Oct 2012 10:54:05 +0000 (10:54 +0000)]
Factor the PHI and select speculation into a separate rewriter. This
could probably be factored still further to hoist this logic into
a generic helper, but currently I don't have particularly clean ideas
about how to handle that.

This at least allows us to drop custom load rewriting from the
speculation logic, which in turn allows the existing load rewriting
logic to fire. In theory, this could enable vector promotion or other
tricks after speculation occurs, but I've not dug into such issues. This
is primarily just cleaning up the factoring of the code and the
resulting logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164933 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse constants for all return values in switch. Allows clang to optimize it into a...
Craig Topper [Mon, 1 Oct 2012 07:33:27 +0000 (07:33 +0000)]
Use constants for all return values in switch. Allows clang to optimize it into a lookup table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164926 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRefactor the PartitionUse structure to actually use the Use* instead of
Chandler Carruth [Mon, 1 Oct 2012 01:49:22 +0000 (01:49 +0000)]
Refactor the PartitionUse structure to actually use the Use* instead of
a pair of instructions, one for the used pointer and the second for the
user. This simplifies the representation and also makes it more dense.

This was noticed because of the miscompile in PR13926. In that case, we
were running up against a fundamental "bad idea" in the speculation of
PHI and select instructions: the speculation and rewriting are
interleaved, which requires phi speculation to also perform load
rewriting! This is bad, and causes us to miss opportunities to do (for
example) vector rewriting only exposed after PHI speculation, etc etc.
It also, in the old system, required us to insert *new* load uses into
the current partition's use list, which would then be ignored during
rewriting because we had already extracted an end iterator for the use
list. The appending behavior (and much of the other oddities) stem from
the strange de-duplication strategy in the PartitionUse builder.
Amusingly, all this went without notice for so long because it could
only be triggered by having *different* GEPs into the same partition of
the same alloca, where both different GEPs were operands of a single
PHI, and where the GEP which was not encountered first also had multiple
uses within that same PHI node... Hence the insane steps required to
reproduce.

So, step one in fixing this fundamental bad idea is to make the
PartitionUse actually contain a Use*, and to make the builder do proper
deduplication instead of funky de-duplication. This is enough to remove
the appending behavior, and fix the miscompile in PR13926, but there is
more work to be done here. Subsequent commits will lift the speculation
into its own visitor. It'll be a useful step toward potentially
extracting all of the speculation logic into a generic utility
transform.

The existing PHI test case for repeated operands has been made more
extreme to catch even these issues. This test case, run through the old
pass, will exactly reproduce the miscompile from PR13926. ;] We were so
close here!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164925 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse dyn_cast instead of isa and cast.
Jakub Staszak [Sun, 30 Sep 2012 21:24:57 +0000 (21:24 +0000)]
Use dyn_cast instead of isa and cast.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164924 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSimplifyCFG: Enumerating all predecessors of a BB can be expensive (switches), avoid...
Benjamin Kramer [Sun, 30 Sep 2012 21:03:56 +0000 (21:03 +0000)]
SimplifyCFG: Enumerating all predecessors of a BB can be expensive (switches), avoid it if possible.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164923 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRST docs: convert HTML escapes to plain text in code examples.
Dmitri Gribenko [Sun, 30 Sep 2012 20:51:02 +0000 (20:51 +0000)]
RST docs: convert HTML escapes to plain text in code examples.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164922 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSphinx CSS: remove negative letter-spacing, it makes some fonts look really
Dmitri Gribenko [Sun, 30 Sep 2012 20:43:24 +0000 (20:43 +0000)]
Sphinx CSS: remove negative letter-spacing, it makes some fonts look really
bad.  Fonts already have appropriate tracking built-in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164921 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix && to && in Coding Standards.
Jakub Staszak [Sun, 30 Sep 2012 20:42:13 +0000 (20:42 +0000)]
Fix && to && in Coding Standards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164920 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoChange getX86SubSuperRegister to take an MVT::SimpleValueType rather than an EVT...
Craig Topper [Sun, 30 Sep 2012 19:49:56 +0000 (19:49 +0000)]
Change getX86SubSuperRegister to take an MVT::SimpleValueType rather than an EVT and add llvm_unreachable to the switches. Helps it compile to dramatically better code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164919 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoArgumentPromotion: Remove ancient workaround for a bug in the C backend.
Benjamin Kramer [Sun, 30 Sep 2012 17:31:56 +0000 (17:31 +0000)]
ArgumentPromotion: Remove ancient workaround for a bug in the C backend.

Fun fact: The CBE learned how to deal with this situation before it was removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164918 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoIgnore apparent buffer overruns on external or weak globals. This is a major
Duncan Sands [Sun, 30 Sep 2012 07:30:10 +0000 (07:30 +0000)]
Ignore apparent buffer overruns on external or weak globals.  This is a major
source of false positives due to globals being declared in a header with some
kind of incomplete (small) type, but the actual definition being bigger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164912 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert r164910 because it causes failures to several phase2 builds.
Nadav Rotem [Sun, 30 Sep 2012 07:17:56 +0000 (07:17 +0000)]
Revert r164910 because it causes failures to several phase2 builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164911 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoA DAGCombine optimization for merging consecutive stores. This optimization is not...
Nadav Rotem [Sun, 30 Sep 2012 06:24:14 +0000 (06:24 +0000)]
A DAGCombine optimization for merging consecutive stores. This optimization is not profitable in many cases
because moden processos can store multiple values in parallel, and preparing the consecutive store requires
some work.  We only handle these cases:

1. Consecutive stores where the values and consecutive loads. For example:
 int a = p->a;
 int b = p->b;
 q->a = a;
 q->b = b;

2. Consecutive stores where the values are constants. Foe example:
 q->a = 4;
 q->b = 5;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164910 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd LLVM support for Swift.
Bob Wilson [Sat, 29 Sep 2012 21:43:49 +0000 (21:43 +0000)]
Add LLVM support for Swift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164899 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoWhitespace.
Bob Wilson [Sat, 29 Sep 2012 21:27:31 +0000 (21:27 +0000)]
Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164898 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoShrink TargetAlignElem a bit, we do a lot of searches on them.
Benjamin Kramer [Sat, 29 Sep 2012 19:57:14 +0000 (19:57 +0000)]
Shrink TargetAlignElem a bit, we do a lot of searches on them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164897 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a somewhat surprising miscompile where code relying on an ABI
Chandler Carruth [Sat, 29 Sep 2012 10:41:21 +0000 (10:41 +0000)]
Fix a somewhat surprising miscompile where code relying on an ABI
alignment could lose it due to the alloca type moving down to a much
smaller alignment guarantee.

Now SROA will actively compute a proper alignment, factoring the target
data, any explicit alignment, and the offset within the struct. This
will in some cases lower the alignment requirements, but when we lower
them below those of the type, we drop the alignment entirely to give
freedom to the code generator to align it however is convenient.

Thanks to Duncan for the lovely test case that pinned this down. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164891 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSpeculatively revert commit 164885 (nadav) in the hope of ressurecting a pile of
Duncan Sands [Sat, 29 Sep 2012 10:25:35 +0000 (10:25 +0000)]
Speculatively revert commit 164885 (nadav) in the hope of ressurecting a pile of
buildbots.  Original commit message:

A DAGCombine optimization for merging consecutive stores. This optimization is not profitable in many cases
because moden processos can store multiple values in parallel, and preparing the consecutive store requires
some work.  We only handle these cases:

1. Consecutive stores where the values and consecutive loads. For example:
  int a = p->a;
  int b = p->b;
  q->a = a;
  q->b = b;

2. Consecutive stores where the values are constants. Foe example:
  q->a = 4;
  q->b = 5;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164890 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTidy up to match coding standards. Remove 'else' after 'return' and moving operators...
Craig Topper [Sat, 29 Sep 2012 07:18:53 +0000 (07:18 +0000)]
Tidy up to match coding standards. Remove 'else' after 'return' and moving operators to end of preceding line. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164887 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoReplace a couple if/elses around similar calls with conditional operators on the...
Craig Topper [Sat, 29 Sep 2012 06:54:22 +0000 (06:54 +0000)]
Replace a couple if/elses around similar calls with conditional operators on the varying arguments. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164886 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoA DAGCombine optimization for merging consecutive stores. This optimization is not...
Nadav Rotem [Sat, 29 Sep 2012 06:33:25 +0000 (06:33 +0000)]
A DAGCombine optimization for merging consecutive stores. This optimization is not profitable in many cases
because moden processos can store multiple values in parallel, and preparing the consecutive store requires
some work.  We only handle these cases:

1. Consecutive stores where the values and consecutive loads. For example:
  int a = p->a;
  int b = p->b;
  q->a = a;
  q->b = b;

2. Consecutive stores where the values are constants. Foe example:
  q->a = 4;
  q->b = 5;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164885 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove more LLVM_DELETED_FUNCTIONs from destructors to fix -std=c++11 build on gcc...
Craig Topper [Sat, 29 Sep 2012 02:25:34 +0000 (02:25 +0000)]
Remove more LLVM_DELETED_FUNCTIONs from destructors to fix -std=c++11 build on gcc 4.7.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164880 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd test case for r164850.
Evan Cheng [Sat, 29 Sep 2012 00:12:08 +0000 (00:12 +0000)]
Add test case for r164850.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164867 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDo not delete BBs if their addresses are taken. rdar://12396696
Evan Cheng [Fri, 28 Sep 2012 23:58:57 +0000 (23:58 +0000)]
Do not delete BBs if their addresses are taken. rdar://12396696

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164866 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't use bit-wise operations to query for inclusion/exclusion of attributes.
Bill Wendling [Fri, 28 Sep 2012 22:30:18 +0000 (22:30 +0000)]
Don't use bit-wise operations to query for inclusion/exclusion of attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164860 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGlobalDCE should be run at -O2 / -Os to eliminate unused dtor, etc. rdar://9142819
Evan Cheng [Fri, 28 Sep 2012 21:23:26 +0000 (21:23 +0000)]
GlobalDCE should be run at -O2 / -Os to eliminate unused dtor, etc. rdar://9142819

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164850 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMIPS DSP: add operands to make sure instruction strings are being matched.
Akira Hatanaka [Fri, 28 Sep 2012 21:23:16 +0000 (21:23 +0000)]
MIPS DSP: add operands to make sure instruction strings are being matched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164849 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove unused methods.
Bill Wendling [Fri, 28 Sep 2012 21:22:24 +0000 (21:22 +0000)]
Remove unused methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164848 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agodocs: dedent list on index.rst
Sean Silva [Fri, 28 Sep 2012 21:18:37 +0000 (21:18 +0000)]
docs: dedent list on index.rst

In reStructuredText, indented blocks denote block quotes [1]. This list
is not a block quote.

[1]. http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#block-quotes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164847 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMIPS DSP: other miscellaneous instructions.
Akira Hatanaka [Fri, 28 Sep 2012 20:50:31 +0000 (20:50 +0000)]
MIPS DSP: other miscellaneous instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164845 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTestcase for r164835
Manman Ren [Fri, 28 Sep 2012 20:26:33 +0000 (20:26 +0000)]
Testcase for r164835

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164842 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMIPS DSP: ADDUH.QB instruction sub-class.
Akira Hatanaka [Fri, 28 Sep 2012 20:16:04 +0000 (20:16 +0000)]
MIPS DSP: ADDUH.QB instruction sub-class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164840 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoX86: when replacing SUB with TEST in ISelDAGToDAG, only replace uses of the
Manman Ren [Fri, 28 Sep 2012 18:53:24 +0000 (18:53 +0000)]
X86: when replacing SUB with TEST in ISelDAGToDAG, only replace uses of the
second output of SUB with first output of TEST.

PR13966

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164835 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemoving dependency on third party library for Intel JIT event support.
Andrew Kaylor [Fri, 28 Sep 2012 17:35:20 +0000 (17:35 +0000)]
Removing dependency on third party library for Intel JIT event support.
Patch committed on behalf of Kirill Uhanov

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164831 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoPackedVector: Make the BitVector implementation configurable.
Benjamin Kramer [Fri, 28 Sep 2012 16:40:29 +0000 (16:40 +0000)]
PackedVector: Make the BitVector implementation configurable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164826 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoProvide malloc-free sentinels for the SparseBitVector internals.
Benjamin Kramer [Fri, 28 Sep 2012 15:36:41 +0000 (15:36 +0000)]
Provide malloc-free sentinels for the SparseBitVector internals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164823 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoReplace the use of strncpy() and sprintf() with std::string and LLVM streams.
Dmitri Gribenko [Fri, 28 Sep 2012 14:15:28 +0000 (14:15 +0000)]
Replace the use of strncpy() and sprintf() with std::string and LLVM streams.

Patch by Martinez, Javier E.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164822 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoCorrelatedPropagation: BasicBlock::removePredecessor can simplify PHI nodes. If the...
Benjamin Kramer [Fri, 28 Sep 2012 10:42:50 +0000 (10:42 +0000)]
CorrelatedPropagation: BasicBlock::removePredecessor can simplify PHI nodes. If the it's the condition of a SwitchInst, reload it.

Fixes PR13972.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164818 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake backtraces work again with both the configure and cmake build.
Benjamin Kramer [Fri, 28 Sep 2012 10:10:46 +0000 (10:10 +0000)]
Make backtraces work again with both the configure and cmake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164817 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGlobalOpt: non-constexpr bitcasts or GEPs can occur even if the global value is only...
Benjamin Kramer [Fri, 28 Sep 2012 10:01:27 +0000 (10:01 +0000)]
GlobalOpt: non-constexpr bitcasts or GEPs can occur even if the global value is only stored once.

Fixes PR13968.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164815 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSurprisingly, we missed a trivial case here. Fix that!
Nick Lewycky [Fri, 28 Sep 2012 09:33:53 +0000 (09:33 +0000)]
Surprisingly, we missed a trivial case here. Fix that!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164814 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove a LLVM_DELETED_FUNCTION from destructor to fix -std=c++11 build on gcc 4.7.
Craig Topper [Fri, 28 Sep 2012 07:17:01 +0000 (07:17 +0000)]
Remove a LLVM_DELETED_FUNCTION from destructor to fix -std=c++11 build on gcc 4.7.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164813 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago1. Add load/store words from the stack
Reed Kotler [Fri, 28 Sep 2012 02:26:24 +0000 (02:26 +0000)]
1. Add load/store words from the stack
2. As part of this, added assembly format FEXT_RI16_SP_explicit_ins and
moved other lines for FEXT_RI16 formats to be in the right place in the code.
3. Added mayLoad and mayStore assignements for the load/store instructions added and for ones already there that did not have this assignment.
4. Another patch will deal with the problem of load/store byte/halfword to the stack. This is a particular Mips16 problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164811 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove <def,read-undef> flags from partial redefinitions.
Jakob Stoklund Olesen [Thu, 27 Sep 2012 23:31:32 +0000 (23:31 +0000)]
Remove <def,read-undef> flags from partial redefinitions.

The new coalescer can turn a full virtual register definition into a
partial redef by merging another value into an unused vector lane.

Make sure to clear the <read-undef> flag on such defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164807 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix more crlf issues.
Micah Villmow [Thu, 27 Sep 2012 22:14:10 +0000 (22:14 +0000)]
Fix more crlf issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164805 91177308-0d34-0410-b5e6-96231b3b80d8