| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This optimization merges the common part of a group of GEPs, so we can compute
each pointer address by adding a simple offset to the common part.
The optimization is currently only enabled for the NVPTX backend, where it has
a large payoff on some benchmarks.
Review: http://reviews.llvm.org/D3462
Patch by Jingyue Wu.
llvm-svn: 207783
|
| |
|
|
|
|
| |
introduced most of these recently.
llvm-svn: 207616
|
| |
|
|
|
|
| |
anything. In some cases remove all together if there are no callers either.
llvm-svn: 207610
|
| |
|
|
|
|
| |
'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. NVPTX edition
llvm-svn: 207505
|
| |
|
|
| |
llvm-svn: 207394
|
| |
|
|
| |
llvm-svn: 207374
|
| |
|
|
| |
llvm-svn: 207330
|
| |
|
|
|
|
| |
and size.
llvm-svn: 207329
|
| |
|
|
| |
llvm-svn: 207327
|
| |
|
|
| |
llvm-svn: 207197
|
| |
|
|
|
|
|
| |
definition below all of the header #include lines, lib/Target/...
edition.
llvm-svn: 206842
|
| |
|
|
|
|
| |
after including the generated code from tablegen.
llvm-svn: 206841
|
| |
|
|
|
|
|
| |
of a '.inc' file before including actual headers. In this case we had
both duplicated a header's include and were including a standard header.
llvm-svn: 206840
|
| |
|
|
|
|
|
|
|
|
|
|
| |
system headers above the includes of generated '.inc' files that
actually contain code. In a few targets this was already done pretty
consistently, but it wasn't done *really* consistently anywhere. It is
strictly cleaner IMO and necessary in a bunch of places where the
DEBUG_TYPE is referenced from the generated code. Consistency with the
necessary places trumps. Hopefully the build bots are OK with the
movement of intrin.h...
llvm-svn: 206838
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
behavior based on other files defining DEBUG_TYPE, which means it cannot
define DEBUG_TYPE at all. This is actually better IMO as it forces folks
to define relevant DEBUG_TYPEs for their files. However, it requires all
files that currently use DEBUG(...) to define a DEBUG_TYPE if they don't
already. I've updated all such files in LLVM and will do the same for
other upstream projects.
This still leaves one important change in how LLVM uses the DEBUG_TYPE
macro going forward: we need to only define the macro *after* header
files have been #include-ed. Previously, this wasn't possible because
Debug.h required the macro to be pre-defined. This commit removes that.
By defining DEBUG_TYPE after the includes two things are fixed:
- Header files that need to provide a DEBUG_TYPE for some inline code
can do so by defining the macro before their inline code and undef-ing
it afterward so the macro does not escape.
- We no longer have rampant ODR violations due to including headers with
different DEBUG_TYPE definitions. This may be mostly an academic
violation today, but with modules these types of violations are easy
to check for and potentially very relevant.
Where necessary to suppor headers with DEBUG_TYPE, I have moved the
definitions below the includes in this commit. I plan to move the rest
of the DEBUG_TYPE macros in LLVM in subsequent commits; this one is big
enough.
The comments in Debug.h, which were hilariously out of date already,
have been updated to reflect the recommended practice going forward.
llvm-svn: 206822
|
| |
|
|
|
|
| |
cpp file rather than in the header and then again in the cpp file.
llvm-svn: 206778
|
| |
|
|
|
|
|
|
| |
break the API.
No functionality change.
llvm-svn: 206740
|
| |
|
|
| |
llvm-svn: 206357
|
| |
|
|
|
|
| |
its own tree containing FixedStackPseudoSourceValue (which you can use isa/dyn_cast on) and MipsCallEntry (which you can't). Anything that needs to use either a PseudoSourceValue* and Value* is strongly encouraged to use a MachinePointerInfo instead.
llvm-svn: 206255
|
| |
|
|
|
|
| |
This commit adds intrinsics and codegen support for the surface read/write and texture read instructions that take an explicit sampler parameter. Codegen operates on image handles at the PTX level, but falls back to direct replacement of handles with kernel arguments if image handles are not enabled. Note that image handles are explicitly disabled for all target architectures in this change (to be enabled later).
llvm-svn: 205907
|
| |
|
|
|
|
| |
including emitting generic() when casting to address space 0.
llvm-svn: 205906
|
| |
|
|
|
|
| |
This also fixes a bug in the annotation cache where the cache will not be cleared between modules if multiple modules are compiled in the same process.
llvm-svn: 205905
|
| |
|
|
|
|
| |
to reduce verbosity.
llvm-svn: 205829
|
| |
|
|
| |
llvm-svn: 205610
|
| |
|
|
|
|
|
|
|
| |
Removes unnecessary casts from non-generic address spaces to the generic address
space for certain code patterns.
Patch by Jingyue Wu.
llvm-svn: 205571
|
| |
|
|
|
|
| |
Pass the entire vector type, and not just the element.
llvm-svn: 205247
|
| |
|
|
|
|
|
| |
Now that r205212 was committed, r203483 is no longer necessary; it was a
temporary workaround that only handled a small number of the problematic cases.
llvm-svn: 205216
|
| |
|
|
|
|
|
|
| |
This is a more thorough fix for the issue than r203483. An IR pass will run
before NVPTX codegen to make sure there are no invalid symbol names that can't
be consumed by the ptxas assembler.
llvm-svn: 205212
|
| |
|
|
|
|
|
| |
This pass is a historic remnant and actually causes less efficient code to be
generated in some cases.
llvm-svn: 204620
|
| |
|
|
| |
llvm-svn: 204600
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
found with a smarter version of -Wunused-member-function that I'm playwing with.
Appologies in advance if I removed someone's WIP code.
include/llvm/CodeGen/MachineSSAUpdater.h | 1
include/llvm/IR/DebugInfo.h | 3
lib/CodeGen/MachineSSAUpdater.cpp | 10 --
lib/CodeGen/PostRASchedulerList.cpp | 1
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 10 --
lib/IR/DebugInfo.cpp | 12 --
lib/MC/MCAsmStreamer.cpp | 2
lib/Support/YAMLParser.cpp | 39 ---------
lib/TableGen/TGParser.cpp | 16 ---
lib/TableGen/TGParser.h | 1
lib/Target/AArch64/AArch64TargetTransformInfo.cpp | 9 --
lib/Target/ARM/ARMCodeEmitter.cpp | 12 --
lib/Target/ARM/ARMFastISel.cpp | 84 --------------------
lib/Target/Mips/MipsCodeEmitter.cpp | 11 --
lib/Target/Mips/MipsConstantIslandPass.cpp | 12 --
lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp | 21 -----
lib/Target/NVPTX/NVPTXISelDAGToDAG.h | 2
lib/Target/PowerPC/PPCFastISel.cpp | 1
lib/Transforms/Instrumentation/AddressSanitizer.cpp | 2
lib/Transforms/Instrumentation/BoundsChecking.cpp | 2
lib/Transforms/Instrumentation/MemorySanitizer.cpp | 1
lib/Transforms/Scalar/LoopIdiomRecognize.cpp | 8 -
lib/Transforms/Scalar/SCCP.cpp | 1
utils/TableGen/CodeEmitterGen.cpp | 2
24 files changed, 2 insertions(+), 261 deletions(-)
llvm-svn: 204560
|
| |
|
|
|
|
| |
Also changes the iterators to return actual DI type over MDNode.
llvm-svn: 204130
|
| |
|
|
|
|
|
|
|
|
| |
NVPTX, like the other backends, relies on generic symbol name sanitizing done by
MCSymbol. However, the ptxas assembler is more stringent and disallows some
additional characters in symbol names.
See PR19099 for more details.
llvm-svn: 203483
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This requires a number of steps.
1) Move value_use_iterator into the Value class as an implementation
detail
2) Change it to actually be a *Use* iterator rather than a *User*
iterator.
3) Add an adaptor which is a User iterator that always looks through the
Use to the User.
4) Wrap these in Value::use_iterator and Value::user_iterator typedefs.
5) Add the range adaptors as Value::uses() and Value::users().
6) Update *all* of the callers to correctly distinguish between whether
they wanted a use_iterator (and to explicitly dig out the User when
needed), or a user_iterator which makes the Use itself totally
opaque.
Because #6 requires churning essentially everything that walked the
Use-Def chains, I went ahead and added all of the range adaptors and
switched them to range-based loops where appropriate. Also because the
renaming requires at least churning every line of code, it didn't make
any sense to split these up into multiple commits -- all of which would
touch all of the same lies of code.
The result is still not quite optimal. The Value::use_iterator is a nice
regular iterator, but Value::user_iterator is an iterator over User*s
rather than over the User objects themselves. As a consequence, it fits
a bit awkwardly into the range-based world and it has the weird
extra-dereferencing 'operator->' that so many of our iterators have.
I think this could be fixed by providing something which transforms
a range of T&s into a range of T*s, but that *can* be separated into
another patch, and it isn't yet 100% clear whether this is the right
move.
However, this change gets us most of the benefit and cleans up
a substantial amount of code around Use and User. =]
llvm-svn: 203364
|
| |
|
|
| |
llvm-svn: 203301
|
| |
|
|
|
|
| |
already lives.
llvm-svn: 203046
|
| |
|
|
|
|
|
|
|
|
|
|
| |
directly care about the Value class (it is templated so that the key can
be any arbitrary Value subclass), it is in fact concretely tied to the
Value class through the ValueHandle's CallbackVH interface which relies
on the key type being some Value subclass to establish the value handle
chain.
Ironically, the unittest is already in the right library.
llvm-svn: 202824
|
| |
|
|
|
|
|
| |
abstracting between a CallInst and an InvokeInst, both of which are IR
concepts.
llvm-svn: 202816
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
business.
This header includes Function and BasicBlock and directly uses the
interfaces of both classes. It has to do with the IR, it even has that
in the name. =] Put it in the library it belongs to.
This is one step toward making LLVM's Support library survive a C++
modules bootstrap.
llvm-svn: 202814
|
| |
|
|
| |
llvm-svn: 202621
|
| |
|
|
|
|
|
| |
Instead, have a DataLayoutPass that holds one. This will allow parts of LLVM
don't don't handle passes to also use DataLayout.
llvm-svn: 202168
|
| |
|
|
|
|
| |
No functionality change. Just reduces the noise of an upcoming patch.
llvm-svn: 202087
|
| |
|
|
| |
llvm-svn: 201833
|
| |
|
|
|
|
|
| |
It is never null and it is not used in casts, so there is no reason to use a
pointer. This matches how we pass TM.
llvm-svn: 201025
|
| |
|
|
| |
llvm-svn: 201022
|
| |
|
|
| |
llvm-svn: 200345
|
| |
|
|
|
|
|
|
| |
The code was missing the case for aggregate parameters and
hence was emitting them as .b0 type. Also fixed a couple
of comments.
llvm-svn: 200325
|
| |
|
|
| |
llvm-svn: 200244
|
| |
|
|
|
|
|
| |
Sweep the codebase for common typos. Includes some changes to visible function
names that were misspelt.
llvm-svn: 200018
|
| |
|
|
| |
llvm-svn: 199746
|