| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
switches use the binary search algorithm) for
environments that don't support it. PPC64 JIT
is such an environment; turn the flag on for that.
llvm-svn: 54248
|
| |
|
|
|
|
| |
empty structs. This fixes PR2612.
llvm-svn: 54226
|
| |
|
|
|
|
| |
CodeGen & Clang work coming next.
llvm-svn: 54161
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a new ilist_node class, and remove them. Unlike alist_node,
ilist_node doesn't attempt to manage storage itself, so it avoids
the associated problems, including being opaque in gdb.
Adjust the Recycler class so that it doesn't depend on alist_node.
Also, change it to use explicit Size and Align parameters, allowing
it to work when the largest-sized node doesn't have the greatest
alignment requirement.
Change MachineInstr's MachineMemOperand list from a pool-backed
alist to a std::list for now.
llvm-svn: 54146
|
| |
|
|
| |
llvm-svn: 54128
|
| |
|
|
|
|
|
| |
dependencies with constant load nodes. This allows them to be scheduled
freely.
llvm-svn: 54001
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Remove the GetResultInst instruction. It is still accepted in LLVM assembly
and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove
support for return instructions with multiple values. These are auto-upgraded
to use InsertValueInst instructions.
The IRBuilder still accepts multiple-value returns, and auto-upgrades them
to InsertValueInst instructions.
llvm-svn: 53941
|
| |
|
|
| |
llvm-svn: 53874
|
| |
|
|
|
|
|
| |
that include useful information like the name of the
block being viewed and the current phase of compilation.
llvm-svn: 53872
|
| |
|
|
|
|
|
| |
it is breaking Darwin bootstrap due to missing
functionality.
llvm-svn: 53721
|
| |
|
|
| |
llvm-svn: 53671
|
| |
|
|
|
|
|
| |
the BB member to the current basic block after emitting
instructions.
llvm-svn: 53567
|
| |
|
|
| |
llvm-svn: 53502
|
| |
|
|
|
|
|
|
| |
use a timer group for the timers in SelectionDAGISel. Also,
Split scheduling out from emitting, to give each their own
timer.
llvm-svn: 53476
|
| |
|
|
| |
llvm-svn: 53434
|
| |
|
|
|
|
|
|
|
| |
and reused across SelectionDAGs.
This drastically reduces the number of calls to malloc/free made during
instruction selection, and improves memory locality.
llvm-svn: 53211
|
| |
|
|
|
|
|
|
|
|
|
|
| |
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes. No change if the
new LegalizeTypes infrastructure is not turned on.
llvm-svn: 53137
|
| |
|
|
|
|
| |
slow the compiler down at -O0 some 30% or more. Ooops.
llvm-svn: 53120
|
| |
|
|
|
|
|
|
|
|
| |
to be passed the list of value types, and use this
where appropriate. Inappropriate places are where
the value type list is already known and may be
long, in which case the existing method is more
efficient.
llvm-svn: 53035
|
| |
|
|
| |
llvm-svn: 52975
|
| |
|
|
| |
llvm-svn: 52971
|
| |
|
|
| |
llvm-svn: 52970
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.
Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.
This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.
llvm-svn: 52943
|
| |
|
|
| |
llvm-svn: 52931
|
| |
|
|
| |
llvm-svn: 52930
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
purpose, and give it a custom SDNode subclass so that it doesn't
need to have line number, column number, filename string, and
directory string, all existing as individual SDNodes to be the
operands.
This was the only user of ISD::STRING, StringSDNode, etc., so
remove those and some associated code.
This makes stop-points considerably easier to read in
-view-legalize-dags output, and reduces overhead (creating new
nodes and copying std::strings into them) on code containing
debugging information.
llvm-svn: 52924
|
| |
|
|
| |
llvm-svn: 52923
|
| |
|
|
|
|
|
|
| |
SmallVectors. Change the signature of TargetLowering::LowerArguments
to avoid returning a vector by value, and update the two targets
which still use this directly, Sparc and IA64, accordingly.
llvm-svn: 52917
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it impossible to create a MERGE_VALUES node with
only one result: sometimes it is useful to be able
to create a node with only one result out of one of
the results of a node with more than one result, for
example because the new node will eventually be used
to replace a one-result node using ReplaceAllUsesWith,
cf X86TargetLowering::ExpandFP_TO_SINT. On the other
hand, most users of MERGE_VALUES don't need this and
for them the optimization was valuable. So add a new
utility method getMergeValues for creating MERGE_VALUES
nodes which by default performs the optimization.
Change almost everywhere to use getMergeValues (and
tidy some stuff up at the same time).
llvm-svn: 52893
|
| |
|
|
|
|
| |
some uses of std::vector, where it's return std::vector by value. Yuck!
llvm-svn: 52800
|
| |
|
|
|
|
| |
the base SDNode's VTList.
llvm-svn: 52722
|
| |
|
|
|
|
|
|
| |
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub
llvm-svn: 52706
|
| |
|
|
| |
llvm-svn: 52522
|
| |
|
|
| |
llvm-svn: 52517
|
| |
|
|
| |
llvm-svn: 52516
|
| |
|
|
|
|
|
|
|
|
|
| |
of value info (sign/zero ext info) from one MBB to another. This doesn't
handle much right now because of two limitations:
1) only handles zext/sext, not random bit propagation (no assert exists
for this)
2) doesn't handle phis.
llvm-svn: 52383
|
| |
|
|
| |
llvm-svn: 52381
|
| |
|
|
| |
llvm-svn: 52270
|
| |
|
|
| |
llvm-svn: 52156
|
| |
|
|
| |
llvm-svn: 52150
|
| |
|
|
|
|
|
|
|
|
|
| |
of apint codegen failure is the DAG combiner doing
the wrong thing because it was comparing MVT's using
< rather than comparing the number of bits. Removing
the < method makes this mistake impossible to commit.
Instead, add helper methods for comparing bits and use
them.
llvm-svn: 52098
|
| |
|
|
|
|
| |
stores of aggregate values.
llvm-svn: 52069
|
| |
|
|
|
|
|
| |
no visible functionality change, but enables a future patch where node creation
will update the CFG if it decides to create an unconditional rather than a conditional branch.
llvm-svn: 52067
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).
llvm-svn: 52044
|
| |
|
|
|
|
| |
exclude struct and array types.
llvm-svn: 51460
|
| |
|
|
|
|
| |
moving toward making structs and arrays first-class types.
llvm-svn: 51157
|
| |
|
|
| |
llvm-svn: 51126
|
| |
|
|
| |
llvm-svn: 51115
|
| |
|
|
|
|
|
| |
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
|
| |
|
|
|
|
| |
This is necessary to unbreak the build.
llvm-svn: 50988
|