| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 191850
|
| |
|
|
|
|
|
|
|
| |
GetUnderlyingObject.
This recursively strips all GEPs like the existing code. It also handles bitcasts and
other operations that do not change the pointer value.
llvm-svn: 191847
|
| |
|
|
|
|
|
|
| |
Switch instructions were crashing the StructurizeCFG pass, and it's
probably easier anyway if we don't need to handle them in this pass.
Reviewed-by: Christian König <christian.koenig@amd.com>
llvm-svn: 191841
|
| |
|
|
| |
llvm-svn: 191838
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
infrastructure.
This was essentially work toward PGO based on a design that had several
flaws, partially dating from a time when LLVM had a different
architecture, and with an effort to modernize it abandoned without being
completed. Since then, it has bitrotted for several years further. The
result is nearly unusable, and isn't helping any of the modern PGO
efforts. Instead, it is getting in the way, adding confusion about PGO
in LLVM and distracting everyone with maintenance on essentially dead
code. Removing it paves the way for modern efforts around PGO.
Among other effects, this removes the last of the runtime libraries from
LLVM. Those are being developed in the separate 'compiler-rt' project
now, with somewhat different licensing specifically more approriate for
runtimes.
llvm-svn: 191835
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
As discussed in http://llvm-reviews.chandlerc.com/D1754,
this optimization isn't really valid for C, and fires too rarely anyway.
Reviewers: rafael, nicholas
Reviewed By: nicholas
CC: rnk, llvm-commits, nicholas
Differential Revision: http://llvm-reviews.chandlerc.com/D1769
llvm-svn: 191834
|
| |
|
|
|
|
|
|
|
| |
This was broken when options were moved up in r191680. No test because this is
specific LLVMgold.so/libLTO.so.
Patch by Tom Roeder!
llvm-svn: 191829
|
| |
|
|
|
|
| |
Patch by Nicholas White.
llvm-svn: 191824
|
| |
|
|
| |
llvm-svn: 191818
|
| |
|
|
| |
llvm-svn: 191813
|
| |
|
|
|
|
| |
otherwise encoding fails after the last change in X86MCCodeEmitter.cpp.
llvm-svn: 191812
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
APIs, both in C++ and C land.
It's useful for the memory managers that are allocating a section to know what the name of the section is.
At a minimum, this is useful for low-level debugging - it's customary for JITs to be able to tell you what
memory they allocated, and as part of any such dump, they should be able to tell you some meta-data about
what each allocation is for. This allows clients that supply their own memory managers to do this.
Additionally, we also envision the SectionName being useful for passing meta-data from within LLVM to an LLVM
client.
This changes both the C and C++ APIs, and all of the clients of those APIs within LLVM. I'm assuming that
it's safe to change the C++ API because that API is allowed to change. I'm assuming that it's safe to change
the C API because we haven't shipped the API in a release yet (LLVM 3.3 doesn't include the MCJIT memory
management C API).
llvm-svn: 191804
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is updated to use DITypeRef.
Move isUnsignedDIType and getOriginalTypeSize from DebugInfo.h to be static
helper functions in DwarfCompileUnit. We already have a static helper function
"isTypeSigned" in DwarfCompileUnit, and a pointer to DwarfDebug is added to
resolve the derived-from field. All three functions need to go across link
for derived-from fields, so we need to get hold of a type identifier map.
A pointer to DwarfDebug is also added to DbgVariable in order to resolve the
derived-from field.
Debug info verifier is updated to check a derived-from field is a TypeRef.
Verifier will not go across link for derived-from fields, in debug info finder,
we go across the link to add derived-from fields to types.
Function getDICompositeType is only used by dragonegg and since dragonegg does
not generate identifier for types, we use an empty map to resolve the
derived-from field.
When printing a derived-from field, we use DITypeRef::getName to either return
the type identifier or getName of the DIType.
A paired commit at clang is required due to changes to DIBuilder.
llvm-svn: 191800
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
comments issued with verbose assembly.
E.g., on a vector shuffle operation, disassembled output are:
* Without the option:
vpshufd $-0x79, (%rsp), %xmm0
* With the option:
vpshufd $-0x79, (%rsp), %xmm0 ## xmm0 = mem[3,1,0,2]
This part of <rdar://problem/14687488>.
llvm-svn: 191799
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and it is shared across CUs.
We add a few maps in DwarfDebug to map MDNodes for the type system to the
corresponding DIEs: MDTypeNodeToDieMap, MDSPNodeToDieMap, and
MDStaticMemberNodeToDieMap. These DIEs can be shared across CUs, that is why we
keep the maps in DwarfDebug instead of CompileUnit.
Sometimes, when we try to add an attribute to a DIE, the DIE is not yet added
to its owner yet, so we don't know whether we should use ref_addr or ref4.
We create a worklist that will be processed during finalization to add
attributes with the correct form (ref_addr or ref4).
We add addDIEEntry to DwarfDebug to be a wrapper around DIE->addValue. It checks
whether we know the correct form, if not, we update the worklist
(DIEEntryWorklist).
A testing case is added to show that we only create a single DIE for a type
MDNode and we use ref_addr to refer to the type DIE.
llvm-svn: 191792
|
| |
|
|
| |
llvm-svn: 191790
|
| |
|
|
| |
llvm-svn: 191789
|
| |
|
|
| |
llvm-svn: 191788
|
| |
|
|
|
|
|
|
|
| |
that each comment ends with a newline to match the definition in the header
file.
This is part of <rdar://problem/14687488>.
llvm-svn: 191787
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's silly to merge functions like these:
define void @foo(i32 %x) {
ret void
}
define void @bar(i32 %x) {
ret void
}
to get
define void @bar(i32) {
tail call void @foo(i32 %0)
ret void
}
llvm-svn: 191786
|
| |
|
|
|
|
|
|
|
|
|
| |
Parsing .debug_aranges section now takes O(nlogn) operations instead
of O(n^2), where "n" is the number of address ranges. With this change,
the time required to symbolize an address from a random large
Clang-generated binary drops from 165 seconds to 1.5 seconds.
No functionality change.
llvm-svn: 191781
|
| |
|
|
| |
llvm-svn: 191780
|
| |
|
|
| |
llvm-svn: 191779
|
| |
|
|
| |
llvm-svn: 191778
|
| |
|
|
| |
llvm-svn: 191777
|
| |
|
|
|
|
|
| |
There are no corresponding patterns for small immediates because they would
prevent the use of fused compare-and-branch instructions.
llvm-svn: 191775
|
| |
|
|
| |
llvm-svn: 191774
|
| |
|
|
| |
llvm-svn: 191773
|
| |
|
|
|
|
|
| |
This involves using RISB[LH]G, whereas the equivalent z10 optimization
uses RISBG.
llvm-svn: 191770
|
| |
|
|
|
|
| |
As the comment says, we always want to use STOC for 32-bit stores.
llvm-svn: 191767
|
| |
|
|
|
|
|
|
|
|
|
| |
This function-attribute modifies the callee-saved register list and function
epilogue (specifically the return instruction) so that a routine is suitable
for use as an interrupt-handler of the specified type without disrupting
user-mode applications.
rdar://problem/14207019
llvm-svn: 191766
|
| |
|
|
|
|
|
|
| |
Floats are stored in the high 32 bits of an FPR, and the only GPR<->FPR
transfers are full-register transfers. This patch optimizes GPR<->FPR
float transfers when the high word of a GPR is directly accessible.
llvm-svn: 191764
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- New ProcessInfo class to encapsulate information about child processes.
- Generalized the Wait() to support non-blocking wait on child processes.
- ExecuteNoWait() now returns a ProcessInfo object with information about
the launched child. Users will be able to use this object to
perform non-blocking wait.
- ExecuteNoWait() now accepts an ExecutionFailed param that tells if execution
failed or not.
These changes will allow users to implement basic process parallel
tools.
Differential Revision: http://llvm-reviews.chandlerc.com/D1728
llvm-svn: 191763
|
| |
|
|
| |
llvm-svn: 191762
|
| |
|
|
| |
llvm-svn: 191759
|
| |
|
|
|
|
| |
Patch by Alp Toker.
llvm-svn: 191757
|
| |
|
|
| |
llvm-svn: 191755
|
| |
|
|
| |
llvm-svn: 191753
|
| |
|
|
| |
llvm-svn: 191751
|
| |
|
|
|
|
|
| |
Similar to low words, we can use the shorter LLIHL and LLIHH if it turns
out that the other half of the GR64 isn't live.
llvm-svn: 191750
|
| |
|
|
|
|
| |
Pointed out by Joerg.
llvm-svn: 191749
|
| |
|
|
| |
llvm-svn: 191748
|
| |
|
|
| |
llvm-svn: 191746
|
| |
|
|
|
|
|
| |
This also removes the restriction on the immediate field of the 'hint'
instruction.
llvm-svn: 191744
|
| |
|
|
| |
llvm-svn: 191743
|
| |
|
|
| |
llvm-svn: 191742
|
| |
|
|
|
|
| |
PR17425.
llvm-svn: 191741
|
| |
|
|
| |
llvm-svn: 191740
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This just adds the basics necessary for allocating the upper words to
virtual registers (move, load and store). The move support is parameterised
in a way that makes it easy to handle zero extensions, but the associated
zero-extend patterns are added by a later patch.
The easiest way of testing this seemed to be add a new "h" register
constraint for high words. I don't expect the constraint to be useful
in real inline asms, but it should work, so I didn't try to hide it
behind an option.
llvm-svn: 191739
|
| |
|
|
|
|
|
| |
Originally committed as r191661, but reverted because it changed the matching
order of comparisons on some hosts. That should have been fixed by r191735.
llvm-svn: 191738
|