| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 171791
|
|
|
|
|
|
|
|
|
| |
peculiar headers under include/llvm.
This struct still doesn't make a lot of sense, but it makes more sense
down in TargetLowering than it did before.
llvm-svn: 171739
|
|
|
|
|
|
|
|
|
|
|
|
| |
already in a class, just inline the four of them. I suspect that this
class could be simplified some to not always keep distinct variables for
these things, but it wasn't clear to me how given the usage so I opted
for a trivial and mechanical translation.
This removes one of the two remaining users of a header in include/llvm
which does nothing more than define a 4 member struct.
llvm-svn: 171738
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TargetTransformInfo rather than TargetLowering, removing one of the
primary instances of the layering violation of Transforms depending
directly on Target.
This is a really big deal because LSR used to be a "special" pass that
could only be tested fully using llc and by looking at the full output
of it. It also couldn't run with any other loop passes because it had to
be created by the backend. No longer is this true. LSR is now just
a normal pass and we should probably lift the creation of LSR out of
lib/CodeGen/Passes.cpp and into the PassManagerBuilder. =] I've not done
this, or updated all of the tests to use opt and a triple, because
I suspect someone more familiar with LSR would do a better job. This
change should be essentially without functional impact for normal
compilations, and only change behvaior of targetless compilations.
The conversion required changing all of the LSR code to refer to the TTI
interfaces, which fortunately are very similar to TargetLowering's
interfaces. However, it also allowed us to *always* expect to have some
implementation around. I've pushed that simplification through the pass,
and leveraged it to simplify code somewhat. It required some test
updates for one of two things: either we used to skip some checks
altogether but now we get the default "no" answer for them, or we used
to have no information about the target and now we do have some.
I've also started the process of removing AddrMode, as the TTI interface
doesn't use it any longer. In some cases this simplifies code, and in
others it adds some complexity, but I think it's not a bad tradeoff even
there. Subsequent patches will try to clean this up even further and use
other (more appropriate) abstractions.
Yet again, almost all of the formatting changes brought to you by
clang-format. =]
llvm-svn: 171735
|
|
|
|
|
|
| |
the global variables. We partition the set of globals by their address space, and apply the same the trasnformation as before to merge them.
llvm-svn: 171730
|
|
|
|
|
|
|
|
| |
I'm sorry for duplicating bad style here, but I wanted to keep
consistency. I've pinged the code review thread where this style was
reviewed and changes were requested.
llvm-svn: 171714
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
through as a reference rather than a pointer. There is always *some*
implementation of this available, so this simplifies code by not having
to test for whether it is available or not.
Further, it turns out there were piles of places where SimplifyCFG was
recursing and not passing down either TD or TTI. These are fixed to be
more pedantically consistent even though I don't have any particular
cases where it would matter.
llvm-svn: 171691
|
|
|
|
|
|
|
| |
follow the conding conventions regarding enumerating a set of "kinds" of
things.
llvm-svn: 171687
|
|
|
|
|
|
|
| |
longer would violate any dependency layering and it is in fact an
analysis. =]
llvm-svn: 171686
|
|
|
|
|
|
| |
pair in ObjCARCContract::ContractAutorelease.
llvm-svn: 171679
|
|
|
|
|
|
| |
retain/autorelease pair in ObjCARCOpt::OptimizeReturns.
llvm-svn: 171678
|
|
|
|
|
|
| |
null since they are no-ops.
llvm-svn: 171677
|
|
|
|
|
|
| |
to a function which can not throw.
llvm-svn: 171676
|
|
|
|
|
|
| |
a function which can never be passed stack args.
llvm-svn: 171675
|
|
|
|
| |
llvm-svn: 171674
|
|
|
|
|
|
| |
objc_release(x) when x is otherwise unused.
llvm-svn: 171673
|
|
|
|
|
|
|
|
| |
undefined pointer-to-weak-pointer is NULL cases by replacing the given call inst with an undefined value.
The reason that there are two cases is that the first case handles the unary cases and the second the binary cases.
llvm-svn: 171672
|
|
|
|
|
|
| |
special semantic meaning in the frontend and thus in the optimizer can be deleted.
llvm-svn: 171670
|
|
|
|
|
|
| |
objc_autoreleaseReturnValue => objc_autorelease due to its operand not being used as a return value.
llvm-svn: 171669
|
|
|
|
|
|
|
| |
Indirect branch in the preheader crashes replaceCongruentIVs.
Fixes rdar://12910141.
llvm-svn: 171653
|
|
|
|
|
|
| |
objc_retainAutorelasedReturnValue => objc_retain since the operand to said function is not a return value.
llvm-svn: 171629
|
|
|
|
|
|
| |
objc_autoreleaseReturnValue/objc_retainAutoreleasedValue pair.
llvm-svn: 171628
|
|
|
|
|
|
| |
when merging two TBAA tags, pointed out by Nuno.
llvm-svn: 171627
|
|
|
|
|
|
| |
interface rather than the ScalarTargetTransformInterface.
llvm-svn: 171616
|
|
|
|
|
|
|
|
|
|
|
|
| |
next to its only user. This helper relies on TargetLowering information
that shouldn't be generally used throughout the Transfoms library, and
so it made little sense as a generic utility.
This also consolidates the file where we need to remove the remaining
uses of TargetLowering in favor of the IR-layer abstract interface in
TargetTransformInfo.
llvm-svn: 171590
|
|
|
|
|
|
| |
objc_retainAutorelasedReturnValue.
llvm-svn: 171535
|
|
|
|
|
|
|
|
| |
the method where it was being called when I should have just prefixed the actual message with Pass::Method.
Additionally I fixed some whitespace issues.
llvm-svn: 171534
|
|
|
|
|
|
| |
processed when said queue was really a list to state a list had finished being processed.
llvm-svn: 171465
|
|
|
|
|
|
| |
ObjCARCAPElim::OptimizeBB.
llvm-svn: 171464
|
|
|
|
|
|
| |
*p = null.
llvm-svn: 171463
|
|
|
|
|
|
| |
architectures where this is required to perform a retainAutoreleasedReturnValue optimization.
llvm-svn: 171462
|
|
|
|
|
|
| |
- Fix a typo
llvm-svn: 171399
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.
The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366
|
|
|
|
|
|
|
|
|
|
| |
utils/sort_includes.py script.
Most of these are updating the new R600 target and fixing up a few
regressions that have creeped in since the last time I sorted the
includes.
llvm-svn: 171362
|
|
|
|
| |
llvm-svn: 171349
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 171348
|
|
|
|
|
|
|
|
|
|
|
| |
verbatim with its argument to temporarily undo an optimization.
Specifically these calls return their argument verbatim, as a low-level
optimization. However, this makes high-level optimizations
harder. We undo any uses of this optimization that the front-end
emitted. We redo them later in the contract pass.
llvm-svn: 171346
|
|
|
|
|
|
|
|
|
| |
that emit what instructions are being visited.
This is a part of a larger effort of adding DEBUG messages to the ARC
Optimizer Backend.
llvm-svn: 171345
|
|
|
|
|
|
|
| |
promoting a store in a loop. This was noticed when working on PR14753,
but isn't directly related.
llvm-svn: 171281
|
|
|
|
|
|
|
|
|
| |
GEP::accumulateConstantOffset().
The later API is nicer than the former, and is correct regarding wrap-around offsets (if anyone cares).
There are a few more places left with duplicated code, which I'll remove soon.
llvm-svn: 171259
|
|
|
|
|
|
|
|
|
| |
directly.
This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.
llvm-svn: 171253
|
|
|
|
| |
llvm-svn: 170831
|
|
|
|
|
|
|
|
| |
call, the call cannot be duplicated - Jump threading, loop unrolling, loop unswitching, and loop rotation are inhibited if they would duplicate the call.
Similarly inlining of the function is inhibited, if that would duplicate the call (in particular inlining is still allowed when there is only one callsite and the function has internal linkage).
llvm-svn: 170704
|
|
|
|
|
|
| |
single attribute in the future.
llvm-svn: 170502
|
|
|
|
|
|
| |
getScalarSizeInBits could not handle vectors of pointers.
llvm-svn: 170412
|
|
|
|
|
|
|
|
| |
This was a silly oversight, we weren't pruning allocas which were used
by variable-length memory intrinsics from the set that could be widened
and promoted as integers. Fix that.
llvm-svn: 170353
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This also cleans up a bit of the memcpy call rewriting by sinking some
irrelevant code further down and making the call-emitting code a bit
more concrete.
Previously, memcpy of a subvector would actually miscompile (!!!) the
copy into a single vector element copy. I have no idea how this ever
worked. =/ This is the memcpy half of PR14478 which we probably weren't
noticing previously because it didn't actually assert.
The rewrite relies on the newly refactored insert- and extractVector
functions to do the heavy lifting, and those are the same as used for
loads and stores which makes the test coverage a bit more meaningful
here.
llvm-svn: 170338
|
|
|
|
|
|
|
|
| |
Check whether a BB is known as reachable before adding it to the worklist.
This way BB's with multiple predecessors are added to the list no more than
once.
llvm-svn: 170335
|
|
|
|
|
|
|
|
|
|
|
|
| |
The first half of fixing this bug was actually in r170328, but was
entirely coincidental. It did however get me to realize the nature of
the bug, and adapt the test case to test more interesting behavior. In
turn, that uncovered the rest of the bug which I've fixed here.
This should fix two new asserts that showed up in the vectorize nightly
tester.
llvm-svn: 170333
|
|
|
|
|
|
|
|
| |
I noticed this while looking at r170328. We only ever do a vector
rewrite when the alloca *is* the vector type, so it's good to not paper
over bugs here by doing a convertValue that isn't needed.
llvm-svn: 170331
|