John McCall
659a337c74
Apply attributes to explicit specializations. Specializations which
...
don't provide their own explicit visibility attributes should get them
from the template. Fixes rdar://problem/8778497.
llvm-svn: 122136
2010-12-18 03:30:47 +00:00
Jakob Stoklund Olesen
1fa7958eaa
Apparently, operandices is not a word.
...
llvm-svn: 122135
2010-12-18 03:28:32 +00:00
Rafael Espindola
fdaae0d16f
Move some data to the TargetWriter.
...
llvm-svn: 122134
2010-12-18 03:27:34 +00:00
Jakob Stoklund Olesen
3b2966dc7d
Teach the inline spiller to attempt folding a load instruction into its single
...
use before rematerializing the load.
This allows us to produce:
addps LCPI0_1(%rip), %xmm2
Instead of:
movaps LCPI0_1(%rip), %xmm3
addps %xmm3, %xmm2
Saving a register and an instruction. The standard spiller already knows how to
do this.
llvm-svn: 122133
2010-12-18 03:04:14 +00:00
Jakob Stoklund Olesen
2a9f194b00
Tweak debug spew.
...
llvm-svn: 122132
2010-12-18 03:04:11 +00:00
Bill Wendling
429bb1e2cc
r120333 changed the opcode for the Thumb1 stuff from ARM::tMOVr to
...
ARM::tMOVgpr2gpr. But this check didn't change. As a result, we were getting
misaligned references to the jump table from an ADR instruction.
There is a test case, but unfortunately it's sensitive to random code changes.
<rdar://problem/8782223>
llvm-svn: 122131
2010-12-18 02:13:59 +00:00
Greg Clayton
3b14763356
Linux patches from Stephen Wilson.
...
llvm-svn: 122130
2010-12-18 01:54:34 +00:00
Bill Wendling
a4dda53686
RemoveUnusedCPEntries can change things. Track it.
...
llvm-svn: 122129
2010-12-18 01:53:06 +00:00
Greg Clayton
5c844d51c8
Linux patches from Stephen Wilson.
...
llvm-svn: 122128
2010-12-18 01:52:51 +00:00
Greg Clayton
deaeb2c18e
Linux patches from Stephen Wilson.
...
llvm-svn: 122127
2010-12-18 01:52:08 +00:00
Greg Clayton
b096dcae4a
Linux patches from Stephen Wilson.
...
llvm-svn: 122126
2010-12-18 01:49:57 +00:00
Greg Clayton
082bb00bc4
Linux patches from Stephen Wilson.
...
llvm-svn: 122125
2010-12-18 01:48:09 +00:00
Rafael Espindola
af5ab7ad26
Test for push being relaxed.
...
llvm-svn: 122124
2010-12-18 01:16:59 +00:00
Jakob Stoklund Olesen
7971a3eaff
Check that the register is live-in to the loop header before inserting copies in
...
the loop predecessors.
The register can be live-out from a predecessor without being live-in to the
loop header if there is a critical edge from the predecessor.
llvm-svn: 122123
2010-12-18 01:06:19 +00:00
Nick Lewycky
1d108cb962
Fix GCC warning:
...
lib/CodeGen/RegAllocGreedy.cpp:311: error: unused variable 'PhysReg' [-Wunused-variable]
llvm-svn: 122122
2010-12-18 01:05:55 +00:00
Rafael Espindola
625ccf8222
Relax push instructions.
...
llvm-svn: 122121
2010-12-18 01:01:34 +00:00
Nick Lewycky
55a700b0cf
Make LazyValueInfo non-recursive.
...
llvm-svn: 122120
2010-12-18 01:00:40 +00:00
Bob Wilson
eda2a9ec89
Rearrange some Neon multiclasses. No functional changes.
...
llvm-svn: 122119
2010-12-18 00:42:58 +00:00
Sean Callanan
ed85f908d6
Fixed the handling of the _cmd parameter in the i386
...
ABI.
llvm-svn: 122118
2010-12-18 00:32:25 +00:00
Michael J. Spencer
e169675474
Replace all uses of PathV1::getLast with PathV2::filename.
...
llvm-svn: 122117
2010-12-18 00:19:12 +00:00
Michael J. Spencer
762a55b19f
Support/PathV1: Deprecate getLast.
...
llvm-svn: 122116
2010-12-18 00:19:10 +00:00
Michael J. Spencer
8c8125d74f
CMake: Cleanup and document MSVC warning flags.
...
llvm-svn: 122115
2010-12-18 00:18:58 +00:00
Owen Anderson
e663aeacf9
Add support to CallbackVH to receive notification when a Value's use-list changes.
...
llvm-svn: 122114
2010-12-18 00:07:15 +00:00
Jakob Stoklund Olesen
bf4550e3fb
Pass a Banner argument to the machine code verifier both from
...
createMachineVerifierPass and MachineFunction::verify.
The banner is printed before the machine code dump, just like the printer pass.
llvm-svn: 122113
2010-12-18 00:06:56 +00:00
Bob Wilson
00871c71e9
Fix result type of Neon floating-point comparisons against zero.
...
The result vector elements are always integers. Radar 8782191.
llvm-svn: 122112
2010-12-18 00:04:33 +00:00
Bob Wilson
f268d0303b
Add some missing entries in ARMTargetLowering::getTargetNodeName.
...
llvm-svn: 122111
2010-12-18 00:04:26 +00:00
Bill Wendling
5e3605552e
Whitespace fixes. No functionality change.
...
llvm-svn: 122110
2010-12-17 23:27:41 +00:00
Jakob Stoklund Olesen
cf846100d8
Avoid dereferencing end() in collectInterferingVRegs() when there is no
...
interference.
llvm-svn: 122108
2010-12-17 23:16:38 +00:00
Jakob Stoklund Olesen
2e98ee31b3
Make the -verify-regalloc command line option available to base classes as
...
RegAllocBase::VerifyEnabled.
Run the machine code verifier in a few interesting places during RegAllocGreedy.
llvm-svn: 122107
2010-12-17 23:16:35 +00:00
Jakob Stoklund Olesen
1740e00104
Enable loop splitting in RegAllocGreedy.
...
The heuristics split around the largest loop where the current register may be
allocated without interference.
llvm-svn: 122106
2010-12-17 23:16:32 +00:00
Nate Begeman
7aa18bf46a
Add vector versions of some existing scalar transforms to aid codegen in matching psign & pblend operations to the IR produced by clang/gcc for their C idioms.
...
llvm-svn: 122105
2010-12-17 23:12:19 +00:00
Bill Wendling
3fff1fd49b
During local stack slot allocation, the materializeFrameBaseRegister function
...
may be called. If the entry block is empty, the insertion point iterator will be
the "end()" value. Calling ->getParent() on it (among others) causes problems.
Modify materializeFrameBaseRegister to take the machine basic block and insert
the frame base register at the beginning of that block. (It's very similar to
what the code does all ready. The only difference is that it will always insert
at the beginning of the entry block instead of after a previous materialization
of the frame base register. I doubt that that matters here.)
<rdar://problem/8782198>
llvm-svn: 122104
2010-12-17 23:09:14 +00:00
Bob Wilson
5408144add
Fix a DAGCombiner crash when folding binary vector operations with constant
...
BUILD_VECTOR operands where the element type is not legal. I had previously
changed this code to insert TRUNCATE operations, but that was just wrong.
llvm-svn: 122102
2010-12-17 23:06:49 +00:00
Bob Wilson
494d7f0367
Combine several vector-related DAGCombiner tests.
...
llvm-svn: 122101
2010-12-17 23:06:46 +00:00
Bob Wilson
a7dabbd2cf
Avoid report_fatal_error in ARM's PrintAsmOperand method.
...
The standard error handling in AsmPrinter::EmitInlineAsm handles this much
better, so just use it.
llvm-svn: 122100
2010-12-17 23:06:42 +00:00
Bob Wilson
ec3ff9c727
Remove trailing whitespace.
...
llvm-svn: 122099
2010-12-17 23:06:32 +00:00
Nate Begeman
97b72c99d2
Add support for matching psign & plendvb to the x86 target
...
Remove unnecessary pandn patterns, 'vnot' patfrag looks through bitcasts
llvm-svn: 122098
2010-12-17 22:55:37 +00:00
Eric Christopher
62a78b04a8
Going back to the drawing board with these two awful hacks.
...
llvm-svn: 122096
2010-12-17 22:46:41 +00:00
Fariborz Jahanian
382c040da2
Warn when synthesizing a property which is
...
implicitly atomic under -Wimplicit-atomic-properties
flag. // rdar://8774580
llvm-svn: 122095
2010-12-17 22:28:16 +00:00
Jakob Stoklund Olesen
00b29fbdec
Add more checks to IntervalMapOverlaps::advance() to ensure that advanceTo sees
...
monotonic keys.
llvm-svn: 122093
2010-12-17 22:07:54 +00:00
Jakob Stoklund Olesen
54912ed921
It is allowed to call IntervalMap::const_iterator::advanceTo() with a key that
...
moves the iterator to end(), and it is valid to call it on end().
That means it is valid to call advanceTo() with any monotonic key sequence.
llvm-svn: 122092
2010-12-17 22:07:51 +00:00
Owen Anderson
79855298b9
Thumb's forced-PC-alignment requirement applies to the _total_ displacement, not just to the fragment relative
...
portion. While the fragment boundary is usually already aligned, it is possible for it not to be, which
would lead to a non-aligned final displacement.
llvm-svn: 122091
2010-12-17 21:49:48 +00:00
Dale Johannesen
cd538afa52
Add a transform to DAG Combiner. This improves the
...
code for the case where 32-bit divide by constant is
turned into 64-bit multiply by constant. 8771012.
llvm-svn: 122090
2010-12-17 21:45:49 +00:00
Michael J. Spencer
01a984023d
Fix 80 col.
...
llvm-svn: 122089
2010-12-17 21:32:47 +00:00
Michael J. Spencer
1a4fe8c991
Fix spelling.
...
llvm-svn: 122088
2010-12-17 21:22:33 +00:00
Michael J. Spencer
f28df4cdba
Replace all uses of PathV1::isAbsolute with PathV2::is_{absolute,relative}.
...
llvm-svn: 122087
2010-12-17 21:22:22 +00:00
Michael J. Spencer
559e09e39d
Support/Path: Deprecate PathV1::isAbsolute.
...
llvm-svn: 122086
2010-12-17 21:21:31 +00:00
Benjamin Kramer
ffa42ced39
PathV2: Use StringRef::substr to simplify substring creation.
...
llvm-svn: 122085
2010-12-17 20:27:37 +00:00
Bill Wendling
95e69bf775
Initialize variables in the correct order.
...
llvm-svn: 122084
2010-12-17 19:53:28 +00:00
Douglas Gregor
a97c80bcd2
Encapsulate TemplateArgument::Kind
...
llvm-svn: 122083
2010-12-17 19:31:15 +00:00