| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 55191
|
|
|
|
| |
llvm-svn: 55085
|
|
|
|
|
|
|
|
| |
class hold a MachineRegisterInfo member, and make the
MachineBasicBlock be passed in to SelectInstructions rather
than the FastISel constructor.
llvm-svn: 55076
|
|
|
|
| |
llvm-svn: 55075
|
|
|
|
| |
llvm-svn: 55067
|
|
|
|
| |
llvm-svn: 55059
|
|
|
|
| |
llvm-svn: 55054
|
|
|
|
| |
llvm-svn: 55031
|
|
|
|
|
|
|
| |
a command-line option, so that the default behavior is an abort, which
is useful for exposing code that isn't supported yet.
llvm-svn: 55028
|
|
|
|
| |
llvm-svn: 55015
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In particular, Collector was confusing to implementors. Several
thought that this compile-time class was the place to implement
their runtime GC heap. Of course, it doesn't even exist at runtime.
Specifically, the renames are:
Collector -> GCStrategy
CollectorMetadata -> GCFunctionInfo
CollectorModuleMetadata -> GCModuleInfo
CollectorRegistry -> GCRegistry
Function::getCollector -> getGC (setGC, hasGC, clearGC)
Several accessors and nested types have also been renamed to be
consistent. These changes should be obvious.
llvm-svn: 54899
|
|
|
|
|
|
| |
for splitting AsmPrinter into its own library.
llvm-svn: 54881
|
|
|
|
|
|
| |
room for the new FastISel instruction selection code.
llvm-svn: 54749
|
|
|
|
| |
llvm-svn: 54522
|
|
|
|
|
|
| |
SelectBasicBlock. No functionality changes.
llvm-svn: 54438
|
|
|
|
|
|
| |
needed.
llvm-svn: 54361
|
|
|
|
| |
llvm-svn: 54336
|
|
|
|
|
|
|
|
| |
- Add a basic machine-level dead block eliminator.
These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.
llvm-svn: 54333
|
|
|
|
|
|
|
| |
This allows it to work correctly on aggregate values.
This fixes PR2623.
llvm-svn: 54331
|
|
|
|
|
|
|
| |
This allows it to work correctly on nested aggregate values.
This fixes PR2625.
llvm-svn: 54330
|
|
|
|
|
|
|
|
| |
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
|