| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
integers. Handle truncstore of a legal type to an unusual
number of bits. Most of this code is not reachable unless
the new legalize infrastructure is turned on.
llvm-svn: 46249
|
|
|
|
| |
llvm-svn: 46247
|
|
|
|
| |
llvm-svn: 46246
|
|
|
|
|
|
|
|
| |
This fixes PR1927
This should be pulled into llvm 2.2.
llvm-svn: 46245
|
|
|
|
|
|
| |
a smaller bitwidth.
llvm-svn: 46244
|
|
|
|
| |
llvm-svn: 46243
|
|
|
|
| |
llvm-svn: 46229
|
|
|
|
|
|
| |
be ignored on the false branch.
llvm-svn: 46228
|
|
|
|
|
|
| |
clearer sequence of hashing compositions.
llvm-svn: 46227
|
|
|
|
|
|
| |
to be reused to compute multiple object profiles.
llvm-svn: 46226
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
problem was that we previously hashed based on the pointers of the left and
right children, but this is bogus: we can easily have different trees that
represent the same set. Now we use a hashing based scheme that compares the
*contents* of the trees, but not without having to do a full scan of a tree. The
only caveat is that with hashing is that we may have collisions, which result in
two different trees being falsely labeled as equivalent. If this becomes a
problem, we can add extra data to the profile to hopefully resolve most
collisions.
llvm-svn: 46224
|
|
|
|
| |
llvm-svn: 46223
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
external symbols (e.g. 'fmod') as needing a stub. This regression
was introduced by Evan's jit patch here:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071231/056749.html
With this fixed, the two ExecutionEngine failures are passing on ppc,
and the ppc jit works on freebench and olden.
This should be pulled into the 2.2 release branch.
llvm-svn: 46222
|
|
|
|
| |
llvm-svn: 46220
|
|
|
|
| |
llvm-svn: 46218
|
|
|
|
| |
llvm-svn: 46217
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that return an opaque type by value, as long as you don't
call it or provide a body (you can take the address of it).
So it is wrong to insist that sret parameters not be an
opaque*. And I guess it is really up to codegen to complain
if someone tries to call such a function. I'm also removing
the analogous check from byval parameters, since I don't
see why we shouldn't allow them as long as no-one tries to
call the function or give it a body.
llvm-svn: 46216
|
|
|
|
| |
llvm-svn: 46209
|
|
|
|
|
|
| |
with a size, like byval.
llvm-svn: 46207
|
|
|
|
|
|
| |
check the callee also if it is known.
llvm-svn: 46206
|
|
|
|
| |
llvm-svn: 46204
|
|
|
|
|
|
| |
Fixes PR1935.
llvm-svn: 46203
|
|
|
|
| |
llvm-svn: 46200
|
|
|
|
| |
llvm-svn: 46199
|
|
|
|
| |
llvm-svn: 46198
|
|
|
|
|
|
| |
to complain on x86-64 (gcc 4.1). Use ~0U instead.
llvm-svn: 46197
|
|
|
|
| |
llvm-svn: 46195
|
|
|
|
|
|
| |
reported in pr1929 (http://llvm.org/PR1929).
llvm-svn: 46193
|
|
|
|
|
|
|
|
|
| |
parameters, since otherwise it won't be passed in
the right register. With this change trampolines
work on x86-64 (thanks to Luke Guest for providing
access to an x86-64 box).
llvm-svn: 46192
|
|
|
|
|
|
| |
FoldingSetTrait instead of directly calling a 'Profile' method.
llvm-svn: 46190
|
|
|
|
| |
llvm-svn: 46189
|
|
|
|
| |
llvm-svn: 46188
|
|
|
|
|
|
|
|
|
|
| |
'FoldingSetNodeImpl' (previously 'FoldingSetNodeID' was a typedef of
'FoldingSetNodeImpl::NodeID').
Why? Clients can now easily forward declare 'FoldingSetNodeID' without having
to include FoldingSet.h.
llvm-svn: 46187
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of always assuming that the stored objects had a method called
'Profile'. The default behavior is to dispatch to a 'Profile' method (as
before), but via template specialization this behavior can now be overridden by
clients.
Added templated class 'FoldingSetNodeWrapper', a generic wrapper class that
allows one to insert objects into a FoldingSet that do not directly inherit from
FoldingSetNode. This is useful for inserting objects that do not always need to
pay the overhead of inheriting from FoldingSetNode, or were designed with that
behavior in mind.
llvm-svn: 46186
|
|
|
|
| |
llvm-svn: 46180
|
|
|
|
| |
llvm-svn: 46174
|
|
|
|
| |
llvm-svn: 46173
|
|
|
|
| |
llvm-svn: 46172
|
|
|
|
| |
llvm-svn: 46171
|
|
|
|
| |
llvm-svn: 46166
|
|
|
|
| |
llvm-svn: 46165
|
|
|
|
| |
llvm-svn: 46162
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
_test:
fctiwz f0, f1
stfiwx f0, 0, r4
blr
instead of:
_test:
fctiwz f0, f1
stfd f0, -8(r1)
nop
nop
lwz r2, -4(r1)
stb r2, 0(r4)
blr
The former is not correct (stores 4 bytes, not 1).
llvm-svn: 46161
|
|
|
|
| |
llvm-svn: 46159
|
|
|
|
|
|
|
|
|
|
|
| |
an iterator, since the implementation returned an iterator that pointed to a
different node! Renamed this implementation to SlimFind() so that users do not
expect it to return an iterator (it is a more efficient implementation than
returning an iterator if the user just wants to find the value of a key).
Added a FIXME to implement ImmutableMap::find() that returns an iterator.
llvm-svn: 46150
|
|
|
|
|
|
|
|
| |
as weak globals rather than commons. While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.
llvm-svn: 46147
|
|
|
|
|
|
|
|
| |
as weak globals rather than commons. While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.
llvm-svn: 46144
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed CellSPU's A-form (local store) address mode, so that all globals,
externals, constant pool and jump table symbols are now wrapped within
a SPUISD::AFormAddr pseudo-instruction. This now identifies all local
store memory addresses, although it requires a bit of legerdemain during
instruction selection to properly select loads to and stores from local
store, properly generating "LQA" instructions.
Also added mul_ops.ll test harness for exercising integer multiplication.
llvm-svn: 46142
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.
The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret
instead of:
_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret
llvm-svn: 46140
|
|
|
|
| |
llvm-svn: 46139
|