| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is a straightforward extension of what LoopUnswitch does to
branches to guards. That is, we unswitch
```
for (;;) {
...
guard(loop_invariant_cond);
...
}
```
into
```
if (loop_invariant_cond) {
for (;;) {
...
// There is no need to emit guard(true)
...
}
} else {
for (;;) {
...
guard(false);
// SimplifyCFG will clean this up by adding an
// unreachable after the guard(false)
...
}
}
```
Reviewers: majnemer
Subscribers: mcrosier, llvm-commits, mzolotukhin
Differential Revision: http://reviews.llvm.org/D21725
llvm-svn: 273801
|
| |
|
|
| |
llvm-svn: 273800
|
| |
|
|
| |
llvm-svn: 273799
|
| |
|
|
| |
llvm-svn: 273798
|
| |
|
|
| |
llvm-svn: 273797
|
| |
|
|
| |
llvm-svn: 273796
|
| |
|
|
| |
llvm-svn: 273795
|
| |
|
|
| |
llvm-svn: 273794
|
| |
|
|
| |
llvm-svn: 273793
|
| |
|
|
|
|
| |
All of its implementation is in just one function.
llvm-svn: 273792
|
| |
|
|
|
|
|
| |
Name-casing and minor style changes to bring the function up to the LLVM
coding style.
llvm-svn: 273791
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The last import is the penultimate entry, the last entry is nulled out.
Data beyond the null entry should not be considered to hold import
entries.
This fixes PR28302.
N.B. I am working on a reduced testcase, the one in PR28302 is too
large.
llvm-svn: 273790
|
| |
|
|
|
|
|
|
|
| |
If a sub-view has already been rendered, it's helpful to re-render the
expansion site before rendering the next expansion view. Make this fact
explicit in the rendering interface, instead of hiding it behind an
awkward Optional<LineRef> parameter.
llvm-svn: 273789
|
| |
|
|
|
|
| |
lowering to comparisons of <0 or >=0. While there do the same for other kinds of index checks that can just check for greater than 0. No functional change intended.
llvm-svn: 273788
|
| |
|
|
| |
llvm-svn: 273787
|
| |
|
|
|
|
| |
http://reviews.llvm.org/D18919
llvm-svn: 273786
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't cast GV expression to MCSymbolRefExpr. r272705 changed GV to binary
expressions by including offset even if the offset it 0
(we haven't hit this sooner since tested workloads don't include static offsets)
We don't really care about the type of expression, so set it directly.
Fixes: r272705
Consider section relative relocations. Since all const as data is in one boffer section relative is equivalent to abs32.
Fixes: r273166
Differential Revision: http://reviews.llvm.org/D21633
llvm-svn: 273785
|
| |
|
|
| |
llvm-svn: 273784
|
| |
|
|
| |
llvm-svn: 273783
|
| |
|
|
|
|
|
|
|
|
|
|
| |
variable LLVM_BUILD_TYPE.
This is just a small step in the direction of making LLVMConfig.cmake a complete
replacement for llvm-config.
For those unfamiliar, llvm-config --build-mode prints out CMAKE_BUILD_TYPE. Thus
as one can imagine, LLVM_BUILD_TYPE is @CMAKE_BUILD_TYPE@.
llvm-svn: 273782
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: rsmith, faisalv, aaron.ballman
Subscribers: llvm-commits, cfe-commits, nwilson
Differential Revision: http://reviews.llvm.org/D19770
llvm-svn: 273781
|
| |
|
|
|
|
| |
No functional change is intended
llvm-svn: 273780
|
| |
|
|
|
|
| |
This reverts commit r273778, it seems to break UBSan :/
llvm-svn: 273779
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SimplifyCFG had logic to insert calls to llvm.trap for two very
particular IR patterns: stores and invokes of undef/null.
While InstCombine canonicalizes certain undefined behavior IR patterns
to stores of undef, phase ordering means that this cannot be relied upon
in general.
There are much better tools than llvm.trap: UBSan and ASan.
N.B. I could be argued into reverting this change if a clear argument as
to why it is important that we synthesize llvm.trap for stores, I'd be
hard pressed to see why it'd be useful for invokes...
llvm-svn: 273778
|
| |
|
|
|
|
|
| |
Calling null is undefined behavior, we can simplify the resulting value
to undef.
llvm-svn: 273777
|
| |
|
|
|
|
|
| |
Calling null is undefined behavior, a call to undef can be trivially
treated as a call to null.
llvm-svn: 273776
|
| |
|
|
|
|
| |
larger than 16. This was accidentally broken in r272246.
llvm-svn: 273775
|
| |
|
|
| |
llvm-svn: 273774
|
| |
|
|
|
|
|
| |
Make renderExpansionView() look a bit more like renderLine(), and
clarify its doxygen comment.
llvm-svn: 273773
|
| |
|
|
| |
llvm-svn: 273772
|
| |
|
|
| |
llvm-svn: 273771
|
| |
|
|
|
|
|
|
|
| |
There's some kind of issue with using "constexpr unsigned" in an
anonymous namespace.
http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/13395
llvm-svn: 273770
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the kernel code header
Debugger prologue is emitted if -mattr=+amdgpu-debugger-emit-prologue.
Debugger prologue writes work group IDs and work item IDs to scratch memory at fixed location in the following format:
- offset 0: work group ID x
- offset 4: work group ID y
- offset 8: work group ID z
- offset 16: work item ID x
- offset 20: work item ID y
- offset 24: work item ID z
Set
- amd_kernel_code_t::debug_wavefront_private_segment_offset_sgpr to scratch wave offset reg
- amd_kernel_code_t::debug_private_segment_buffer_sgpr to scratch rsrc reg
- amd_kernel_code_t::is_debug_supported to true if all debugger features are enabled
Differential Revision: http://reviews.llvm.org/D20335
llvm-svn: 273769
|
| |
|
|
|
|
|
| |
This adds some tests for the smarter llvm-ar selection mode as well as some
additional tests as per Rafael's post commit review comments.
llvm-svn: 273768
|
| |
|
|
|
|
|
|
|
|
| |
This makes it easier to add renderers for new kinds of output formats.
- Define and document a pure-virtual coverage rendering interface.
- Move the text-based rendering logic into its a new file.
- Re-work the API to better reflect the presentation/formatting split.
llvm-svn: 273767
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Remember the last choice for the top/bottom scheduling boundary in
bidirectional scheduling mode. The top choice should not change if we
schedule at the bottom and vice versa.
This allows us to improve compiletime: We only recalculate the best pick
for one border and re-use the cached top-pick from the other border.
Differential Revision: http://reviews.llvm.org/D19350
llvm-svn: 273766
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Offset folding only works if you are emitting relocations, and we don't
emit relocations for local address space globals.
Reviewers: arsenm, nhaustov
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: http://reviews.llvm.org/D21647
llvm-svn: 273765
|
| |
|
|
| |
llvm-svn: 273764
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: (No semantic change intended).
Reviewers: majnemer, bogner, mzolotukhin
Subscribers: mcrosier, llvm-commits, mzolotukhin
Differential Revision: http://reviews.llvm.org/D21707
llvm-svn: 273763
|
| |
|
|
|
|
|
|
|
|
|
| |
There are two separate issues:
- LLVM doesn't consider infinite loops to be side effects: we happily
hoist/sink above/below loops whose bounds are unknown.
- The absence of the noreturn attribute is insufficient for us to know
if a function will definitely return. Relying on noreturn in the
middle-end for any property is an accident waiting to happen.
llvm-svn: 273762
|
| |
|
|
| |
llvm-svn: 273761
|
| |
|
|
| |
llvm-svn: 273760
|
| |
|
|
|
|
|
|
|
|
| |
These references are used to implement MachO/x64-64 subtractor relocations
where the minuend is being fixed up, rather than the subtrahend. The 64-bit
version was not previously supported, the 32-bit version was partially
implemented but contained bugs not caught by existing test cases. This
patch fixes both functionality and test coverage.
llvm-svn: 273759
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21123
llvm-svn: 273758
|
| |
|
|
|
|
|
|
| |
-fwhole-program-vtables are enabled.
Differential Revision: http://reviews.llvm.org/D21122
llvm-svn: 273757
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This intrinsic safely loads a function pointer from a virtual table pointer
using type metadata. This intrinsic is used to implement control flow integrity
in conjunction with virtual call optimization. The virtual call optimization
pass will optimize away llvm.type.checked.load intrinsics associated with
devirtualized calls, thereby removing the type check in cases where it is
not needed to enforce the control flow integrity constraint.
This patch also introduces the capability to copy type metadata between
global variables, and teaches the virtual call optimization pass to do so.
Differential Revision: http://reviews.llvm.org/D21121
llvm-svn: 273756
|
| |
|
|
|
|
|
|
|
|
| |
In bidirectional scheduling this gives more stable results than just
comparing the "reason" fields of the top/bottom node because the reason
field may be higher depending on what other nodes are in the queue.
Differential Revision: http://reviews.llvm.org/D19401
llvm-svn: 273755
|
| |
|
|
|
|
|
| |
variable weak discardable linkage and partially-ordered initialization, and is
implied for constexpr static data members.)
llvm-svn: 273754
|
| |
|
|
|
|
|
|
|
|
| |
r273711 was reverted by r273743. The inliner needs to know about any
call sites in the inlined function. These were obscured if we replaced
a call to undef with an undef but kept the call around.
This fixes PR28298.
llvm-svn: 273753
|
| |
|
|
| |
llvm-svn: 273752
|