Benjamin Kramer
e59de5e9b0
Use an array instead of a SmallVector.
...
llvm-svn: 92264
2009-12-29 11:04:52 +00:00
Chris Lattner
d981b3fc91
remove a bunch of unneeded functions.
...
llvm-svn: 92263
2009-12-29 09:32:19 +00:00
Chris Lattner
430379c2d5
major cleanups, much of this file was incorrectly indented.
...
llvm-svn: 92262
2009-12-29 09:22:47 +00:00
Chris Lattner
f0034478f8
one pass of cleanup over DebugInfo.h. Much more is still needed.
...
llvm-svn: 92261
2009-12-29 09:15:46 +00:00
Chris Lattner
31895ba512
prune #includes.
...
llvm-svn: 92260
2009-12-29 09:12:29 +00:00
Chris Lattner
84e9de4a58
Final step in the metadata API restructuring: move the
...
getMDKindID/getMDKindNames methods to LLVMContext (and add
convenience methods to Module), eliminating MetadataContext.
Move the state that it maintains out to LLVMContext.
llvm-svn: 92259
2009-12-29 09:01:33 +00:00
Chris Lattner
a78c161348
remove useless argument.
...
llvm-svn: 92256
2009-12-29 08:03:58 +00:00
Chris Lattner
fde39fb4f6
privatize another interface.
...
llvm-svn: 92255
2009-12-29 07:56:15 +00:00
Chris Lattner
c39498971e
the only call to this function (from clang) has been removed, zap it.
...
llvm-svn: 92254
2009-12-29 07:50:09 +00:00
Chris Lattner
dcc5032728
remove some unneeded Metadata interfaces.
...
llvm-svn: 92252
2009-12-29 07:44:16 +00:00
Chris Lattner
20668429a2
fix .cpp file to not wrap the entire file in namespace blocks.
...
llvm-svn: 92250
2009-12-29 07:28:33 +00:00
Chris Lattner
110fc20bd8
tidy up debug info comments, use ->isVoidTy() where reasonable.
...
llvm-svn: 92249
2009-12-29 07:25:48 +00:00
Sanjiv Gupta
543a6716fb
Extern declaration for unordered.f32 libcall was not being emitted. Fixed that.
...
llvm-svn: 92242
2009-12-29 03:24:34 +00:00
Chris Lattner
e7990f78bf
When doing v1->RAUW(v2), don't do anything to metadata. We don't know
...
why one was replaced with the other. Even in the specific case of
debug information, it doesn't make sense to transfer the location over,
this will just result in jumbled loc info.
llvm-svn: 92241
2009-12-29 02:53:52 +00:00
Chris Lattner
692c53dbf0
sink the Instruction::HasMetadata bit into SubclassData.
...
llvm-svn: 92240
2009-12-29 02:46:09 +00:00
Chris Lattner
2c82be93e6
add a layer of accessors around the Value::SubClassData member, and use
...
a convention (shadowing the setter with private forwarding function) to
prevent subclasses from accidentally using it.
This exposed some bogosity in ConstantExprs, which was propaging the
opcode of the constant expr into the NUW/NSW/Exact field in the
getWithOperands/getWithOperandReplaced methods.
llvm-svn: 92239
2009-12-29 02:14:09 +00:00
Chris Lattner
9ec640a902
This is a major cleanup of the instruction metadata interfaces that
...
I asked Devang to do back on Sep 27. Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().
This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte. Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.
This also fixes some confusion in getMDs and its clients about
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.
This introduces a number of fixme's which I'll follow up on.
llvm-svn: 92235
2009-12-28 23:41:32 +00:00
Chris Lattner
8ca10b9e64
add IRBuilder.cpp to cmake
...
llvm-svn: 92233
2009-12-28 21:52:41 +00:00
Chris Lattner
28de6cdbf5
remove #include of Function.h from IRBuilder
...
llvm-svn: 92231
2009-12-28 21:50:56 +00:00
Chris Lattner
e70c40e8ac
move debug info stuff out of line, allowing two #includes
...
to go away from IRBuilder.h
llvm-svn: 92230
2009-12-28 21:45:40 +00:00
Chris Lattner
e0b9847223
split code that doesn't need to be templated out of IRBuilder into a new
...
non-templated IRBuilderBase class. Move that large CreateGlobalString
out of line, eliminating the need to #include GlobalVariable.h in IRBuilder.h
llvm-svn: 92227
2009-12-28 21:28:46 +00:00
Chris Lattner
cd3aa9d1ff
rename getMDKind -> getMDKindID, make it autoinsert if an MD Kind
...
doesn't exist already, eliminate registerMDKind. Tidy up a bunch
of random stuff.
llvm-svn: 92225
2009-12-28 20:45:51 +00:00
Chris Lattner
2b65f2d7d4
rename getHandlerNames to getMDKindNames, simplify its interface
...
and simplify all the clients that use it.
llvm-svn: 92224
2009-12-28 20:10:43 +00:00
Chris Lattner
5420d062f6
tidy up and delete a dead smallvector.
...
llvm-svn: 92223
2009-12-28 19:49:00 +00:00
Benjamin Kramer
798349c4d1
Add missing include (for inline PATypeHolder::get).
...
llvm-svn: 92222
2009-12-28 12:27:56 +00:00
Chris Lattner
8c6fbdc63e
avoid a completely unneeded linear walk.
...
llvm-svn: 92221
2009-12-28 09:32:10 +00:00
Chris Lattner
9229f79945
Eliminate two bits of ugliness in MDNode::replaceElement:
...
eliminate the temporary smallvector, and only do FindNodeOrInsertPos
twice if the first one succeeds and we delete a node.
llvm-svn: 92220
2009-12-28 09:24:53 +00:00
Chris Lattner
e36f3cf0ca
rearrange some methods, no functionality change.
...
llvm-svn: 92219
2009-12-28 09:12:35 +00:00
Chris Lattner
2cfabb2151
avoid temporary CallbackVH's.
...
llvm-svn: 92218
2009-12-28 09:10:16 +00:00
Chris Lattner
14d3bc91c4
Rewrite the function-local validation logic for MDNodes (most of r91708).
...
Among other benefits, this doesn't leak the SmallPtrSet, has the verifier
code in the verifier pass, actually does the verification at the end,
and is considerably simpler.
llvm-svn: 92217
2009-12-28 09:07:21 +00:00
Chris Lattner
fcc7918518
rename MDNode instance variables to something meaningful.
...
llvm-svn: 92216
2009-12-28 08:48:12 +00:00
Chris Lattner
2f436b213d
snip one more #include from Metadata.h
...
llvm-svn: 92214
2009-12-28 08:30:43 +00:00
Chris Lattner
77f471055d
prune some #includes
...
llvm-svn: 92212
2009-12-28 08:24:16 +00:00
Chris Lattner
6dd4686b48
Metadata.h doesn't need to include ValueHandle.h anymore.
...
llvm-svn: 92211
2009-12-28 08:20:46 +00:00
Chris Lattner
739292d361
change the strange MetadataContext::getMDs function to expose less
...
irrelevant internal implementation details to clients.
llvm-svn: 92210
2009-12-28 08:14:54 +00:00
Chris Lattner
4967dbad20
change NamedMDNode to use a pimpl for its operand list instead
...
of making it a declared part of the value.
llvm-svn: 92209
2009-12-28 08:07:14 +00:00
Chris Lattner
0a47dbff64
eliminate the elem_* iterator stuff from NamedMDNode.
...
llvm-svn: 92208
2009-12-28 07:57:01 +00:00
Chris Lattner
19c825e082
move ElementVH out of the MDNode class into the MDNode.cpp file. Among
...
other things, this avoids vtable and rtti data for it being splatted in
every translation unit that uses it.
llvm-svn: 92207
2009-12-28 07:41:54 +00:00
Chris Lattner
62ba56ca23
move these out of their own timer groups into the 'uncategorized' groups.
...
llvm-svn: 92206
2009-12-28 07:41:18 +00:00
Sanjiv Gupta
efad5b2a93
Fixed llc crash for zext (i1 -> i8) loads.
...
llvm-svn: 92201
2009-12-28 04:53:24 +00:00
Sanjiv Gupta
d17915f6f0
Allow targets to specify the return type of libcalls that are generated for floating point comparisons, rather than hard-coding them as i32.
...
llvm-svn: 92199
2009-12-28 02:40:33 +00:00
Bill Wendling
5457c30e95
Mark variable used by 'assert' as 'unused'.
...
llvm-svn: 92198
2009-12-28 02:07:00 +00:00
Bill Wendling
a717566a5c
Remove dead variable.
...
llvm-svn: 92197
2009-12-28 02:05:36 +00:00
Bill Wendling
6904b5a782
Remove dead variable.
...
llvm-svn: 92196
2009-12-28 02:04:53 +00:00
Bill Wendling
da542f1b43
Remove dead variable.
...
llvm-svn: 92195
2009-12-28 02:01:06 +00:00
Bill Wendling
4f58b72e9e
Remove dead variable.
...
llvm-svn: 92194
2009-12-28 02:00:30 +00:00
Bill Wendling
4e43e78b2e
Remove dead variable.
...
llvm-svn: 92193
2009-12-28 01:57:39 +00:00
Bill Wendling
3f3f9a1bc8
Remove dead store.
...
llvm-svn: 92192
2009-12-28 01:54:15 +00:00
Bill Wendling
32467ad0f7
Remove dead store and simplify code.
...
llvm-svn: 92191
2009-12-28 01:53:00 +00:00
Bill Wendling
3fbb708d4f
Remove dead store.
...
llvm-svn: 92190
2009-12-28 01:51:30 +00:00
Bill Wendling
08d36672e1
Remove dead variable.
...
llvm-svn: 92189
2009-12-28 01:48:56 +00:00
Bill Wendling
5badb477fa
Remove dead variable.
...
llvm-svn: 92188
2009-12-28 01:47:48 +00:00
Bill Wendling
6f5d4b9eb6
Remove dead store.
...
llvm-svn: 92187
2009-12-28 01:44:39 +00:00
Bill Wendling
8042a829e5
Remove dead variable.
...
llvm-svn: 92186
2009-12-28 01:42:12 +00:00
Bill Wendling
0eae096c38
Remove dead variable.
...
llvm-svn: 92185
2009-12-28 01:41:12 +00:00
Bill Wendling
b96be04b8a
Remove dead variable.
...
llvm-svn: 92184
2009-12-28 01:36:02 +00:00
Bill Wendling
ae29dded44
Remove dead store. The initial value was never used, but always overridden.
...
llvm-svn: 92182
2009-12-28 01:31:11 +00:00
Bill Wendling
baec6e54f4
Add an "ATTRIBUTE_UNUSED" macro (and use it). It's for variables which are
...
mainly used in debugging and/or assert situations. It should make the compiler
and the static analyzer stop nagging us about them.
llvm-svn: 92181
2009-12-28 01:20:29 +00:00
Bill Wendling
008e2e1e7f
Remove dead variable.
...
llvm-svn: 92180
2009-12-28 01:02:21 +00:00
Bill Wendling
8d5a69f960
Remove dead variable.
...
llvm-svn: 92179
2009-12-28 01:01:14 +00:00
Bill Wendling
091861587d
Remove dead variable.
...
llvm-svn: 92178
2009-12-28 01:00:12 +00:00
Eli Friedman
3a53d1cb1a
PR5886: Make sure IMUL32m is marked as setting EFLAGS, so scheduling doesn't
...
do illegal stuff around it. No testcase because the issue is very fragile.
llvm-svn: 92167
2009-12-26 20:08:30 +00:00
Bill Wendling
c49babee26
Avoid assigning to Changed when it won't be used after the return.
...
llvm-svn: 92160
2009-12-25 13:50:18 +00:00
Bill Wendling
f3d0708729
Remove dead store.
...
llvm-svn: 92159
2009-12-25 13:45:50 +00:00
Bill Wendling
8273efdd31
Remove dead store from copy-pasto.
...
llvm-svn: 92158
2009-12-25 13:44:36 +00:00
Bill Wendling
736d9ee6b8
Remove dead store.
...
llvm-svn: 92157
2009-12-25 13:39:58 +00:00
Bill Wendling
32e19f65c4
Remove dead store.
...
llvm-svn: 92156
2009-12-25 13:37:27 +00:00
John McCall
75f1b8beeb
Implement support for converting to string at "natural precision", and fix some
...
major bugs in long-precision conversion.
llvm-svn: 92150
2009-12-24 23:18:09 +00:00
John McCall
c6cdebbedd
Substantially optimize APFloat::toString() by doing a single large divide to
...
cut the significand down to the desired precision *before* entering the
core divmod loop. Makes the overall algorithm logarithmic in the exponent.
There's still a lot of room for improvement here, but this gets the
performance back down to acceptable-for-diagnostics levels, even for
long doubles.
negligible, even on long doubles.
llvm-svn: 92130
2009-12-24 12:16:56 +00:00
John McCall
c71c44ec7f
Add accessors for the largest-magnitude, smallest-magnitude, and
...
smallest-normalized-magnitude values in a given FP semantics.
Provide an APFloat-to-string conversion which I am quite ready to admit could
be much more efficient.
llvm-svn: 92126
2009-12-24 08:56:26 +00:00
John McCall
dad4e2e4e5
Set Remainder before Quotient in case Quotient and LHS alias. The new
...
order should be immune to such problems.
llvm-svn: 92124
2009-12-24 08:52:06 +00:00
Chris Lattner
4e96d36f72
handle equality memcmp of 8 bytes on x86-64 with two unaligned loads and a
...
compare. On other targets we end up with a call to memcmp because we don't
want 16 individual byte loads. We should be able to use movups as well, but
we're failing to select the generated icmp.
llvm-svn: 92107
2009-12-24 01:07:17 +00:00
David Greene
12d565aa89
Change errs() to dbgs().
...
llvm-svn: 92099
2009-12-24 00:39:02 +00:00
Chris Lattner
5d3919d5f9
move an optimization for memcmp out of simplifylibcalls and into
...
SDISel. This optimization was causing simplifylibcalls to
introduce type-unsafe nastiness. This is the first step, I'll be
expanding the memcmp optimizations shortly, covering things that
we really really wouldn't want simplifylibcalls to do.
llvm-svn: 92098
2009-12-24 00:37:38 +00:00
David Greene
48aa5efa78
Change errs() to dbgs().
...
llvm-svn: 92097
2009-12-24 00:34:21 +00:00
David Greene
42be8783c0
Change errs() to dbgs().
...
llvm-svn: 92096
2009-12-24 00:31:35 +00:00
David Greene
f215ecfc4d
Change errs() to dbgs().
...
llvm-svn: 92094
2009-12-24 00:27:55 +00:00
David Greene
d91c862004
Change errs() to dbgs().
...
llvm-svn: 92093
2009-12-24 00:14:25 +00:00
David Greene
7d1f350ec6
Change errs() to dbgs().
...
llvm-svn: 92092
2009-12-24 00:06:26 +00:00
David Greene
06d50ca292
Change errs() to dbgs().
...
llvm-svn: 92091
2009-12-23 23:47:53 +00:00
David Greene
82413e3a13
Change errs() to dbgs().
...
llvm-svn: 92088
2009-12-23 23:38:28 +00:00
David Greene
c0eced92e3
Change dbgs() back to errs() as Chris requested.
...
llvm-svn: 92086
2009-12-23 23:29:28 +00:00
David Greene
693db7a309
Change dbgs() back to errs() as Chris requested.
...
llvm-svn: 92085
2009-12-23 23:27:15 +00:00
Chris Lattner
7dbb93e430
reorder to follow a normal fall-through style, no functionality change.
...
llvm-svn: 92084
2009-12-23 23:24:51 +00:00
David Greene
9c8c8af11d
Clarify how dbgs() operates.
...
llvm-svn: 92083
2009-12-23 23:23:15 +00:00
David Greene
0c06474821
Change dbgs() back to errs() for assert messages as Chris requested.
...
llvm-svn: 92081
2009-12-23 23:14:41 +00:00
David Greene
5980bb69ba
Change dbgs() back to errs() for assert messages as Chris requested.
...
llvm-svn: 92080
2009-12-23 23:09:39 +00:00
Chris Lattner
0f8308d48a
sizeof(char) is always 1.
...
llvm-svn: 92079
2009-12-23 23:03:24 +00:00
David Greene
b73d637eba
Change dbgs() back to errs() for assert messages as Chris requested.
...
llvm-svn: 92077
2009-12-23 23:00:50 +00:00
David Greene
f227aac0f4
Change dbgs() back to errs() for assert messages as Chris requested.
...
llvm-svn: 92076
2009-12-23 22:59:29 +00:00
David Greene
1b160211dd
Remove dump routine and the associated Debug.h from a header. Patch up
...
other files to compensate.
llvm-svn: 92075
2009-12-23 22:58:38 +00:00
David Greene
dafe3d88d6
Change dbgs() back to errs() as Chris requested.
...
llvm-svn: 92073
2009-12-23 22:49:57 +00:00
David Greene
02480b7d83
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92071
2009-12-23 22:35:10 +00:00
David Greene
b348240e9c
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92068
2009-12-23 22:28:01 +00:00
David Greene
62d4863b56
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92067
2009-12-23 22:18:14 +00:00
David Greene
f2377def25
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92066
2009-12-23 22:10:20 +00:00
David Greene
fc8ae247eb
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92063
2009-12-23 21:58:29 +00:00
David Greene
4caa552456
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92060
2009-12-23 21:48:18 +00:00
Jakob Stoklund Olesen
e82ce92826
Move kill flags when the same register occurs more than once in a sequence.
...
llvm-svn: 92058
2009-12-23 21:34:03 +00:00
Jakob Stoklund Olesen
17a89f1f8a
Handle undef operands properly.
...
llvm-svn: 92054
2009-12-23 21:28:42 +00:00
Jakob Stoklund Olesen
f18e89a0bf
Make insert position available to MergeOpsUpdate.
...
Rearrange arguments.
No functional changes
llvm-svn: 92053
2009-12-23 21:28:37 +00:00
Jakob Stoklund Olesen
55c03c7cef
Perform kill flag calculations in new method. No functional changes.
...
llvm-svn: 92052
2009-12-23 21:28:31 +00:00
Jakob Stoklund Olesen
423f1e70e6
Move repeated code to a new method. No functional change.
...
llvm-svn: 92051
2009-12-23 21:28:23 +00:00
David Greene
c8b577197f
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92050
2009-12-23 21:27:29 +00:00
David Greene
fd7042fa79
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92048
2009-12-23 21:16:54 +00:00
David Greene
28b8bcd98d
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92046
2009-12-23 21:06:14 +00:00
David Greene
33f717c804
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92042
2009-12-23 20:52:41 +00:00
David Greene
016e0af68d
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92040
2009-12-23 20:43:58 +00:00
David Greene
1c88ae8f15
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92039
2009-12-23 20:34:27 +00:00
David Greene
e34eb9cc32
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92037
2009-12-23 20:20:46 +00:00
David Greene
a2539e0ff7
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92035
2009-12-23 20:10:59 +00:00
David Greene
2a072c7ac5
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92034
2009-12-23 20:03:58 +00:00
David Greene
218c909299
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92033
2009-12-23 19:51:44 +00:00
David Greene
bcfb683e76
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92032
2009-12-23 19:45:49 +00:00
David Greene
b7dde86ae2
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92029
2009-12-23 19:27:59 +00:00
David Greene
f0082114af
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92026
2009-12-23 19:21:19 +00:00
David Greene
4d8f4303bd
Convert debug messages to use dbgs(). Generally this means
...
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92024
2009-12-23 19:15:13 +00:00
Douglas Gregor
0f306eba2f
Alternative fix to make sure that the extern declarations used by
...
DynamicLibrary::SearchForAddressOfSymbol refer to declarations in the
global namespace.
llvm-svn: 92023
2009-12-23 19:12:50 +00:00
Douglas Gregor
44f2fe915f
Revert 92020 until I figure out a more portable fix
...
llvm-svn: 92021
2009-12-23 19:04:10 +00:00
Douglas Gregor
9f306d1b18
Move the extern symbol declarations outside of
...
DynamicLibrary::SearchForAddressOfSymbol and force them to have "C"
linkage.
Interestingly, GCC treats the block-scoped "extern" declarations we
previously had as if they were extern "C" declarations (or, at least,
were in the global namespace), so that GCC bug papered over this LLVM
bug. Clang and EDG get the linkage correct; this new variant seems to
work for both GCC and Clang.
llvm-svn: 92020
2009-12-23 18:56:27 +00:00
Nuno Lopes
6abe311a0f
move a few more symbols to .rodata
...
llvm-svn: 92011
2009-12-23 17:48:10 +00:00
Douglas Gregor
37e54f9d4d
De-bork CMake build
...
llvm-svn: 92003
2009-12-23 17:03:46 +00:00
David Greene
3f7cf289ed
Provide dbgs(), a circular-buffering debug output stream. By default it
...
simply passes output to errs(). If -debug-buffer-size=N is set N > 0,
dbgs() buffers its output until program termination and dumps the last N
characters sent to it. This is handy when debugging very large inputs.
llvm-svn: 92002
2009-12-23 16:39:06 +00:00
David Greene
f1f78a15e1
Add circular_raw_ostream, which buffers its output in a circular queue
...
and outputs it when explicitly flushed. The intent is to use it in
situations such as debug output logging where a signal handler can take
care of flushing the buffer at program termination.
llvm-svn: 92001
2009-12-23 16:08:15 +00:00
Sanjiv Gupta
7872817f59
Reapply 91904.
...
llvm-svn: 91996
2009-12-23 11:19:09 +00:00
Sanjiv Gupta
1d6f359867
Added missing patterns for subtract instruction.
...
llvm-svn: 91995
2009-12-23 10:56:02 +00:00
Sanjiv Gupta
70e1523215
Reverting back 91904.
...
llvm-svn: 91993
2009-12-23 09:46:01 +00:00
Dale Johannesen
b4485fd8a9
Use more sensible type for flags in asms. PR 5570.
...
Patch by Sylve`re Teissier (sorry, ASCII only).
llvm-svn: 91988
2009-12-23 07:32:51 +00:00
Eric Christopher
ce677a909d
Update objectsize intrinsic and associated dependencies. Fix
...
lowering code and update testcases.
llvm-svn: 91979
2009-12-23 02:51:48 +00:00
Chris Lattner
f77ca5f9f5
really remove the instruction, don't just comment it out
...
llvm-svn: 91976
2009-12-23 01:46:40 +00:00
Chris Lattner
d7e8bd73fe
completely eliminate the MOV16r0 'instruction'. The only
...
interesting part of this is the divrem changes, which are
already tested by CodeGen/X86/divrem.ll.
llvm-svn: 91975
2009-12-23 01:45:04 +00:00
Sean Callanan
0c1d56a0c8
More fixes for Visual C++. Replaced several very small
...
static inline functions with macros.
llvm-svn: 91973
2009-12-23 01:32:29 +00:00
Chris Lattner
dbcf2725aa
stop pattern matching 16-bit zero's of a register to MOV16r0,
...
instead use the appropriate subreggy thing. This generates identical
code on some large apps (thanks to Evan's cross class coalescing
stuff he did back in july). This means that MOV16r0 can go away
completely in the future soon.
llvm-svn: 91972
2009-12-23 01:30:26 +00:00
Bill Wendling
ce8aa5aab2
Remove superfluous SDNode ordering.
...
llvm-svn: 91971
2009-12-23 01:28:19 +00:00
Bill Wendling
e7107691df
Remove node ordering from inline asm nodes. It's not needed.
...
llvm-svn: 91961
2009-12-23 00:47:20 +00:00
Bill Wendling
d5577d5bdc
Remove node ordering from VA nodes. It's not needed.
...
llvm-svn: 91958
2009-12-23 00:44:51 +00:00
Bill Wendling
3154bbba16
Revert r91949 r91942 and r91936.
...
llvm-svn: 91953
2009-12-23 00:28:23 +00:00
Bill Wendling
d38b774149
Finish up node ordering in ExpandNode.
...
llvm-svn: 91949
2009-12-23 00:05:09 +00:00
Jakob Stoklund Olesen
c971898a40
Add coalescer asserts.
...
llvm-svn: 91945
2009-12-22 23:54:54 +00:00
Jakob Stoklund Olesen
9d1c8ecf05
Add a SPR register class to the ARM target.
...
Certain Thumb instructions require only SP (e.g. tSTRspi).
llvm-svn: 91944
2009-12-22 23:54:44 +00:00
Jeffrey Yasskin
0c46d96fd0
Partially revert r91626. Materializing extra functions to determine whether
...
they're available_externally broke VMKit, which was relying on the fact that
functions would only be materialized when they were first called. We'll have
to wait for http://llvm.org/PR5737 to really fix this.
I also added a test for one of the F->isDeclaration() calls which wasn't
covered by anything else in the test suite.
llvm-svn: 91943
2009-12-22 23:47:23 +00:00
Bill Wendling
68e8f657a2
Assign ordering to nodes created in ExpandNode. Only roughly 1/2 of the function
...
is finished.
llvm-svn: 91942
2009-12-22 23:44:56 +00:00
Jeffrey Yasskin
412172866e
Fix a crash in JIT::recompileAndRelinkFunction(). It doesn't pass the MCI
...
argument to runJITOnFunction(), which caused a null pointer dereference at
every call.
Patch by Gianluca Guida!
llvm-svn: 91939
2009-12-22 23:18:18 +00:00
Bill Wendling
12c3fc9d60
Assign ordering to SDNodes in PromoteNode. Also fixing a subtle bug where BSWAP
...
was using "Tmp1" in the first getNode call instead of Node->getOperand(0).
llvm-svn: 91936
2009-12-22 22:53:39 +00:00
Sean Callanan
3ccfaafab6
Removed the "inline" keyword from the disassembler decoder,
...
because the Visual C++ build does not build .c files as C99
llvm-svn: 91935
2009-12-22 22:51:40 +00:00
Jakob Stoklund Olesen
47b4d6387f
Remove minimal CFG sanity checks from verifier.
...
These checks would often trigger on unreachable statements inserted by
bugpoint, leading it astray.
It would be nice if we could distinguish unreachable blocks from errors.
llvm-svn: 91923
2009-12-22 21:52:27 +00:00
Jakob Stoklund Olesen
d9cec1fbf7
Allow explicit %reg0 operands beyond what the .td file describes.
...
ARM uses these to indicate predicates.
llvm-svn: 91922
2009-12-22 21:48:20 +00:00
Bill Wendling
237cb134ed
Allow 0 as an order number. Don't assign an order to formal arguments.
...
llvm-svn: 91920
2009-12-22 21:35:02 +00:00
Sean Callanan
983f906451
Fixes to the X86 disassembler:
...
Made LEA memory operands emit only 4 MCInst operands.
Made the scale operand equal 1 for instructions that have no
SIB byte.
llvm-svn: 91919
2009-12-22 21:12:55 +00:00
Chris Lattner
4a7bce50b8
Fix the Convert to scalar to not insert dead loads in the store case. The
...
load is needed when we have a small store into a large alloca (at which
point we get a load/insert/store sequence), but when you do a full-sized
store, this load ends up being dead.
This dead load is bad in really large nasty testcases where the load ends
up causing mem2reg to insert large chains of dependent phi nodes which only
ADCE can delete. Instead of doing this, just don't insert the dead load.
This fixes rdar://6864035
llvm-svn: 91917
2009-12-22 19:33:28 +00:00
Chris Lattner
0fbb62fcc5
fix some fixme's by using twines
...
llvm-svn: 91916
2009-12-22 19:23:33 +00:00
Jakob Stoklund Olesen
affe25dbaf
Use proper move instructions. Make the verifier happy.
...
llvm-svn: 91914
2009-12-22 18:49:55 +00:00
Bob Wilson
c19003bca7
Report an error for bad inline assembly, where the value passed for an
...
"indirect" operand is not a pointer.
llvm-svn: 91913
2009-12-22 18:34:19 +00:00
Evan Cheng
7cd6bfe549
Remove target attribute break-sse-dep. Instead, do not fold load into sse partial update instructions unless optimizing for size.
...
llvm-svn: 91910
2009-12-22 17:47:23 +00:00
Douglas Gregor
0590ad1884
Include based on the current path, since we already -I the X86 target's path. Fixes CMake build
...
llvm-svn: 91908
2009-12-22 17:25:11 +00:00
Sanjiv Gupta
9581b4dc62
While converting one of the operands to a memory operand, we need to check if it is Legal and does not result into a cyclic dep.
...
llvm-svn: 91904
2009-12-22 14:25:37 +00:00
Bob Wilson
0dc93264b1
Generalize SROA to allow the first index of a GEP to be non-zero. Add a
...
missing check that an array reference doesn't go past the end of the array,
and remove some redundant checks for in-bound array and vector references
that are no longer needed.
llvm-svn: 91897
2009-12-22 06:57:14 +00:00
Chris Lattner
4e30207029
Implement PR5795 by merging duplicated return blocks. This could go further
...
by merging all returns in a function into a single one, but simplifycfg
currently likes to duplicate the return (an unfortunate choice!)
llvm-svn: 91890
2009-12-22 06:07:30 +00:00
Chris Lattner
cd79ebb23c
The phi translated pointer can be computed when returning a partially cached result
...
instead of stored. This reduces memdep memory usage, and also eliminates a bunch of
weakvh's. This speeds up gvn on gcc.c-torture/20001226-1.c from 23.9s to 8.45s (2.8x)
on a different machine than earlier.
llvm-svn: 91885
2009-12-22 04:25:02 +00:00
Bill Wendling
fc4c238bd5
Add more plumbing. This time in the LowerArguments and "get" functions which
...
return partial registers. This affected the back-end lowering code some.
Also patch up some places I missed before in the "get" functions.
llvm-svn: 91880
2009-12-22 02:10:19 +00:00
Sean Callanan
09b2d80d2c
Changed REG_* to MODRM_REG_* to avoid conflicts
...
with symbols in AuroraUX's global namespace.
llvm-svn: 91879
2009-12-22 02:07:42 +00:00
Daniel Dunbar
abb0af5166
Fix some may-be-uninitialized var warnings.
...
llvm-svn: 91878
2009-12-22 01:41:37 +00:00
Bill Wendling
5aff4bce9d
Add SDNode ordering to inlined asm and VA functions.
...
llvm-svn: 91876
2009-12-22 01:25:10 +00:00
Eric Christopher
c1b128aa04
Whitespace fixes.
...
llvm-svn: 91875
2009-12-22 01:23:51 +00:00
Bill Wendling
b0bd44f096
Adding more assignment of ordering to SDNodes. This time in the "call" and
...
generic copy functions.
llvm-svn: 91872
2009-12-22 01:11:43 +00:00
Sean Callanan
feddcdf843
Fixed library dependencies between the X86 disassembler and
...
X86 codegen that were causing circular symbol dependencies.
llvm-svn: 91871
2009-12-22 01:11:26 +00:00
Chris Lattner
15c2988820
avoid calling extractMallocCall when it's obvious we don't have
...
a call. This speeds up memdep ~1.5%
llvm-svn: 91869
2009-12-22 01:00:32 +00:00
Bill Wendling
e01ea21d47
Add ordering of SDNodes to LowerCallTo.
...
llvm-svn: 91866
2009-12-22 00:50:32 +00:00
Chris Lattner
0651fc828b
print pcrel immediates as signed values instead of unsigned so that we
...
get things like this out of the disassembler:
0x100000ecb: callq -96
instead of:
0x100000ecb: callq 4294967200
rdar://7491123
llvm-svn: 91864
2009-12-22 00:44:05 +00:00
Bill Wendling
761507cdcc
Now add ordering to SDNodes created by the massive intrinsic lowering function.
...
llvm-svn: 91863
2009-12-22 00:40:51 +00:00
Bill Wendling
d5649e184e
To make things interesting, I added MORE code to set the ordering of
...
SDNodes. This time in the load/store and limited-precision code.
llvm-svn: 91860
2009-12-22 00:12:37 +00:00
Lang Hames
64d9eb0c06
Changed slot index ranges for MachineBasicBlocks to be exclusive of endpoint.
...
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals.
llvm-svn: 91859
2009-12-22 00:11:50 +00:00
Bill Wendling
88d8eb621b
Add more plumbing to assign ordering to SDNodes. Have the "getValue" method
...
assign the ordering when called. Combine some of the ordering assignments to
keep things simple.
llvm-svn: 91857
2009-12-21 23:47:40 +00:00
Daniel Dunbar
8efbce934e
Add suggested parentheses.
...
llvm-svn: 91853
2009-12-21 23:27:57 +00:00
Chris Lattner
8bd3f74d82
Add a fastpath to Load GVN to special case when we have exactly one dominating
...
load to avoid even messing around with SSAUpdate at all. In this case (which
is very common, we can just use the input value directly).
This speeds up GVN time on gcc.c-torture/20001226-1.c from 36.4s to 16.3s,
which still isn't great, but substantially better and this is a simple speedup
that applies to lots of different cases.
llvm-svn: 91851
2009-12-21 23:15:48 +00:00
Bill Wendling
576a9ae88d
More ordering plumbing. This time for GEP. I need to remember to assign
...
orderings to values returned by getValue().
llvm-svn: 91850
2009-12-21 23:10:19 +00:00
Chris Lattner
41cad2092d
refactor some code out to a new helper method.
...
llvm-svn: 91849
2009-12-21 23:04:33 +00:00
Chris Lattner
1cbad45619
improve indentation avoid a pointless conversion from weakvh to trackingvh,
...
no functionality change.
llvm-svn: 91848
2009-12-21 22:43:03 +00:00
Bill Wendling
85f5cca691
Another incremental check-in for assigning ordering to SDNodes. This time for
...
shuffle and insert vector.
llvm-svn: 91847
2009-12-21 22:42:14 +00:00
Bill Wendling
9a0bd2daca
Assign ordering to more instructions. Incremental check-in.
...
llvm-svn: 91846
2009-12-21 22:30:11 +00:00
Bill Wendling
97d31ee226
- Add a bit more plumbing assigning an order to SDNodes.
...
- Modify the "dump" method to emit the order of an SDNode.
llvm-svn: 91845
2009-12-21 21:59:52 +00:00
Anton Korobeynikov
89d281c7c3
Mark FPW as allocable when frame address is taken.
...
llvm-svn: 91841
2009-12-21 20:18:49 +00:00
Bill Wendling
2d7ea292a6
First wave of plumbing for assigning an ordering to SDNodes. This takes care of
...
a lot of the branching instructions.
llvm-svn: 91838
2009-12-21 19:59:38 +00:00
Evan Cheng
c46a0ba3fc
Delete the instruction just before the function terminates for consistency sake.
...
llvm-svn: 91836
2009-12-21 19:53:39 +00:00
Bill Wendling
ecb9172c96
Place SDNodeOrdering.h in the directory it's used.
...
llvm-svn: 91834
2009-12-21 19:34:59 +00:00
Bob Wilson
eb77079db5
Remove special-case SROA optimization of variable indexes to one-element and
...
two-element arrays. After restructuring the SROA code, it was not safe to
do this without adding more checking. It is not clear that this special-case
has really been useful, and removing this simplifies the code quite a bit.
llvm-svn: 91828
2009-12-21 18:39:47 +00:00
Eric Christopher
5c812e2396
Fix setting and default setting of code model for jit. Do this
...
by allowing backends to override routines that will default
the JIT and Static code generation to an appropriate code model
for the architecture.
Should fix PR 5773.
llvm-svn: 91824
2009-12-21 08:15:29 +00:00
Eli Friedman
50c8e9154f
A couple minor README updates.
...
llvm-svn: 91823
2009-12-21 08:03:16 +00:00
Chris Lattner
cd9fb503c8
revert r89298, which was committed without a testcase. I think
...
the underlying PHI node insertion issue in SSAUpdate is fixed.
llvm-svn: 91821
2009-12-21 07:45:57 +00:00
Chris Lattner
c54fd1e777
fix PR5837 by having SSAUpdate reuse phi nodes for the
...
'GetValueInMiddleOfBlock' case, instead of inserting
duplicates.
A similar fix is almost certainly needed by the machine-level
SSAUpdate implementation.
llvm-svn: 91820
2009-12-21 07:16:11 +00:00
Chris Lattner
c9bfe8679e
give instcombine some helper functions for matching MIN and MAX, and
...
implement some optimizations for MIN(MIN()) and MAX(MAX()) and
MIN(MAX()) etc. This substantially improves the code in PR5822 but
doesn't kick in much elsewhere. 2 max's were optimized in
pairlocalalign and one in smg2000.
llvm-svn: 91814
2009-12-21 06:03:05 +00:00
Chris Lattner
f1474e1761
enhance x-(-A) -> x+A to preserve NUW/NSW.
...
Use the presence of NSW/NUW to fold "icmp (x+cst), x" to a constant in
cases where it would otherwise be undefined behavior.
Surprisingly (to me at least), this triggers hundreds of the times in
a few benchmarks: lencode, ldecode, and 466.h264ref seem to *really*
like this.
llvm-svn: 91812
2009-12-21 04:04:05 +00:00
Chris Lattner
d34eb29977
Optimize all cases of "icmp (X+Cst), X" to something simpler. This triggers
...
a bunch in lencode, ldecod, spass, 176.gcc, 252.eon, among others. It is
also the first part of PR5822
llvm-svn: 91811
2009-12-21 03:19:28 +00:00
Chris Lattner
07f0e8ec8a
fix an overly conservative caching issue that caused memdep to
...
cache a pointer as being unavailable due to phi trans in the
wrong place. This would cause later queries to fail even when
they didn't involve phi trans.
llvm-svn: 91787
2009-12-19 21:29:22 +00:00
Daniel Dunbar
d170badffe
Remove unused variable (noticed by clang++).
...
llvm-svn: 91780
2009-12-19 18:58:49 +00:00
Daniel Dunbar
758730a9e9
#if 0 out X86 disassembler for now, it is breaking the build in multiple places.
...
llvm-svn: 91778
2009-12-19 17:11:53 +00:00
Sanjiv Gupta
14c9f2ed42
Emit direction operand in binary insns that stores in memory.
...
llvm-svn: 91777
2009-12-19 13:52:01 +00:00
Nuno Lopes
78f040fa26
rename dprintf to dbgpritnf, in order to fix build with glibc (which already defines dprintf in stdio.h
...
llvm-svn: 91775
2009-12-19 12:07:00 +00:00
Sanjiv Gupta
65927cebf8
1. In indirect load/store insns , the name of fsr should be emitted as INDF.
...
2. include standard asmbly headers in generated asmbly.
llvm-svn: 91768
2009-12-19 08:26:25 +00:00
Douglas Gregor
f39dd74a3f
Fix a bunch of little errors that Clang complains about when its being pedantic
...
llvm-svn: 91764
2009-12-19 07:05:23 +00:00
Chris Lattner
d9bf69f1a5
fix PR5827 by disabling the phi slicing transformation in a case
...
where instcombine would have to split a critical edge due to a
phi node of an invoke. Since instcombine can't change the CFG,
it has to bail out from doing the transformation.
llvm-svn: 91763
2009-12-19 07:01:15 +00:00
Bob Wilson
067a1be3e9
Update my SROA changes in response to review.
...
* change FindElementAndOffset to return a uint64_t instead of unsigned, and
to identify the type to be used for that result in a GEP instruction.
* move "isa<ConstantInt>" to be first in conditional.
* replace some dyn_casts with casts.
* add a comment about handling mem intrinsics.
llvm-svn: 91762
2009-12-19 06:53:17 +00:00
Daniel Dunbar
057ae7e82e
Use memset instead of bzero, its more portable.
...
llvm-svn: 91754
2009-12-19 03:31:50 +00:00
Sean Callanan
18fa59f381
Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit
...
incarnations), integrated into the MC framework.
The disassembler is table-driven, using a custom TableGen backend to
generate hierarchical tables optimized for fast decode. The disassembler
consumes MemoryObjects and produces arrays of MCInsts, adhering to the
abstract base class MCDisassembler (llvm/MC/MCDisassembler.h).
The disassembler is documented in detail in
- lib/Target/X86/Disassembler/X86Disassembler.cpp (disassembler runtime)
- utils/TableGen/DisassemblerEmitter.cpp (table emitter)
You can test the disassembler by running llvm-mc -disassemble for i386
or x86_64 targets. Please let me know if you encounter any problems
with it.
llvm-svn: 91749
2009-12-19 02:59:52 +00:00
Anton Korobeynikov
4e05e61a52
Bump alignment requirements for windows targets to achieve compartibility with vcpp.
...
Based on patch by Michael Beck!
llvm-svn: 91745
2009-12-19 02:04:23 +00:00
Anton Korobeynikov
682c6a3b74
Use 4-arg getVTList) variant instead of generic one, when possible
...
llvm-svn: 91744
2009-12-19 02:04:00 +00:00
Dan Gohman
a9cdf5b0d8
Fix a spello in a comment that Nick spotted.
...
llvm-svn: 91742
2009-12-19 01:46:34 +00:00
Chris Lattner
e390b70e2c
Make some methods const. The only interesting change here is that
...
it changes raw_fd_ostream::preferred_buffer_size to return zero on
a scary stat failure instead of setting the stream to an error state.
This method really should not mutate the stream.
llvm-svn: 91740
2009-12-19 01:38:42 +00:00
John McCall
57eaeeca78
Qualify a bunch of explicit template instantiations to satisfy clang++.
...
llvm-svn: 91736
2009-12-19 00:55:12 +00:00
John McCall
fdae393452
Put TypesEqual and TypeHasCycleThroughItself in namespace llvm so ADL from
...
the templates in TypesContext.h can find them. Caught by clang++.
llvm-svn: 91735
2009-12-19 00:51:42 +00:00
Dan Gohman
4e04fb5ca8
Eliminate unnecessary LLVMContexts.
...
llvm-svn: 91729
2009-12-18 23:42:08 +00:00
Bill Wendling
aed33d79ab
Changes from review:
...
- Move DisableScheduling flag into TargetOption.h
- Move SDNodeOrdering into its own header file. Give it a minimal interface that
doesn't conflate construction with storage.
- Move assigning the ordering into the SelectionDAGBuilder.
This isn't used yet, so there should be no functional changes.
llvm-svn: 91727
2009-12-18 23:32:53 +00:00
Dan Gohman
f4af7d049c
Make this comment more precise.
...
llvm-svn: 91722
2009-12-18 23:18:03 +00:00
Evan Cheng
bc37151dea
Increase opportunities to optimize (brcond (srl (and c1), c2)).
...
llvm-svn: 91717
2009-12-18 21:31:31 +00:00
Eli Friedman
a5dba5246a
Fix gcc warning.
...
llvm-svn: 91715
2009-12-18 21:07:18 +00:00
Rafael Espindola
c58aaaf793
Catch more cases of a pointer being marked garbage twice. This helps when
...
debugging some leaks (PR5770 in particular).
llvm-svn: 91713
2009-12-18 20:35:38 +00:00
Bob Wilson
03b6955c7f
Reapply 91459 with a simple fix for the problem that broke the x86_64-darwin
...
bootstrap. This also replaces the WeakVH references that Chris objected to
with normal Value references.
llvm-svn: 91711
2009-12-18 20:14:40 +00:00
Victor Hernandez
44652ca549
Formalize MDNode's function-localness:
...
- an MDNode is designated as function-local when created, and continues to be even if its operands are modified not to refer to function-local IR
- function-localness is designated via lowest bit in SubclassData
- getLocalFunction() descends MDNode tree to see if it is consistently function-local
Add verification of MDNodes to checks that MDNodes are consistently function-local.
Update AsmWriter to use isFunctionLocal().
llvm-svn: 91708
2009-12-18 20:09:14 +00:00
Daniel Dunbar
01ebbb9844
Fix Win32 Path.inc for API update.
...
llvm-svn: 91706
2009-12-18 19:59:48 +00:00
Dan Gohman
34f714b928
Revert this use of NUW/NSW also. Overflow-undefined multiplication isn't
...
associative either.
llvm-svn: 91701
2009-12-18 18:45:31 +00:00
Rafael Espindola
4f903d4548
Fix libstdc++ build on ARM linux and part of PR5770.
...
MI was not being used but it was also not being deleted, so it was kept in the garbage list. The memory itself was freed once the function code gen was done.
Once in a while the codegen of another function would create an instruction on the same address. Adding it to the garbage group would work once, but when another pointer was added it would cause an assert as "Cache" was about to be pushed to Ts.
For a patch that make us detect problems like this earlier, take a look at
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091214/092758.html
With that patch we assert as soon and the new instruction is added to the garbage set.
llvm-svn: 91691
2009-12-18 16:59:39 +00:00
Tilmann Scheller
69e00966bb
Fix wrong frame pointer save offset in the 64-bit PowerPC SVR4 ABI.
...
Patch contributed by Ken Werner of IBM!
llvm-svn: 91681
2009-12-18 13:00:34 +00:00
Tilmann Scheller
29361c46ac
Add support for calls through function pointers in the 64-bit PowerPC SVR4 ABI.
...
Patch contributed by Ken Werner of IBM!
llvm-svn: 91680
2009-12-18 13:00:15 +00:00
Eli Friedman
c8ab298dbd
Optimize icmp of null and select of two constants even if the select has
...
multiple uses. (The construct in question was found in gcc.)
llvm-svn: 91675
2009-12-18 08:22:35 +00:00
Evan Cheng
d97d025eba
On recent Intel u-arch's, folding loads into some unary SSE instructions can
...
be non-optimal. To be precise, we should avoid folding loads if the instructions
only update part of the destination register, and the non-updated part is not
needed. e.g. cvtss2sd, sqrtss. Unfolding the load from these instructions breaks
the partial register dependency and it can improve performance. e.g.
movss (%rdi), %xmm0
cvtss2sd %xmm0, %xmm0
instead of
cvtss2sd (%rdi), %xmm0
An alternative method to break dependency is to clear the register first. e.g.
xorps %xmm0, %xmm0
cvtss2sd (%rdi), %xmm0
llvm-svn: 91672
2009-12-18 07:40:29 +00:00
Dan Gohman
2e46566444
Revert this use of NSW; this one isn't actually safe. NSW addition
...
is not reassociative.
llvm-svn: 91667
2009-12-18 03:57:04 +00:00
Dan Gohman
87a4da3d59
Eliminte unnecessary uses of <cstdio>.
...
llvm-svn: 91666
2009-12-18 03:25:51 +00:00
Dan Gohman
3ceb7c0c47
Add utility routines for NSW multiply.
...
llvm-svn: 91664
2009-12-18 03:10:26 +00:00
Dan Gohman
6bb50740f4
Add utility routines for creating integer negation operators with NSW set.
...
Integer negation only overflows with INT_MIN, but that's an important case.
llvm-svn: 91662
2009-12-18 02:58:50 +00:00
Dan Gohman
ec766ea441
Delete an unused variable.
...
llvm-svn: 91659
2009-12-18 02:14:37 +00:00
Eric Christopher
0253008d0c
Fix typo.
...
llvm-svn: 91657
2009-12-18 02:12:53 +00:00
Dan Gohman
91b1161840
Preserve NSW information in more places.
...
llvm-svn: 91656
2009-12-18 02:09:29 +00:00
Evan Cheng
a647318eb3
Re-apply 91623 now that I actually know what I was trying to do.
...
llvm-svn: 91655
2009-12-18 01:59:21 +00:00
Dan Gohman
0f8f7f179d
Add Loop contains utility methods for testing whether a loop
...
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.
llvm-svn: 91654
2009-12-18 01:24:09 +00:00
Dan Gohman
66a17c5ce2
Minor code simplification.
...
llvm-svn: 91653
2009-12-18 01:20:44 +00:00
Dan Gohman
7c0f6a6c1b
Whitespace cleanups.
...
llvm-svn: 91651
2009-12-18 01:14:11 +00:00
Bob Wilson
a9f20f9f6e
Handle ARM inline asm "w" constraints with 64-bit ("d") registers.
...
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.
llvm-svn: 91649
2009-12-18 01:03:29 +00:00
Dan Gohman
3ea233d1f2
Don't pass const pointers by reference.
...
llvm-svn: 91647
2009-12-18 00:38:08 +00:00
Dan Gohman
dcf5423e51
Update a comment.
...
llvm-svn: 91645
2009-12-18 00:28:43 +00:00
John McCall
923cb2d8d7
Pass the error string directly to llvm_unreachable instead of the residual
...
(0 && "error"). Rough consensus seems to be that g++ *should* be diagnosing
this because the pointer makes it not an ICE in c++03. Everyone agrees that
the current standard is silly and null-pointer-ness should not be based on
ICE-ness. Excellent fight scene in Act II, denouement weak, two stars.
llvm-svn: 91644
2009-12-18 00:27:18 +00:00
Dan Gohman
c483bed5e8
Reapply LoopStrengthReduce and IVUsers cleanups, excluding the part
...
of 91296 that caused trouble -- the Processed list needs to be
preserved for the livetime of the pass, as AddUsersIfInteresting
is called from other passes.
llvm-svn: 91641
2009-12-18 00:06:20 +00:00
Sean Callanan
06b6feb2e1
Instruction fixes, added instructions, and AsmString changes in the
...
X86 instruction tables.
Also (while I was at it) cleaned up the X86 tables, removing tabs and
80-line violations.
This patch was reviewed by Chris Lattner, but please let me know if
there are any problems.
* X86*.td
Removed tabs and fixed 80-line violations
* X86Instr64bit.td
(IRET, POPCNT, BT_, LSL, SWPGS, PUSH_S, POP_S, L_S, SMSW)
Added
(CALL, CMOV) Added qualifiers
(JMP) Added PC-relative jump instruction
(POPFQ/PUSHFQ) Added qualifiers; renamed PUSHFQ to indicate
that it is 64-bit only (ambiguous since it has no
REX prefix)
(MOV) Added rr form going the other way, which is encoded
differently
(MOV) Changed immediates to offsets, which is more correct;
also fixed MOV64o64a to have to a 64-bit offset
(MOV) Fixed qualifiers
(MOV) Added debug-register and condition-register moves
(MOVZX) Added more forms
(ADC, SUB, SBB, AND, OR, XOR) Added reverse forms, which
(as with MOV) are encoded differently
(ROL) Made REX.W required
(BT) Uncommented mr form for disassembly only
(CVT__2__) Added several missing non-intrinsic forms
(LXADD, XCHG) Reordered operands to make more sense for
MRMSrcMem
(XCHG) Added register-to-register forms
(XADD, CMPXCHG, XCHG) Added non-locked forms
* X86InstrSSE.td
(CVTSS2SI, COMISS, CVTTPS2DQ, CVTPS2PD, CVTPD2PS, MOVQ)
Added
* X86InstrFPStack.td
(COM_FST0, COMP_FST0, COM_FI, COM_FIP, FFREE, FNCLEX, FNOP,
FXAM, FLDL2T, FLDL2E, FLDPI, FLDLG2, FLDLN2, F2XM1, FYL2X,
FPTAN, FPATAN, FXTRACT, FPREM1, FDECSTP, FINCSTP, FPREM,
FYL2XP1, FSINCOS, FRNDINT, FSCALE, FCOMPP, FXSAVE,
FXRSTOR)
Added
(FCOM, FCOMP) Added qualifiers
(FSTENV, FSAVE, FSTSW) Fixed opcode names
(FNSTSW) Added implicit register operand
* X86InstrInfo.td
(opaque512mem) Added for FXSAVE/FXRSTOR
(offset8, offset16, offset32, offset64) Added for MOV
(NOOPW, IRET, POPCNT, IN, BTC, BTR, BTS, LSL, INVLPG, STR,
LTR, PUSHFS, PUSHGS, POPFS, POPGS, LDS, LSS, LES, LFS,
LGS, VERR, VERW, SGDT, SIDT, SLDT, LGDT, LIDT, LLDT,
LODSD, OUTSB, OUTSW, OUTSD, HLT, RSM, FNINIT, CLC, STC,
CLI, STI, CLD, STD, CMC, CLTS, XLAT, WRMSR, RDMSR, RDPMC,
SMSW, LMSW, CPUID, INVD, WBINVD, INVEPT, INVVPID, VMCALL,
VMCLEAR, VMLAUNCH, VMRESUME, VMPTRLD, VMPTRST, VMREAD,
VMWRITE, VMXOFF, VMXON) Added
(NOOPL, POPF, POPFD, PUSHF, PUSHFD) Added qualifier
(JO, JNO, JB, JAE, JE, JNE, JBE, JA, JS, JNS, JP, JNP, JL,
JGE, JLE, JG, JCXZ) Added 32-bit forms
(MOV) Changed some immediate forms to offset forms
(MOV) Added reversed reg-reg forms, which are encoded
differently
(MOV) Added debug-register and condition-register moves
(CMOV) Added qualifiers
(AND, OR, XOR, ADC, SUB, SBB) Added reverse forms, like MOV
(BT) Uncommented memory-register forms for disassembler
(MOVSX, MOVZX) Added forms
(XCHG, LXADD) Made operand order make sense for MRMSrcMem
(XCHG) Added register-register forms
(XADD, CMPXCHG) Added unlocked forms
* X86InstrMMX.td
(MMX_MOVD, MMV_MOVQ) Added forms
* X86InstrInfo.cpp: Changed PUSHFQ to PUSHFQ64 to reflect table
change
* X86RegisterInfo.td: Added debug and condition register sets
* x86-64-pic-3.ll: Fixed testcase to reflect call qualifier
* peep-test-3.ll: Fixed testcase to reflect test qualifier
* cmov.ll: Fixed testcase to reflect cmov qualifier
* loop-blocks.ll: Fixed testcase to reflect call qualifier
* x86-64-pic-11.ll: Fixed testcase to reflect call qualifier
* 2009-11-04-SubregCoalescingBug.ll: Fixed testcase to reflect call
qualifier
* x86-64-pic-2.ll: Fixed testcase to reflect call qualifier
* live-out-reg-info.ll: Fixed testcase to reflect test qualifier
* tail-opts.ll: Fixed testcase to reflect call qualifiers
* x86-64-pic-10.ll: Fixed testcase to reflect call qualifier
* bss-pagealigned.ll: Fixed testcase to reflect call qualifier
* x86-64-pic-1.ll: Fixed testcase to reflect call qualifier
* widen_load-1.ll: Fixed testcase to reflect call qualifier
llvm-svn: 91638
2009-12-18 00:01:26 +00:00
John McCall
27b47abb40
Sundry dependent-name fixes flagged by clang++.
...
llvm-svn: 91636
2009-12-17 23:49:16 +00:00
Bill Wendling
747a2ba2a1
Revert accidental commit.
...
llvm-svn: 91635
2009-12-17 23:45:18 +00:00
Bill Wendling
2911fdb37b
Turn off critical edge splitting for landing pads. The introduction of a
...
non-landing pad basic block as the successor to a block that ends in an
unconditional jump will cause block folding to remove the added block as a
successor. Thus eventually removing it AND the landing pad entirely. Critical
edge splitting is an optimization, so we can safely turn it off when dealing
with landing pads.
llvm-svn: 91634
2009-12-17 23:42:32 +00:00
Jeffrey Yasskin
f39a138a7c
Revert r91623 to unbreak the buildbots.
...
llvm-svn: 91632
2009-12-17 22:44:34 +00:00
Eli Friedman
9543d05079
Allow instcombine to combine "sext(a) >u const" to "a >u trunc(const)".
...
llvm-svn: 91631
2009-12-17 22:42:29 +00:00
Jeffrey Yasskin
f4d06414ec
Don't codegen available_externally functions. Fixes http://llvm.org/PR5735 .
...
llvm-svn: 91626
2009-12-17 21:35:29 +00:00
Eli Friedman
8afea2d095
Make the ptrtoint comparison simplification work if one side is a global.
...
llvm-svn: 91624
2009-12-17 21:27:47 +00:00
Evan Cheng
d765952b17
Remove an unused option.
...
llvm-svn: 91623
2009-12-17 21:23:58 +00:00