| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
| |
The c'tor list is stored as a list of 'void ()*'s, so all of the functions are
bitcast to that. However, the dyn_cast doesn't automagically look through
bitcasts. Do that for it.
<rdar://problem/10813350>
llvm-svn: 150572
|
| |
|
|
|
|
|
| |
used to incrementally update a created node without needing a
temporary node and RAUW.
llvm-svn: 150571
|
| |
|
|
|
|
| |
I'll put MachineLICM back before PEI. All my arm/x86 benchmarks look good, but buildbots don't like it.
llvm-svn: 150568
|
| |
|
|
| |
llvm-svn: 150567
|
| |
|
|
| |
llvm-svn: 150566
|
| |
|
|
| |
llvm-svn: 150565
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The llc command line options for enabling/disabling passes are local to CodeGen/Passes.cpp. This patch associates those options with standard pass IDs so they work regardless of how the target configures the passes.
A target has two ways of overriding standard passes:
1) Redefine the pass pipeline (override TargetPassConfig::add%Stage)
2) Replace or suppress individiual passes with TargetPassConfig::substitutePass.
In both cases, the command line options associated with the pass override the target default.
For example, say a target wants to disable machine instruction scheduling by default:
- The target calls disablePass(MachineSchedulerID) but otherwise does not override any TargetPassConfig methods.
- Without any llc options, no scheduler is run.
- With -enable-misched, the standard machine scheduler is run and honors the -misched=... flag to select the scheduler variant, which may be used for performance evaluation or testing.
Sorry overridePass is ugly. I haven't thought of a better way without replacing the cl::opt framework. I hope to do that one day...
I haven't figured out why CodeGen uses char& for pass IDs. AnalysisID is much easier to use and less bug prone. I'm using it wherever I can for internal implementation. Maybe later we can change the global pass ID definitions as well.
llvm-svn: 150563
|
| |
|
|
|
|
| |
override specific passes.
llvm-svn: 150562
|
| |
|
|
| |
llvm-svn: 150553
|
| |
|
|
| |
llvm-svn: 150552
|
| |
|
|
| |
llvm-svn: 150550
|
| |
|
|
| |
llvm-svn: 150538
|
| |
|
|
|
|
| |
lowered sequence has more than 1 user
llvm-svn: 150537
|
| |
|
|
| |
llvm-svn: 150536
|
| |
|
|
|
|
|
|
| |
Pretend that regmask interference ends at the 'dead' slot, even when
there is other interference ending at the 'reg' slot of the same
instruction.
llvm-svn: 150531
|
| |
|
|
|
|
|
| |
Perform all comparisons at instruction granularity, and make sure
register masks on uses count in both gaps.
llvm-svn: 150530
|
| |
|
|
|
|
|
|
|
|
|
| |
Only accept register masks when looking for an 'overlapping' def. When
Overlap is not set, the function searches for a proper definition of
Reg.
This means MI->modifiesRegister() considers register masks, but
MI->definesRegister() doesn't.
llvm-svn: 150529
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When a physreg is live in to a basic block, look for any instruction in
the block that clobbers the physreg.
The instruction doesn't have to properly redefine the register, any
overlapping clobber is OK.
This slightly changes live ranges when compiling with register masks.
llvm-svn: 150528
|
| |
|
|
|
|
| |
The old DenseMap hashed order was very confusing.
llvm-svn: 150527
|
| |
|
|
| |
llvm-svn: 150525
|
| |
|
|
| |
llvm-svn: 150520
|
| |
|
|
|
|
| |
all return type warnings.
llvm-svn: 150512
|
| |
|
|
|
|
| |
Patch by Matt Johnson
llvm-svn: 150508
|
| |
|
|
|
|
|
|
| |
The MachO back-end needs to emit the garbage collection flags specified in the
module flags. This is a WIP, so the front-end hasn't been modified to emit these
flags just yet. Documentation and front-end switching to occur soon.
llvm-svn: 150507
|
| |
|
|
| |
llvm-svn: 150496
|
| |
|
|
|
|
| |
only be live in to a block if it is the function entry point or a landing pad.
llvm-svn: 150494
|
| |
|
|
|
|
|
|
| |
that are greater than the vector element type. For example BUILD_VECTOR
of type <1 x i1> with a constant i8 operand.
This patch fixes the assertion.
llvm-svn: 150477
|
| |
|
|
| |
llvm-svn: 150471
|
| |
|
|
| |
llvm-svn: 150466
|
| |
|
|
|
|
| |
vector_shuffles shouldn't reach isel.
llvm-svn: 150462
|
| |
|
|
|
|
| |
consistency with setExceptionPointerRegister(...).
llvm-svn: 150460
|
| |
|
|
| |
llvm-svn: 150457
|
| |
|
|
| |
llvm-svn: 150449
|
| |
|
|
| |
llvm-svn: 150447
|
| |
|
|
| |
llvm-svn: 150444
|
| |
|
|
|
|
| |
This folds a simple loop tail into a loop latch. It covers the common (in fortran) case of postincrement loops. It's a "free" way to expose this type of loop to downstream loop optimizations that bail out on non-canonical loops (getLoopLatch is a heavily used check).
llvm-svn: 150439
|
| |
|
|
| |
llvm-svn: 150438
|
| |
|
|
|
|
|
| |
marking them as "live-in" into a BB ruins some invariants that the back-end
tries to maintain.
llvm-svn: 150437
|
| |
|
|
| |
llvm-svn: 150436
|
| |
|
|
| |
llvm-svn: 150433
|
| |
|
|
|
|
|
|
|
| |
The scheduler will sometimes check the implicit-def list on instructions
to properly handle pre-colored DAG edges.
Also check any register mask operands for physreg clobbers.
llvm-svn: 150428
|
| |
|
|
| |
llvm-svn: 150425
|
| |
|
|
|
|
|
| |
(but not of) a block pointer do not cause the block pointer to
escape. This fixes rdar://10803830.
llvm-svn: 150424
|
| |
|
|
|
|
|
| |
Clang patch (flags) will follow shortly.
The run-time library will also follow, but not immediately.
llvm-svn: 150423
|
| |
|
|
| |
llvm-svn: 150411
|
| |
|
|
| |
llvm-svn: 150404
|
| |
|
|
|
|
| |
generate a shuffle node from two vectors of different types.
llvm-svn: 150383
|
| |
|
|
|
|
| |
copy/paste fiasco.
llvm-svn: 150369
|
| |
|
|
| |
llvm-svn: 150365
|
| |
|
|
|
|
|
|
|
| |
- Use unsigned literals when the desired result is unsigned. This mostly allows unsigned/signed mismatch warnings to be less noisy even if they aren't on by default.
- Remove misplaced llvm_unreachable.
- Add static to a declaration of a function on MSVC x86 only.
- Change some instances of calling a static function through a variable to simply calling that function while removing the unused variable.
llvm-svn: 150364
|