OSDN Git Service
Reid Kleckner [Fri, 19 Feb 2016 23:55:38 +0000 (23:55 +0000)]
[codeview] Fix emission of file changes in inline line tables
These are supposed to be file checksum table offsets, not file ids.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261379
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Fri, 19 Feb 2016 22:55:08 +0000 (22:55 +0000)]
[sancov] sanitizer html report cosmetic improvements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261375
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 19 Feb 2016 22:18:49 +0000 (22:18 +0000)]
[X86ISelLowering] Provide a more informative assert message.
I stumbled upon this while debugging a lowering bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261371
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 19 Feb 2016 22:01:07 +0000 (22:01 +0000)]
[X86ISelLowering] Merge two conditions inside a single if.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261370
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Fri, 19 Feb 2016 21:40:12 +0000 (21:40 +0000)]
Revert r255691 "[LoopVectorizer] Refine loop vectorizer's register usage calculator by ignoring specific instructions."
It caused PR26509.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261368
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Fri, 19 Feb 2016 21:26:31 +0000 (21:26 +0000)]
Revert r253557 "Alternative to long nops for X86 CPUs, by Andrey Turetsky"
Turns out the new nop sequences aren't actually nops on x86_64 (PR26554).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261365
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 19 Feb 2016 21:09:26 +0000 (21:09 +0000)]
llvm-dwp: Improve performance (N^2 to amortized N) by using a MapVector instead of linear searches through a vector
Figured this would be a problem, but didn't want to jump the gun - large
inputs demonstrate it pretty easily (mostly for type units, but might as
well do the same for CUs too). A random sample 6m27s -> 27s change.
Also, by checking this up-front for CUs (rather than when building the
cu_index) we can probably provide better error messages (see FIXMEs),
hopefully providing the name of the CUs rather than just their
signature.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261364
91177308-0d34-0410-b5e6-
96231b3b80d8
Dimitry Andric [Fri, 19 Feb 2016 20:14:11 +0000 (20:14 +0000)]
Fix incorrect selection of AVX512 sqrt when OptForSize is on
Summary:
When optimizing for size, sqrt calls can be incorrectly selected as
AVX512 VSQRT instructions. This is because X86InstrAVX512.td has a
`Requires<[OptForSize]>` in its `avx512_sqrt_scalar` multiclass
definition. Even if the target does not support AVX512, the class can
apparently still be chosen, leading to an incorrect selection of
`vsqrtss`.
In PR26625, this lead to an assertion: Reg >= X86::FP0 && Reg <=
X86::FP6 && "Expected FP register!", because the `vsqrtss` instruction
requires an XMM register, which is not available on i686 CPUs.
Reviewers: grosbach, resistor, joker.eph
Subscribers: spatel, emaste, llvm-commits
Differential Revision: http://reviews.llvm.org/D17414
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261360
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 19 Feb 2016 19:37:07 +0000 (19:37 +0000)]
[StatepointLowering] Minor non-semantic cleanups
Use auto, bring file up to coding standards etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261358
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 19 Feb 2016 19:22:44 +0000 (19:22 +0000)]
[WebAssembly] Add another optimization idea to README.txt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261354
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Fri, 19 Feb 2016 18:27:32 +0000 (18:27 +0000)]
[AArch64][ShrinkWrap] Fix bug in prolog clobbering live reg when shrink wrapping.
Summary: See bug https://llvm.org/bugs/show_bug.cgi?id=26642
Reviewers: qcolombet, t.p.northover
Subscribers: aemerson, rengolin, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D17350
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261349
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 19 Feb 2016 18:15:56 +0000 (18:15 +0000)]
[StatepointLowering] Update StatepointMaxSlotsRequired correctly
Now that we don't always add an element to AllocatedStackSlots if we
don't find a pre-existing unallocated stack slot, bumping
StatepointMaxSlotsRequired to `NumSlots + 1` is not correct. Instead
bump the statistic near the push_back, to
Builder.FuncInfo.StatepointStackSlots.size().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261348
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 19 Feb 2016 18:15:53 +0000 (18:15 +0000)]
[StatepointLowering] Fix a mistake in rL261336
The check on MFI->getObjectSize() has to be on the FrameIndex, not on
the index of the FrameIndex in AllocatedStackSlots. Weirdly, the tests
I added in rL261336 didn't catch this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261347
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Fri, 19 Feb 2016 17:56:08 +0000 (17:56 +0000)]
[LV] Vectorize first-order recurrences
This patch enables the vectorization of first-order recurrences. A first-order
recurrence is a non-reduction recurrence relation in which the value of the
recurrence in the current loop iteration equals a value defined in the previous
iteration. The load PRE of the GVN pass often creates these recurrences by
hoisting loads from within loops.
In this patch, we add a new recurrence kind for first-order phi nodes and
attempt to vectorize them if possible. Vectorization is performed by shuffling
the values for the current and previous iterations. The vectorization cost
estimate is updated to account for the added shuffle instruction.
Contributed-by: Matthew Simpson and Chad Rosier <mcrosier@codeaurora.org>
Differential Revision: http://reviews.llvm.org/D16197
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261346
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 19 Feb 2016 17:15:26 +0000 (17:15 +0000)]
[StatepointLowering] Change AllocatedStackSlots to use SmallBitVector
NFCI. They key motivation here is that I'd like to use
SmallBitVector::all() in a later change. Also, using a bit vector here
seemed better in general.
The only interesting change here is that in the failure case of
allocateStackSlot, we no longer (the equivalent of) push_back(true) to
AllocatedStackSlots. As far as I can tell, this is fine, since we'd
never re-use those slots in the same StatepointLoweringState instance.
Technically there was no need to change the operator[] type accesses to
set() and test(), but I thought it'd be nice to make it obvious that
we're using something other than a std::vector like thing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261337
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 19 Feb 2016 17:15:22 +0000 (17:15 +0000)]
[StatepointLowering] Fix bug in allocateStackSlot
allocateStackSlot did not consider the size of the value to be spilled
before deciding to re-use a spill slot. This was originally okay (since
originally we'd only ever spill pointers), but it became not okay when
we changed our scheme to directly spill vectors of pointers.
While this change fixes the bug pointed out, it has two performance
caveats:
- It matches spill slot and spillee size exactly, while in theory we
can spill, e.g., an 8 byte pointer into a 16 byte slot. This is
slightly complicated to fix since in the stackmaps section, we report
the size of the spill slot as the size of the "indirect value"; and
if they're no longer equivalent, we'll have to keep track of the
(indirect) value size separately from the stack slot size.
- It will "spuriously run out" of reusable slots, since we now have an
second check in the search loop in addition to the availablity
check (e.g. you had two free scalar slots, and you first ask for a
vector slot followed by a scalar slot). I'll fix this in a later
commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261336
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 19 Feb 2016 17:15:17 +0000 (17:15 +0000)]
[StatepointLowering] Clean up allocateStackSlot
This removes the unusual loop structure in allocateStackSlot in favor of
something more straightforward. I've also removed the cautionary
comment in the function, which I suspect is historical cruft now, and
confuses more than it enlightens.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261335
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin B. Smith [Fri, 19 Feb 2016 16:20:48 +0000 (16:20 +0000)]
[X86] Change fixup-bw-inst.ll to test output with this optimization on and off.
Differential Revision: http://reviews.llvm.org/D17415
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261332
91177308-0d34-0410-b5e6-
96231b3b80d8
Silviu Baranga [Fri, 19 Feb 2016 15:46:10 +0000 (15:46 +0000)]
[LV] Fix PR26600: avoid out of bounds loads for interleaved access vectorization
Summary:
If we don't have the first and last access of an interleaved load group,
the first and last wide load in the loop can do an out of bounds
access. Even though we discard results from speculative loads,
this can cause problems, since it can technically generate page faults
(or worse).
We now discard interleaved load groups that don't have the first and
load in the group.
Reviewers: hfinkel, rengolin
Subscribers: rengolin, llvm-commits, mzolotukhin, anemet
Differential Revision: http://reviews.llvm.org/D17332
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261331
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 19 Feb 2016 15:33:13 +0000 (15:33 +0000)]
AMDGPU/SI: Fix s_waitcnt insertion for flat instructions
Summary:
This was broken in r260694 which swapped the address and data operands
for flat store instructions. The code in SIInsertWaits assumes
that the data operand always comes before the address operand, so
we need to add a special case for flat.
Reviewers: arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D17366
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261330
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 19 Feb 2016 14:38:09 +0000 (14:38 +0000)]
[X86][AVX] Added fast-isel intrinsics tests
As discussed on PR24580, this patch adds some (more to come) initial fast-isel codegen tests to match the IR generated in clang/test/CodeGen/avx-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261329
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 19 Feb 2016 14:13:52 +0000 (14:13 +0000)]
Add support for merging strings with alignment larger than one char.
This will be used in a lld patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261326
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 19 Feb 2016 14:10:21 +0000 (14:10 +0000)]
[SystemZ] Fix ABI for i128 argument and return types
According to the SystemZ ABI, 128-bit integer types should be
passed and returned via implicit reference. However, this is
not currently implemented at the LLVM IR level for the i128
type. This does not matter when compiling C/C++ code, since
clang will implement the implicit reference itself.
However, it turns out that when calling libgcc helper routines
operating on 128-bit integers, LLVM will use i128 argument and
return value types; the resulting code is not compatible with
the ABI used in libgcc, leading to crashes (see PR26559).
This should be simple to fix, except that i128 currently is not
even a legal type for the SystemZ back end. Therefore, common
code will already split arguments and return values into multiple
parts. The bulk of this patch therefore consists of detecting
such parts, and correctly handling passing via implicit reference
of a value split into multiple parts. If at some time in the
future, i128 becomes a legal type, this code can be removed again.
This fixes PR26559.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261325
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 19 Feb 2016 10:59:43 +0000 (10:59 +0000)]
[LPM] Document the new helpers to make it easy to get consistent require
and preserve behavior from loop passes.
Differential Revision: http://reviews.llvm.org/D17443
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261319
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 19 Feb 2016 10:45:18 +0000 (10:45 +0000)]
[LPM] Factor all of the loop analysis usage updates into a common helper
routine.
We were getting this wrong in small ways and generally being very
inconsistent about it across loop passes. Instead, let's have a common
place where we do this. One minor downside is that this will require
some analyses like SCEV in more places than they are strictly needed.
However, this seems benign as these analyses are complete no-ops, and
without this consistency we can in many cases end up with the legacy
pass manager scheduling deciding to split up a loop pass pipeline in
order to run the function analysis half-way through. It is very, very
annoying to fix these without just being very pedantic across the board.
The only loop passes I've not updated here are ones that use
AU.setPreservesAll() such as IVUsers (an analysis) and the pass printer.
They seemed less relevant.
With this patch, almost all of the problems in PR24804 around loop pass
pipelines are fixed. The one remaining issue is that we run simplify-cfg
and instcombine in the middle of the loop pass pipeline. We've recently
added some loop variants of these passes that would seem substantially
cleaner to use, but this at least gets us much closer to the previous
state. Notably, the seven loop pass managers is down to three.
I've not updated the loop passes using LoopAccessAnalysis because that
analysis hasn't been fully wired into LoopSimplify/LCSSA, and it isn't
clear that those transforms want to support those forms anyways. They
all run late anyways, so this is harmless. Similarly, LSR is left alone
because it already carefully manages its forms and doesn't need to get
fused into a single loop pass manager with a bunch of other loop passes.
LoopReroll didn't use loop simplified form previously, and I've updated
the test case to match the trivially different output.
Finally, I've also factored all the pass initialization for the passes
that use this technique as well, so that should be done regularly and
reliably.
Thanks to James for the help reviewing and thinking about this stuff,
and Ben for help thinking about it as well!
Differential Revision: http://reviews.llvm.org/D17435
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261316
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 19 Feb 2016 06:57:40 +0000 (06:57 +0000)]
[X86] Remove unused entries from the disassembler type enum.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261311
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 19 Feb 2016 04:46:48 +0000 (04:46 +0000)]
Shuffle header file as per the Coding Standards
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261308
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 19 Feb 2016 04:46:06 +0000 (04:46 +0000)]
[SjLjEHPrepare] Simplify/cleanup code
No functional change is intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261307
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 19 Feb 2016 04:44:19 +0000 (04:44 +0000)]
LegalizeDAG: Fix ExpandFCOPYSIGN assuming the same type on both inputs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261306
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 19 Feb 2016 04:09:40 +0000 (04:09 +0000)]
[LPM] Actually test what the O2 pass pipeline consists of in key places,
especially the *structure* of it with respect to various pass managers.
This uncovers an absolute horror show of problems. This test shows just
how bad PR24804 is: we have a totaly of *seven* loop pass managers in
the main optimization pipeline.
I've tried to comment the various bits to the best of my knowledge, but
more enhancements here would be great.
Also great would be folks adding various test for other pipelines, I'm
focused on trying to fix the O2 pipeline. I just wanted a test to show
what I'm changing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261305
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Fri, 19 Feb 2016 03:15:33 +0000 (03:15 +0000)]
Add profile summary support for sample profile.
Differential Revision: http://reviews.llvm.org/D17178
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261304
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 19 Feb 2016 03:13:40 +0000 (03:13 +0000)]
[SjLjEHPrepare] Don't grab pointers to functions in doInitialization
Certain optimization passes (like globaldce) can prune function
declaration that SjLjEHPrepare assumed would exit when it'd
runOnFunction.
This fixes PR26669.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261303
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 19 Feb 2016 03:12:14 +0000 (03:12 +0000)]
[AA] Preserve the AA results wrapper pass as well as BasicAA in a few
more places to prevent gratuitous re-"runs" of these passes.
The passes themselves don't do any work when run, but we keep spending
time scheduling and running these needlessly when we really don't need
to do so.
This is the first patch towards fixing the really horrible loop pass
pipeline fragmentation pointed out by Sanjoy in PR24804.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261302
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 19 Feb 2016 02:22:54 +0000 (02:22 +0000)]
[llvm-nm] In C++, main implicitly returns 0. Pointed out by David Blaikie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261300
91177308-0d34-0410-b5e6-
96231b3b80d8
Lawrence Hu [Fri, 19 Feb 2016 02:17:07 +0000 (02:17 +0000)]
Bug fix: use dyn_cast_or_null instead of dyn_cast
Differential Revision: http://reviews.llvm.org/D17154
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261299
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 19 Feb 2016 02:03:45 +0000 (02:03 +0000)]
llvm-dwp: Don't test compression when zlib isn't available
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261298
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 19 Feb 2016 01:51:44 +0000 (01:51 +0000)]
llvm-dwp: Support compressed input
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261296
91177308-0d34-0410-b5e6-
96231b3b80d8
Junmo Park [Fri, 19 Feb 2016 01:46:04 +0000 (01:46 +0000)]
Minor code cleanups. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261294
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Fri, 19 Feb 2016 01:03:12 +0000 (01:03 +0000)]
[sancov] widening default blacklist.
Differential Revision: http://reviews.llvm.org/D17426
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261291
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Fri, 19 Feb 2016 00:26:20 +0000 (00:26 +0000)]
[sancov] Adding covered/uncovered tables to coverage report.
Summary:
This change adds 3 tables to html report:
- list of covered files with number of functions covered.
- list of not covered files
- list of not covered functions.
I tried to put most coverage-calculating functionality into
SourceCoverageData.
Differential Revision: http://reviews.llvm.org/D17421
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261287
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 19 Feb 2016 00:18:46 +0000 (00:18 +0000)]
When printing MIR, output to errs() rather than outs().
Summary:
Without this, this command
$ llvm-run llc -stop-after machine-cp -o - <( echo '' )
outputs an error, because we close stdout twice -- once when closing the
file opened for "-o", and again when closing outs().
Also clarify in the outs() definition that you can't ever call it if you
want to open your own raw_fd_ostream on stdout.
Reviewers: jroelofs, tstellarAMD
Subscribers: jholewinski, qcolombet, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D17422
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261286
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Fri, 19 Feb 2016 00:13:09 +0000 (00:13 +0000)]
[CaptureTracking] Add a test case for pointer cmpxchg
This test builds on 261250 (IR support for cmpxchg of pointers) and 261245 (capture tracking support for cmpxchg) to show that correctly analyze the capturing of pointers in a cmpxchg of pointer type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261284
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Fri, 19 Feb 2016 00:06:41 +0000 (00:06 +0000)]
[IR] Extend cmpxchg to allow pointer type operands
Today, we do not allow cmpxchg operations with pointer arguments. We require the frontend to insert ptrtoint casts and do the cmpxchg in integers. While correct, this is problematic from a couple of perspectives:
1) It makes the IR harder to analyse (for instance, it make capture tracking overly conservative)
2) It pushes work onto the frontend authors for no real gain
This patch implements the simplest form of IR support. As we did with floating point loads and stores, we teach AtomicExpand to convert back to the old representation. This prevents us needing to change all backends in a single lock step change. Over time, we can migrate each backend to natively selecting the pointer type. In the meantime, we get the advantages of a cleaner IR representation without waiting for the backend changes.
Differential Revision: http://reviews.llvm.org/D17413
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261281
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 18 Feb 2016 23:08:48 +0000 (23:08 +0000)]
[x86] fix initialization of PredictableSelectIsExpensive
This is effectively NFC because Atom is the only in-order x86 subtarget currently,
but the predicate would have become wrong if any other in-order CPU came along.
See related discussion in:
http://reviews.llvm.org/D16836
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261275
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 18 Feb 2016 23:07:09 +0000 (23:07 +0000)]
[CMake] Properly set CMAKE_BUILD_TYPE to Debug by default
Summary:
PR26666: CMAKE_BUILD_TYPE was previously being reset to blank.
Reviewers: rnk, beanz
Subscribers: llvm-commits
Patch By: Derek Bruening
Differential Revision: http://reviews.llvm.org/D17398
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261273
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Thu, 18 Feb 2016 22:09:30 +0000 (22:09 +0000)]
Remove uses of builtin comma operator.
Cleanup for upcoming Clang warning -Wcomma. No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261270
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rose [Thu, 18 Feb 2016 22:03:23 +0000 (22:03 +0000)]
[ADT] Be less clever when using a nonce type for disambiguation.
Old compilers don't like constexpr, but we're only going to use this in one
place anyway: this file. Everyone else should go through PointerLikeTypeTraits.
Update to r261259.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261268
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 18 Feb 2016 21:49:10 +0000 (21:49 +0000)]
[libFuzzer] only read MaxLen bytes from every file in the corpus to speedup loading the corpus
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261267
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 18 Feb 2016 21:38:19 +0000 (21:38 +0000)]
[PPCLoopDataPrefetch] Move pass to Transforms/Scalar/LoopDataPrefetch. NFC
This patch is part of the work to make PPCLoopDataPrefetch
target-independent
(http://thread.gmane.org/gmane.comp.compilers.llvm.devel/92758).
Obviously the pass still only used from PPC at this point. Subsequent
patches will start driving this from ARM64 as well.
Due to the previous patch most lines should show up as moved lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261265
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 18 Feb 2016 21:37:12 +0000 (21:37 +0000)]
[PPCLoopDataPrefetch] Remove PPC from some of the names. NFC
This is done only to make the next patch that move the pass out PPC to
Transforms easier to read. After this most line should show up as moved
lines in that patch.
This patch is part of the work to make PPCLoopDataPrefetch
target-independent
(http://thread.gmane.org/gmane.comp.compilers.llvm.devel/92758).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261264
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 18 Feb 2016 21:13:35 +0000 (21:13 +0000)]
[WinEH] Hoist state stores from successors
If we know that all of our successors want to be in the exact same
state, it makes sense to hoist the state transition into their common
predecessor.
Differential Revision: http://reviews.llvm.org/D17391
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261262
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rose [Thu, 18 Feb 2016 21:00:08 +0000 (21:00 +0000)]
[ADT] Fix PointerEmbeddedInt when the underlying type is uintptr_t.
...and when you try to store negative values in it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261259
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 18 Feb 2016 20:57:41 +0000 (20:57 +0000)]
[IR] Straighten out bundle overload of IRBuilder::CreateCall
IRBuilder has two ways of putting bundle operands on calls: the default
operand bundle, and an overload of CreateCall that takes an operand
bundle list.
Previously, this overload used a default argument of None. This made it
impossible to distinguish between the case were the caller doesn't care
about bundles, and the case where the caller explicitly wants no
bundles. We behaved as if they wanted the latter behavior rather than
the former, which led to problems with simplifylibcalls and WinEH.
This change fixes it by making the parameter non-optional, so we can
distinguish these two cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261258
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 18 Feb 2016 20:43:15 +0000 (20:43 +0000)]
[X86ISelLowering] Use isPowerof2 instead of rewriting it. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261255
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Thu, 18 Feb 2016 20:38:32 +0000 (20:38 +0000)]
Add support for invoke/landingpad/resume in C API test
Summary: As per title. There was a lot of part missing in the C API, so I had to extend the invoke and landingpad API.
Reviewers: echristo, joker.eph, Wallbraker
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17359
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261254
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 18 Feb 2016 19:45:31 +0000 (19:45 +0000)]
Restrict scope of variables [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261250
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 18 Feb 2016 19:23:27 +0000 (19:23 +0000)]
[CaptureTracking] Support atomicrmw and cmpxchg
These atomic operations are conceptually both a load and store from the same location. As such, we can treat them as the most conservative of those two components which in practice, means we can treat them like stores. An cmpxchg or atomicrmw captures the values, but not the locations accessed.
Note: We can probably be more aggressive about the comparison value in an cmpxhg since to have it be in memory, it must already be captured, but I figured it was better to avoid that for the moment.
Note 2: It turns out that since we don't actually support cmpxchg of pointer type, writing a negative test is impossible.
Differential Revision: http://reviews.llvm.org/D17400
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261245
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 18 Feb 2016 18:47:29 +0000 (18:47 +0000)]
[DebugInfoPDB] Add source / line number accessors for PDB.
This patch adds a variety of different methods to query source
and line number information from PDB files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261239
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 18 Feb 2016 18:44:33 +0000 (18:44 +0000)]
Add more triples after r261235
Since the behaviour is now different between Darwin and non-Darwin,
more triples are needed :-/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261238
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Thu, 18 Feb 2016 18:35:45 +0000 (18:35 +0000)]
[AArch64] Reduce vector insert/extract cost for Kryo
Differential Revision: http://reviews.llvm.org/D17379
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261237
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 18 Feb 2016 18:17:05 +0000 (18:17 +0000)]
Revert to extend i8/i16 return values on Darwin (PR26665)
In r260133, LLVM was changed to no longer extend i8/i16 return values,
as it's not required by the ABI. However, code was found in the wild
that relies on the old behaviour on Darwin, so this commit reverts
back to that old behaviour for Darwin.
On other platforms, it's less likely that code would be depending on
the old behaviour, as GCC and MSVC haven't been extending such return
values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261235
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 18 Feb 2016 18:02:48 +0000 (18:02 +0000)]
Make header self-contained. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261234
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Thu, 18 Feb 2016 17:49:57 +0000 (17:49 +0000)]
[Hexagon] Remove redundant check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261232
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Thu, 18 Feb 2016 17:20:22 +0000 (17:20 +0000)]
Stop creating covmap as note section on ELF
covmap needs to created as non allocatable, but not with
SHT_NOTE. The latter was needed to workaround a problem
of BFD linker with gc, which is no longer needed. (A more
proper longer term fix requires changing FE driver to force
referencing the section using linker script).
Differential Revision: http://reviews.llvm.org/D17309
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261228
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Thu, 18 Feb 2016 16:44:18 +0000 (16:44 +0000)]
AMDGPU/SI: add llvm.amdgcn.image.load/store[.mip] intrinsics
Summary:
These correspond to IMAGE_LOAD/STORE[_MIP] and are going to be used by Mesa
for the GL_ARB_shader_image_load_store extension.
IMAGE_LOAD is already matched by llvm.SI.image.load. That intrinsic has
a legacy name and pretends not to read memory.
Differential Revision: http://reviews.llvm.org/D17276
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261224
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 18 Feb 2016 16:10:27 +0000 (16:10 +0000)]
[Hexagon] Fix compilation error with GCC 6
Compiling Hexagon target with GCC 6 produces "error: should have been
declared inside" due to GCC PR c++/69657 which was merged.
Properly wrapping operator<<() definitions within the namespace llvm
fixes the issue.
Author: domagoj.stolfa
Differential Revision: http://reviews.llvm.org/D17281
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261220
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 18 Feb 2016 15:42:57 +0000 (15:42 +0000)]
[Hexagon] Implement TLS support
Patch by Anand Kodnani.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261218
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Thu, 18 Feb 2016 14:14:40 +0000 (14:14 +0000)]
Reapply commit r259357 with a fix for PR26629
Commit r259357 was reverted because it caused PR26629. We were assuming all
roots of a vectorizable tree could be truncated to the same width, which is not
the case in general. This commit reapplies the patch along with a fix and a new
test case to ensure we don't regress because of this issue again. This should
fix PR26629.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261212
91177308-0d34-0410-b5e6-
96231b3b80d8
Zlatko Buljan [Thu, 18 Feb 2016 14:10:52 +0000 (14:10 +0000)]
[mips][microMIPS] Implement TLBINV and TLBINVF instructions
Differential Revision: http://reviews.llvm.org/D16849
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261211
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 18 Feb 2016 13:58:38 +0000 (13:58 +0000)]
[Hexagon] Add support for __builtin_prefetch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261210
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 18 Feb 2016 13:41:05 +0000 (13:41 +0000)]
[Hexagon] Update the callee-saved register set for EH-aware functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261208
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 18 Feb 2016 13:23:17 +0000 (13:23 +0000)]
Add parentheses around arithmetic in operand of '|'.
This avoids a operator precedence warning for mixing + and | in an
expression. I checked that this matches the definition in the Split
DWARF proposal.
Patch by Cong Liu!
Differential Revision: http://reviews.llvm.org/D17375
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261207
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 18 Feb 2016 11:03:11 +0000 (11:03 +0000)]
[PM] Port the PostOrderFunctionAttrs pass to the new pass manager and
convert one test to use this.
This is a particularly significant milestone because it required
a working per-function AA framework which can be queried over each
function from within a CGSCC transform pass (and additionally a module
analysis to be accessible). This is essentially *the* point of the
entire pass manager rewrite. A CGSCC transform is able to query for
multiple different function's analysis results. It works. The whole
thing appears to actually work and accomplish the original goal. While
we were able to hack function attrs and basic-aa to "work" in the old
pass manager, this port doesn't use any of that, it directly leverages
the new fundamental functionality.
For this to work, the CGSCC framework also has to support SCC-based
behavior analysis, etc. The only part of the CGSCC pass infrastructure
not sorted out at this point are the updates in the face of inlining and
running function passes that mutate the call graph.
The changes are pretty boring and boiler-plate. Most of the work was
factored into more focused preperatory patches. But this is what wires
it all together.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261203
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 18 Feb 2016 10:17:40 +0000 (10:17 +0000)]
[X86][SSE] Improve PSHUFB shuffle mask decoding.
In cases where the PSHUFB shuffle mask is shared it might not be bitcasted to a vXi8 byte vector. This patch adds support for decoding these wider shuffle masks from the ConstantPool.
The test case in question makes use of this to recognise the shuffle mask is an unary UNPCKL pattern and simplifies accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261201
91177308-0d34-0410-b5e6-
96231b3b80d8
Junmo Park [Thu, 18 Feb 2016 10:09:20 +0000 (10:09 +0000)]
Minor code cleanup. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261200
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikolay Haustov [Thu, 18 Feb 2016 10:02:12 +0000 (10:02 +0000)]
Test commit access.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261199
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Thu, 18 Feb 2016 09:52:12 +0000 (09:52 +0000)]
[AVX512][PRORQ][PRORD] Change imm8 to int
Differential Revision: http://reviews.llvm.org/D17024
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261198
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 18 Feb 2016 09:45:17 +0000 (09:45 +0000)]
[PM/AA] Teach the new pass manager to use pass-by-lambda for registering
analysis passes, support pre-registering analyses, and use that to
implement parsing and pre-registering a custom alias analysis pipeline.
With this its possible to configure the particular alias analysis
pipeline used by the AAManager from the commandline of opt. I've updated
the test to show this effectively in use to build a pipeline including
basic-aa as part of it.
My big question for reviewers are around the APIs that are used to
expose this functionality. Are folks happy with pass-by-lambda to do
pass registration? Are folks happy with pre-registering analyses as
a way to inject customized instances of an analysis while still using
the registry for the general case?
Other thoughts of course welcome. The next round of patches will be to
add the rest of the alias analyses into the new pass manager and wire
them up here so that they can be used from opt. This will require
extending the (somewhate limited) functionality of AAManager w.r.t.
module passes.
Differential Revision: http://reviews.llvm.org/D17259
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261197
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 18 Feb 2016 07:37:17 +0000 (07:37 +0000)]
Make a stub version of MITests, instead of reverting.
Lit tends to find out-of-date unittests in the build tree.
FIXME: It may be reverted several days after.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261194
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Feb 2016 06:32:53 +0000 (06:32 +0000)]
[WebAssembly] Don't use setRequiresStructuredCFG(true).
While we still do want reducible control flow, the RequiresStructuredCFG
flag imposes more strict structure constraints than WebAssembly wants.
Unsetting this flag enables critical edge splitting and tail merging.
Also, disable TailDuplication explicitly, as it doesn't support virtual
registers, and was previously only disabled by the RequiresStructuredCFG
flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261190
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 18 Feb 2016 05:21:43 +0000 (05:21 +0000)]
Revert "LiveIntervalAnalysis: Remove LiveVariables requirement" and LiveIntervalTest
The commit breaks stage2 compilation on PowerPC. Reverting for now while
this is analyzed. I also have to revert the LiveIntervalTest for now as
that depends on this commit.
Revert "LiveIntervalAnalysis: Remove LiveVariables requirement"
This reverts commit r260806.
Revert "Remove an unnecessary std::move to fix -Wpessimizing-move warning."
This reverts commit r260931.
Revert "Fix typo in LiveIntervalTest"
This reverts commit r260907.
Revert "Add unittest for LiveIntervalAnalysis::handleMove()"
This reverts commit r260905.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261189
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 18 Feb 2016 04:54:32 +0000 (04:54 +0000)]
[TableGen,X86] Add NDEBUG check to a variable initialization that's only used by asserts. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261188
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 18 Feb 2016 04:54:29 +0000 (04:54 +0000)]
[TableGen,X86] Remove extra optional operand from RawFrm. RawFrm with 2 immediates is handled by RawFrmImm8/RawFrmImm16.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261187
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 18 Feb 2016 03:42:32 +0000 (03:42 +0000)]
[AMDGPU] Disassembler: Added basic disassembler for AMDGPU target
Changes:
- Added disassembler project
- Fixed all decoding conflicts in .td files
- Added DecoderMethod=“NONE” option to Target.td that allows to
disable decoder generation for an instruction.
- Created decoding functions for VS_32 and VReg_32 register classes.
- Added stubs for decoding all register classes.
- Added several tests for disassembler
Disassembler only supports:
- VI subtarget
- VOP1 instruction encoding
- 32-bit register operands and inline constants
[Valery]
One of the point that requires to pay attention to is how decoder
conflicts were resolved:
- Groups of target instructions were separated by using different
DecoderNamespace (SICI, VI, CI) using similar to AssemblerPredicate
approach.
- There were conflicts in IMAGE_<> instructions caused by two
different reasons:
1. dmask wasn’t specified for the output (fixed)
2. There are image instructions that differ only by the number of
the address components but have the same encoding by the HW spec. The
actual number of address components is determined by the HW at runtime
using image resource descriptor starting from the VGPR encoded in an
IMAGE instruction. This means that we should choose only one instruction
from conflicting group to be the rule for decoder. I didn’t find the way
to disable decoder generation for an arbitrary instruction and therefore
made a onelinear fix to tablegen generator that would suppress decoder
generation when DecoderMethod is set to “NONE”. This is a change that
should be reviewed and submitted first. Otherwise I would need to
specify different DecoderNamespace for every instruction in the
conflicting group. I haven’t checked yet if DecoderMethod=“NONE” is not
used in other targets.
3. IMAGE_GATHER decoder generation is for now disabled and to be
done later.
[/Valery]
Patch By: Sam Kolton
Differential Revision: http://reviews.llvm.org/D16723
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261185
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 18 Feb 2016 02:02:40 +0000 (02:02 +0000)]
[libFuzzer] fix the libFuzzer bot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261184
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 17 Feb 2016 23:55:59 +0000 (23:55 +0000)]
Add upport for bitcast in the C API echo test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261177
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Wed, 17 Feb 2016 23:20:43 +0000 (23:20 +0000)]
[WebAssembly] Disable register stackification and coloring when not optimizing
These passes are optimizations, and should be disabled when not
optimizing.
Also create an MCCodeGenInfo so the opt level is correctly plumbed to
the backend pass manager.
Also remove the command line flag for disabling register coloring;
running llc with -O0 should now be useful for debugging, so it's not
necessary.
Differential Revision: http://reviews.llvm.org/D17327
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261176
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 17 Feb 2016 23:07:04 +0000 (23:07 +0000)]
AArch64: always clear kill flags up to last eliminated copy
After r261154, we were only clearing flags if the known-zero register was
originally live-in to the basic block, but we have to do it even if not when
more than one COPY has been eliminated, otherwise the user of the first COPY
may still have <kill> marked.
E.g.
BB#N:
%X0 = COPY %XZR
STRXui %X0<kill>, <fi#0>
%X0 = COPY %XZR
STRXui %X0<kill>, <fi#1>
We can eliminate both copies, X0 is not live-in, but we must clear the kill on
the first store.
Unfortunately, I've been unable to come up with a non-fragile test for this.
I've only seen it in the wild with regalloc-created spills, and attempts to
reproduce that in a reasonable way run afoul of COPY coalescing. Even volatile
asm clobbers were moved around. Should fix the aarch64 bot though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261175
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 17 Feb 2016 22:51:03 +0000 (22:51 +0000)]
Add support for memory operations (load/store/gep) in C API echo test
Summary: As per title.
Reviewers: bogner, chandlerc, echristo, dblaikie, joker.eph, Wallbraker
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17245
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261174
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 17 Feb 2016 22:46:33 +0000 (22:46 +0000)]
[DebugInfoPDB] A few cleanups on PDB Variant class.
Also implements the PDBSymbolCompilandEnv::getValue() method,
which until now had been unimplemented specifically because
variant did not support string values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261173
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 17 Feb 2016 22:41:09 +0000 (22:41 +0000)]
Move LLVMCreateTargetData and LLVMDisposeTargetData together. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261172
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 17 Feb 2016 22:30:41 +0000 (22:30 +0000)]
[readobj] Remove uneeded braces in case statement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261170
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 17 Feb 2016 22:30:05 +0000 (22:30 +0000)]
Make sure functions are generated even there is no global in the C API echo test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261169
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Wed, 17 Feb 2016 22:20:08 +0000 (22:20 +0000)]
DwarfDebug: Don't drop the DIExpression just because a variable is
described by an immediate.
Found via http://reviews.llvm.org/D16867
Thanks to Paul Robinson for pointing this out.
<rdar://problem/
24456528>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261168
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Wed, 17 Feb 2016 22:19:59 +0000 (22:19 +0000)]
DbgVariable: Add an accessor for the common case of a single expression
belonging to a single DBG_VALUE instruction.
NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261167
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 17 Feb 2016 22:13:33 +0000 (22:13 +0000)]
Add support for global variables in the C API echo test
Summary: As per title
Reviewers: bogner, chandlerc, echristo, dblaikie, joker.eph, Wallbraker
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17249
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261164
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 17 Feb 2016 21:34:43 +0000 (21:34 +0000)]
[sanitizer-coverage] implement -fsanitize-coverage=trace-pc. This is similar to trace-bb, but has a different API. We already use the equivalent flag in GCC for Linux kernel fuzzing. We may be able to use this flag with AFL too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261159
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 17 Feb 2016 21:21:29 +0000 (21:21 +0000)]
NFC: Fix formating
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261156
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 17 Feb 2016 21:16:59 +0000 (21:16 +0000)]
Fix warning on build without asserts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261155
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 17 Feb 2016 21:16:53 +0000 (21:16 +0000)]
AArch64: improve redundant copy elimination.
Mostly, this fixes the bug that if the CBZ guaranteed Xn but Wn was used, we
didn't sort out the use-def chain properly.
I've also made it check more than just the last instruction for a compatible
CBZ (so it can cope without fallthroughs). I'd have liked to do that
separately, but it's helps writing the test.
Finally, I removed some custom loops in favour of MachineInstr helpers and
refactored the control flow to flatten it and avoid possibly quadratic
iterations in blocks with many copies. NFC for these, just a general tidy-up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261154
91177308-0d34-0410-b5e6-
96231b3b80d8