| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Remove dependency of the evalution order of function arguments, which
is unspecified.
Patch by David Stenberg.
llvm-svn: 273145
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove dependency of the evalution order of function arguments, which
is unspecified.
The following test previously failed when built with GCC (but succeded
when built with Clang):
; RUN: opt -sroa -S < %s | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%A = type {i16}
@a = global %A* null
@b = global i16 0
; CHECK-LABEL: @f1(
; CHECK: alloca %A
; CHECK-NEXT: extractvalue %A
; CHECK-NEXT: getelementptr inbounds %A
define void @f1 (%A %a) {
%1 = alloca %A
store %A %a, %A* %1
%2 = load i16, i16* @b
%3 = icmp ne i16 %2, 0
br i1 %3, label %bb1, label %bb2
bb1:
store %A* %1, %A** @a
br label %bb2
bb2:
ret void
}
Patch by David Stenberg.
Differential Revision: http://reviews.llvm.org/D21226
llvm-svn: 273144
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After a store has been eliminated, when making sure that the
instruction iterator points to a valid instruction, dbg intrinsics are
now ignored as a new instruction.
Patch by Henric Karlsson.
Reviewed by Daniel Berlin.
Differential Revision: http://reviews.llvm.org/D21076
llvm-svn: 273141
|
|
|
|
|
|
|
| |
This patch adds a function that corresponds to `fUDTAnon`
and use that to compute TPI hash values as the reference does.
llvm-svn: 273139
|
|
|
|
|
|
|
|
| |
intrinsic lowering.
Differential Revision: http://reviews.llvm.org/D20897
llvm-svn: 273138
|
|
|
|
|
|
| |
all of the other routines instead of recreating them in the handlers for each type. NFC
llvm-svn: 273137
|
|
|
|
|
|
| |
repeatedly. Remove nearby else after return as well. NFC
llvm-svn: 273136
|
|
|
|
|
|
| |
to. And just use a SmallVector to do the copy because its easy.
llvm-svn: 273135
|
|
|
|
|
|
|
|
|
|
| |
On the surface, this might not look like it does anything... but
actually it brings in the declaration "extern template class
AnalysisManager<Loop>;", which suppresses the instantiation of the
constructor, which avoids the funny interaction between "extern
template" and -fvisibility-inlines-hidden.
llvm-svn: 273133
|
|
|
|
|
|
|
|
|
|
| |
Removing dead instructions requires remembering which operands have
already been removed. RecursivelyDeleteTriviallyDeadInstructions has
this logic, don't partially reimplement it in LoopIdiomRecognize.
This fixes PR28196.
llvm-svn: 273132
|
|
|
|
| |
llvm-svn: 273131
|
|
|
|
| |
llvm-svn: 273130
|
|
|
|
| |
llvm-svn: 273129
|
|
|
|
|
|
|
| |
Use an APInt to handle pointers of arbitrary width, let
accumulateConstantOffset handle overflow issues.
llvm-svn: 273126
|
|
|
|
|
|
| |
support
llvm-svn: 273125
|
|
|
|
| |
llvm-svn: 273124
|
|
|
|
| |
llvm-svn: 273120
|
|
|
|
|
|
|
|
|
|
|
|
| |
We currently only allow exact matches of shuffle mask patterns during target shuffle combining.
This patch relaxes this to permit SM_SentinelUndef in the combined shuffle to always be accepted as well as allowing exact matching of the SM_SentinelZero value.
I've adjusted some tests that were requiring exact shuffle masks to now include undef values.
Differential Revision: http://reviews.llvm.org/D21495
llvm-svn: 273119
|
|
|
|
| |
llvm-svn: 273118
|
|
|
|
|
|
| |
vectors. Reduce SmallVector size accordingly.
llvm-svn: 273117
|
|
|
|
|
|
| |
vector for the smaller mask. This removes some custom correction code and can potentially provide other benefits in the future.
llvm-svn: 273116
|
|
|
|
|
|
| |
only called on single input shuffles masks already. Add an assert instead to verify.
llvm-svn: 273115
|
|
|
|
| |
llvm-svn: 273114
|
|
|
|
|
|
|
|
| |
with a vector of all -1s. Otherwise we're trusting the caller to pass the right thing.
This should be no functional change with current code.
llvm-svn: 273113
|
|
|
|
|
|
| |
revision r273108.
llvm-svn: 273111
|
|
|
|
| |
llvm-svn: 273109
|
|
|
|
|
|
|
|
|
|
| |
Passes to fix three hardware errata that appear on some LEON processor variants.
The instructions FSMULD, FMULS and FDIVS do not work as expected on some LEON processors. This change allows those instructions to be substituted for alternatives instruction sequences that are known to work.
These passes only run when selected individually, or as part of a processor defintion. They are not included in general SPARC processor compilations for non-LEON processors or for those LEON processors that do not have these hardware errata.
llvm-svn: 273108
|
|
|
|
|
|
|
|
|
|
|
| |
Change the underlying offset and comparisons to use int64_t instead of
uint64_t.
Patch by River Riddle!
Differential Revision: http://reviews.llvm.org/D21499
llvm-svn: 273105
|
|
|
|
|
|
| |
former is grammatically incorrect.
llvm-svn: 273100
|
|
|
|
| |
llvm-svn: 273094
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
JR is an alias of JALR with $rd=0 in the R6 ISA. Also, this fixes recursive
builds in MIPS32R6.
Reviewers: dsanders, sdardis
Subscribers: jfb, dschuff, dsanders, sdardis, llvm-commits
Differential Revision: http://reviews.llvm.org/D21370
llvm-svn: 273085
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21011
llvm-svn: 273084
|
|
|
|
|
|
|
|
|
|
|
|
| |
CodeGen has hooks that allow targets to emit specialized code instead
of calls to memcmp, memchr, strcpy, stpcpy, strcmp, strlen, strnlen.
When ASan/MSan/TSan/ESan is in use, this sidesteps its interceptors, resulting
in uninstrumented memory accesses. To avoid that, make these sanitizers
mark the calls as nobuiltin.
Differential Revision: http://reviews.llvm.org/D19781
llvm-svn: 273083
|
|
|
|
|
|
|
|
|
| |
Access it through -passes=print-lcg-dot
Let me know any suggestions for changing the rendering; I'm not
particularly attached to what is implemented here.
llvm-svn: 273082
|
|
|
|
|
|
|
|
| |
Don't use AllocateStack because kernel arguments have nothing
to do with the stack. The ensureMaxAlignment call was still
changing the stack alignment.
llvm-svn: 273080
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The way we elide max expressions when computing trip counts is incorrect
-- it breaks cases like this:
```
static int wrapping_add(int a, int b) {
return (int)((unsigned)a + (unsigned)b);
}
void test() {
volatile int end_buf = 2147483548; // INT_MIN - 100
int end = end_buf;
unsigned counter = 0;
for (int start = wrapping_add(end, 200); start < end; start++)
counter++;
print(counter);
}
```
Note: the `NoWrap` variable that was being tested has little to do with
the values flowing into the max expression; it is a property of the
induction variable.
test/Transforms/LoopUnroll/nsw-tripcount.ll was added to solely test
functionality I'm reverting in this change, so I've deleted the test
fully.
llvm-svn: 273079
|
|
|
|
|
|
| |
Required better annotation of the instruction defs upon removal of the builtin intrinsic pattern.
llvm-svn: 273077
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21480
llvm-svn: 273071
|
|
|
|
|
|
|
| |
This seems to be causing an infinite loop / crash in instcombine
on some bots.
llvm-svn: 273069
|
|
|
|
| |
llvm-svn: 273067
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: arsenm, kzhuravl, rafael
Subscribers: llvm-commits, kzhuravl
Differential Revision: http://reviews.llvm.org/D21443
llvm-svn: 273066
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a functional change for LLE and LDist. The other clients (LV,
LVerLICM) already had this explicitly enabled.
The temporary boolean parameter to LAA is removed that allowed turning
off speculation of symbolic strides. This makes LAA's caching interface
LAA::getInfo only take the loop as the parameter. This makes the
interface more friendly to the new Pass Manager.
The flag -enable-mem-access-versioning is moved from LV to a LAA which
now allows turning off speculation globally.
llvm-svn: 273064
|
|
|
|
|
|
|
|
|
|
|
|
| |
This should select to s_trap, but that requires
additonal work to setup and enable the trap handler.
For now emit s_endpgm so bugpoint stops getting stuck
on the unsupported call to abort.
Emit a warning that this will only terminate the wave and
not really trap.
llvm-svn: 273062
|
|
|
|
|
|
| |
This change were suggested in http://reviews.llvm.org/D21154.
llvm-svn: 273059
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
offsets to the archive members.
Darwin added support in its Xcode 8.0 tools (released in the beta) for static
library table of contents with 64-bit offsets to the archive members. The
change is very straight forward. The table of contents member is named
___.SYMDEF_64 or "___.SYMDEF_64 SORTED" and same layout is used but with
fields using 64 bit values instead of 32 bit values.
rdar://26869808
llvm-svn: 273058
|
|
|
|
|
|
|
| |
An incomplete member pointer type will always have a size of zero, so we
don't need an extra flag. Credit to David Majnemer for the idea.
llvm-svn: 273057
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, frontends which emit source-based code coverage have to
duplicate logic to encode filenames and raw coverage mappings properly.
This violates an abstraction layer and forces frontends to copy tricky
code.
Introduce llvm::coverage::encodeFilenamesAndRawMappings() to take care
of this.
This will help us experiment with zlib-compressing coverage mapping
data.
llvm-svn: 273055
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This seems like the least intrusive way to pass this information
through.
Fixes PR28151
Reviewers: majnemer, aprantl, dblaikie
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21444
llvm-svn: 273053
|
|
|
|
|
|
|
|
|
|
|
|
| |
readFunctionRecords is used to iterate through the entries of the
coverage mapping section. Instead of expecting the function to update
the iterator through a `const char *&` parameter, just return the
updated iterator.
This will help us experiment with zlib-compressing coverage mapping
data.
llvm-svn: 273052
|
|
|
|
|
|
| |
Mesa doesn't emit this for llvm >= 3.8 anymore.
llvm-svn: 273050
|