| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 229020
|
|
|
|
| |
llvm-svn: 229019
|
|
|
|
| |
llvm-svn: 229018
|
|
|
|
| |
llvm-svn: 229017
|
|
|
|
| |
llvm-svn: 229016
|
|
|
|
| |
llvm-svn: 229015
|
|
|
|
| |
llvm-svn: 229014
|
|
|
|
| |
llvm-svn: 229013
|
|
|
|
| |
llvm-svn: 229011
|
|
|
|
| |
llvm-svn: 229010
|
|
|
|
| |
llvm-svn: 229009
|
|
|
|
| |
llvm-svn: 229007
|
|
|
|
| |
llvm-svn: 229006
|
|
|
|
| |
llvm-svn: 229005
|
|
|
|
| |
llvm-svn: 229004
|
|
|
|
| |
llvm-svn: 229003
|
|
|
|
|
|
| |
An alloca's type should be weird things like metadata.
llvm-svn: 228820
|
|
|
|
| |
llvm-svn: 228813
|
|
|
|
|
|
| |
This speeds up parsing .ll files with metadata nodes with large IDs.
llvm-svn: 228812
|
|
|
|
|
|
| |
Well, the exact error from the failed parse will change, but...
llvm-svn: 228644
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove unnecessary restriction of 24-bits for line numbers in
`MDLocation`.
The rest of the debug info schema (with the exception of local
variables) uses 32-bits for line numbers. As I introduce the
specialized nodes, it makes sense to canonicalize on one size or the
other.
llvm-svn: 228455
|
|
|
|
| |
llvm-svn: 228448
|
|
|
|
|
|
|
| |
Split out `LineField`, which restricts the legal line numbers. This
will make it easier to be consistent between different node parsers.
llvm-svn: 228226
|
|
|
|
| |
llvm-svn: 228213
|
|
|
|
|
|
|
|
| |
Move all the types of `MDField` to an anonymous namespace in the source
file. This also eliminates the duplication of `ParseMDField()`
declarations in the header for each new field type.
llvm-svn: 228211
|
|
|
|
| |
llvm-svn: 228209
|
|
|
|
|
|
| |
This condition is checked in the generic `ParseMDField()`.
llvm-svn: 228208
|
|
|
|
|
|
| |
We only need `uint64_t` for storage.
llvm-svn: 228205
|
|
|
|
|
|
|
| |
Recognize `DW_TAG_` constants in assembly, and output it by default for
`GenericDebugNode`.
llvm-svn: 228042
|
|
|
|
| |
llvm-svn: 228041
|
|
|
|
|
|
|
|
|
| |
Move debug-info-centred `Metadata` subclasses into their own
header/source file. A couple of private template functions are needed
from both `Metadata.cpp` and `DebugInfoMetadata.cpp`, so I've moved them
to `lib/IR/MetadataImpl.h`.
llvm-svn: 227835
|
|
|
|
|
|
| |
Extract most of `PARSE_MD_FIELD()` into a function.
llvm-svn: 226539
|
|
|
|
| |
llvm-svn: 226538
|
|
|
|
| |
llvm-svn: 226527
|
|
|
|
| |
llvm-svn: 226526
|
|
|
|
| |
llvm-svn: 226524
|
|
|
|
|
|
|
|
|
| |
As pointed out in r226501, the distinction between `MDNode` and
`UniquableMDNode` is confusing. When we need subclasses of `MDNode`
that don't use all its functionality it might make sense to break it
apart again, but until then this makes the code clearer.
llvm-svn: 226520
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change `MDTuple::getTemporary()` and `MDLocation::getTemporary()` to
return (effectively) `std::unique_ptr<T, MDNode::deleteTemporary>`, and
clean up call sites. (For now, `DIBuilder` call sites just call
`release()` immediately.)
There's an accompanying change in each of clang and polly to use the new
API.
llvm-svn: 226504
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove `MDNodeFwdDecl` (as promised in r226481). Aside from API
changes, there's no real functionality change here.
`MDNode::getTemporary()` now forwards to `MDTuple::getTemporary()`,
which returns a tuple with `isTemporary()` equal to true.
The main point is that we can now add temporaries of other `MDNode`
subclasses, needed for PR22235 (I introduced `MDNodeFwdDecl` in the
first place because I didn't recognize this need, and thought they were
only needed to handle forward references).
A few things left out of (or highlighted by) this commit:
- I've had to remove the (few) uses of `std::unique_ptr<>` to deal
with temporaries, since the destructor is no longer public.
`getTemporary()` should probably return the equivalent of
`std::unique_ptr<T, MDNode::deleteTemporary>`.
- `MDLocation::getTemporary()` doesn't exist yet (worse, it actually
does exist, but does the wrong thing: `MDNode::getTemporary()` is
inherited and returns an `MDTuple`).
- `MDNode` now only has one subclass, `UniquableMDNode`, and the
distinction between them is actually somewhat confusing.
I'll fix those up next.
llvm-svn: 226501
|
|
|
|
|
|
| |
Raise the limit for column information from 8 bits to 16 bits.
llvm-svn: 226291
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds assembly and bitcode support for `MDLocation`. The assembly
side is rather big, since this is the first `MDNode` subclass (that
isn't `MDTuple`). Part of PR21433.
(If you're wondering where the mountains of testcase updates are, we
don't need them until I update `DILocation` and `DebugLoc` to actually
use this class.)
llvm-svn: 225830
|
|
|
|
|
|
|
|
| |
Use subclass API instead of the wrappers in `MDNode` in the assembly
parser. This will make the code easier to follow once we have multiple
subclasses.
llvm-svn: 225711
|
|
|
|
| |
llvm-svn: 225710
|
|
|
|
| |
llvm-svn: 225709
|
|
|
|
| |
llvm-svn: 225708
|
|
|
|
|
|
| |
This isn't parsing arbitrary subclasses of `MDNode`, just `MDTuple`.
llvm-svn: 225702
|
|
|
|
|
|
|
| |
Merge the two versions of `ParseMDNodeID()` now that no one needs
special forward references.
llvm-svn: 225699
|
|
|
|
|
|
|
|
| |
Remove special parsing logic for metadata attachments. Now that
`DebugLoc` is stored normally (since the metadata/value split), we don't
need this special forward referencing logic.
llvm-svn: 225698
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split `GenericMDNode` into two classes (with more descriptive names).
- `UniquableMDNode` will be a common subclass for `MDNode`s that are
sometimes uniqued like constants, and sometimes 'distinct'.
This class gets the (short-lived) RAUW support and related API.
- `MDTuple` is the basic tuple that has always been returned by
`MDNode::get()`. This is as opposed to more specific nodes to be
added soon, which have additional fields, custom assembly syntax,
and extra semantics.
This class gets the hash-related logic, since other sublcasses of
`UniquableMDNode` may need to hash based on other fields.
To keep this diff from getting too big, I've added casts to `MDTuple`
that won't really scale as new subclasses of `UniquableMDNode` are
added, but I'll clean those up incrementally.
(No functionality change intended.)
llvm-svn: 225682
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Propagate whether `MDNode`s are 'distinct' through the other types of IR
(assembly and bitcode). This adds the `distinct` keyword to assembly.
Currently, no one actually calls `MDNode::getDistinct()`, so these nodes
only get created for:
- self-references, which are never uniqued, and
- nodes whose operands are replaced that hit a uniquing collision.
The concept of distinct nodes is still not quite first-class, since
distinct-ness doesn't yet survive across `MapMetadata()`.
Part of PR22111.
llvm-svn: 225474
|