131258 Commits

Author SHA1 Message Date
Wolfgang Pieb
be4f17f1cf Moved test case for r268323 to DebugInfo/X86 to unbreak aarch64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268339 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 00:22:09 +00:00
Douglas Yung
1b960de137 Adding period to the end of a comment to test out commit access.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268337 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 00:12:59 +00:00
Matthias Braun
b4756d6b2d LivePhysRegs: Automatically determine presence of pristine regs.
Remove the AddPristinesAndCSRs parameters from
addLiveIns()/addLiveOuts().

We need to respect pristine registers after prologue epilogue insertion,
Seeing that we got this wrong in at least two commits already, we should
rather pay the small price to query MachineFrameInfo for it.

There are three cases that did not set AddPristineAndCSRs to true even
after register allocation:
- ExecutionDepsFix: live-out registers are used as a hint that the
  register is used soon. This is not true for pristine registers so
  use the new addLiveOutsNoPristines() to maintain this behaviour.
- SystemZShortenInst: Not setting AddPristineAndCSRs to true looks like
  a bug, should do the right thing automatically now.
- StackMapLivenessAnalysis: Not adding pristine registers looks like a
  bug to me. Added a FIXME comment but maintain the current behaviour
  as a change may need to get coordinated with GC runtimes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268336 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 00:08:46 +00:00
NAKAMURA Takumi
0414149591 MITests: Update libdeps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268335 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 00:04:07 +00:00
Adrian McCarthy
f45287b072 NFC: An iterator for stepping through CodeView type stream in llvm-readobj
This is a small refactoring step toward moving CodeView type stream logic from llvm-readobj to a library. It abstracts the logic of stepping through the stream into an iterator class and updates llvm-readobj to use that iterator. This has no functional change; llvm-readobj produces identical output.

The next step is to abstract the parsing of the different leaf types and then move that and the iterator into a library.

Since this is my first contrib outside LLDB, please let me know if I'm messing up on any of the LLVM style guidelines, idioms, or patterns.

Differential Revision: http://reviews.llvm.org/D19746

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268334 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 23:45:03 +00:00
Reid Kleckner
7f90dd2353 [MC] Create unique .pdata sections for every .text section
Summary:
This adds a unique ID to the COFF section uniquing map, similar to the
one we have for ELF.  The unique id is not currently exposed via the
assembler because we don't have a use case for it yet. Users generally
create .pdata with the .seh_* family of directives, and the assembler
internally needs to produce .pdata and .xdata sections corresponding to
the code section.

The association between .text sections and the assembler-created .xdata
and .pdata sections is maintained as an ID field of MCSectionCOFF. The
CFI-related sections are created with the given unique ID, so if more
code is added to the same text section, we can find and reuse the CFI
sections that were already created.

Reviewers: majnemer, rafael

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D19376

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268331 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 23:22:18 +00:00
Matthias Braun
cde8f4fdcc Add unittest for LiveIntervalAnalysis::handleMove()
This re-applies r260905. It requires LiveIntervals to not require
LiveVariables which was reverted and re-applied in r267954.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268329 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 23:05:48 +00:00
Quentin Colombet
1b86775a90 [MachineBlockPlacement] Let the target optimize the branches at the end.
After the layout of the basic blocks is set, the target may be able to get rid
of unconditional branches to fallthrough blocks that the generic code does not
catch. This happens any time TargetInstrInfo::AnalyzeBranch is not able to
analyze all the branches involved in the terminators sequence, while still
understanding a few of them.

In such situation, AnalyzeBranch can directly modify the branches if it has been
instructed to do so.

This patch takes advantage of that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268328 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:58:59 +00:00
Quentin Colombet
a15f9f52c3 [X86] Model FAULTING_LOAD_OP as a terminator and branch.
This operation may branch to the handler block and we do not want it
to happen anywhere within the basic block.
Moreover, by marking it "terminator and branch" the machine verifier
does not wrongly assume (because of AnalyzeBranch not knowing better)
the branch is analyzable. Indeed, the target was seeing only the
unconditional branch and not the faulting load op and thought it was
a simple unconditional block.
The machine verifier was complaining because of that and moreover,
other optimizations could have done wrong transformation!

In the process, simplify the representation of the handler block in
the faulting load op. Now, we directly reference the handler block
instead of using a label. This has the benefits of:
1. MC knows how to issue a label for a BB, so leave that to it.
2. Accessing the target BB from its label is painful, whereas it is
   direct from a MBB operand.

Note: The 2 bytes offset in implicit-null-check.ll comes from the
fact the unconditional jumps are not removed anymore, as the whole
terminator sequence is not analyzable anymore.

Will fix it in a subsequence commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268327 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:58:54 +00:00
Rafael Espindola
be15f60fee Simplify. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268326 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:53:32 +00:00
Wolfgang Pieb
844d21c2f6 DebugInfo: Avoid propagating incorrect debug locations in SelectionDAG via CSE.
Summary:
When SelectionDAG performs CSE it is possible that the context's source
location is different from that of the selected node. This can lead to
incorrect line number records. We update the debug location to the
one that occurs earlier in the instruction sequence.

This fixes PR21006.

Reviewers: echristo, sdmitrouk

Subscribers: jevinskie, asl, llvm-commits

Differential Revision: http://reviews.llvm.org/D12094


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268323 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:50:51 +00:00
Mehdi Amini
2ef976219b Revert "ThinLTO: do not import function whose linkage prevents inlining."
This reverts commit r268315, the tests are not passing.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268317 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:26:04 +00:00
Zachary Turner
59affc672a [llvm-pdbdump] Fix read past EOF when file is too small.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268316 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:16:57 +00:00
Mehdi Amini
e1cf918848 ThinLTO: do not import function whose linkage prevents inlining.
There is not point in importing a "weak" or a "linkonce" function
since we won't be able to inline it anyway.
We already had a targeted check for WeakAny, this is using the
same check on GlobalValue as the inline, i.e.
isMayBeOverriddenLinkage()

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268315 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 22:11:27 +00:00
Kevin Enderby
b6d0e4bd4c Fix llvm-size to exit with non zero when it can’t open a file.
rdar://26027819


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268313 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 21:41:03 +00:00
Vedant Kumar
0cd16495ba Remove redundant return, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268312 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 21:33:36 +00:00
Vedant Kumar
fab330e844 Fix a typo, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268311 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 21:32:07 +00:00
Simon Pilgrim
f531bd9a27 [X86][SSE] Added placeholder for 128/256-bit wide shuffle combines
Begun adding placeholder for future support for vperm2f128/vshuff64x2 style 128/256-bit wide shuffles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268306 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 21:12:48 +00:00
Rafael Espindola
78deea801b Don't try to create thin bsd archives.
Not such variant has been specified yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268305 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 21:06:57 +00:00
Frederic Riss
85cd66ebbb [dsymutil] Create the temporary files in the system temp directory.
llvm-dsymutil used to create the temporary files in the output directory.
This works fine except when the output directory contains a '%' char, which
is then replaced by llvm::sys::fs::createUniqueFile() generating an invalid
path.
Just use the default temp dir for those files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268304 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 21:06:14 +00:00
Xinliang David Li
c78f77bc6d Code refactoring -- preparation for new PM porting /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268301 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:33:59 +00:00
Reid Kleckner
6086128254 [codeview] Isolate type dumping from object file state
This isolates the state we use for type dumping from the knowledge of
object files. We can use CVTypeDumper to dump types from anywhere in
memory now.

NFC

Reviewers: zturner

Differential Revision: http://reviews.llvm.org/D19824

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268300 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:30:47 +00:00
Kevin Enderby
a486dcaf36 Thread Expected<...> up from libObject’s getType() for symbols to allow llvm-objdump to produce a good error message.
Produce another specific error message for a malformed Mach-O file when a symbol’s
section index is more than the number of sections.  The existing test case in test/Object/macho-invalid.test
for macho-invalid-section-index-getSectionRawName now reports the error with the message indicating
that a symbol at a specific index has a bad section index and that bad section index value.

Again converting interfaces to Expected<> from ErrorOr<> does involve
touching a number of places. Where the existing code reported the error with a
string message or an error code it was converted to do the same.

Also there some were bugs in the existing code that did not deal with the
old ErrorOr<> return values.  So now with Expected<> since they must be
checked and the error handled, I added a TODO and a comment:
"// TODO: Actually report errors helpfully" and a call something like
consumeError(NameOrErr.takeError()) so the buggy code will not crash
since needed to deal with the Error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268298 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:28:12 +00:00
Matt Arsenault
6b3315d64b AMDGPU: Custom lower v2i32 loads and stores
This will allow us to split up 64-bit private accesses when
necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268296 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:13:51 +00:00
Tom Stellard
451c792dbc AMDGPU/SI: Use v_readfirstlane_b32 when restoring SGPRs spilled to scratch
We were using v_readlane_b32 with the lane set to zero, but this won't
work if thread 0 is not active.

Differential Revision: http://reviews.llvm.org/D19745

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268295 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:11:44 +00:00
Matt Arsenault
7614ec6431 AMDGPU: Make i64 loads/stores promote to v2i32
Now that unaligned access expansion should not attempt
to produce i64 accesses, we can remove the hack in
PreprocessISelDAG where this is done.

This allows splitting i64 private accesses while
allowing the new add nodes indexing the vector components
can be folded with the base pointer arithmetic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268293 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:07:26 +00:00
John Regehr
98d359ac65 [LVI] Add an API to LazyValueInfo so that it can export ConstantRanges
that it computes. Currently this is used for testing and precision
tuning, but it might be used by optimizations later.

Differential Revision: http://reviews.llvm.org/D19179



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268291 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:58:00 +00:00
Simon Pilgrim
ecb8fc414d [X86][AVX2] Added 128-bit wide shuffle test
Demonstrate missing 128-bit wide shuffle combine support

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268290 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:46:58 +00:00
Reid Kleckner
e00325a684 Fix instance of -Winconsistent-missing-override in AMDGPU code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268289 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:45:10 +00:00
Reid Kleckner
0e77da267e Revert "[SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics"
This reverts commit r268254.

This change causes assertion failures while building Chromium. Reduced
test case coming soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268288 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:43:22 +00:00
Tom Stellard
c82cf31b47 AMDGPU/SI: Set the kill flag on temp VGPRs used to restore SGPRs from scratch
Summary:
When we restore an SGPR value from scratch, we first load it into a
temporary VGPR and then use v_readlane_b32 to copy the value from the
VGPR back into an SGPR.

We weren't setting the kill flag on the VGPR in the v_readlane_b32
instruction, so the register scavenger wasn't able to re-use this
temp value later.

I wasn't able to create a lit test for this.

Reviewers: arsenm

Subscribers: arsenm, llvm-commits

Differential Revision: http://reviews.llvm.org/D19744

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268287 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:37:56 +00:00
Piotr Padlewski
3dc85472a1 Fix typos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268281 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:06:51 +00:00
Chad Rosier
9c86d7ae50 Typo. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268280 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:06:04 +00:00
Chad Rosier
717e91d5c3 Use false rather than 0 for a boolean value. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268279 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:06:02 +00:00
Zachary Turner
833543de52 Fix build breakage due to implicit conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268277 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:36:58 +00:00
Tim Northover
464549ab4d ARM: fix handling of SUB immediates in peephole opt.
We were negating an immediate that was going to be used in a SUBri form
unnecessarily. Since ADD/SUB are very similar we *can* do that, but we have to
change the SUB to an ADD at the same time. This also applies to ADD, and allows
us to handle a slightly larger range of immediates for those two operations.

rdar://25992245

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268276 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:30:08 +00:00
Justin Holewinski
2ab91e26c5 [NVPTX] Fix sign/zero-extending ldg/ldu instruction selection
Summary:
We don't have sign-/zero-extending ldg/ldu instructions defined,
so we need to emulate them with explicit CVTs. We were originally
handling the i8 case, but not any other cases.

Fixes PR26185

Reviewers: jingyue, jlebar

Subscribers: jholewinski

Differential Revision: http://reviews.llvm.org/D19615

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268272 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:12:02 +00:00
Reid Kleckner
1e2f626feb [codeview] Don't dump type stream bytes unless asked to
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268271 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:10:00 +00:00
Zachary Turner
f526e10c7f PDB - Instead of hardcoding stream numbers, use an enum.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268270 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:09:21 +00:00
George Burgess IV
c3791a9351 [CFLAA] Fix a use-of-invalid-pointer bug.
As shown in the diff, we used to add to CFLAA's cache by doing
`Cache[Fn] = buildSetsFrom(Fn)`. `buildSetsFrom(Fn)` may cause `Cache`
to reallocate its underlying storage, if this happens and `Cache[Fn]`
was evaluated prior to `buildSetsFrom(Fn)`, then we'll store the result
to a bad address.

Patch by Jia Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268269 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:09:19 +00:00
Zachary Turner
0e6ef97ce0 Parse PDB Name Hash Table
PDB has a lot of similar data structures.  We already have code
for parsing a Name Map, but PDB seems to have a different but
very similar structure that is a hash table.  This is the
beginning of code needed in order to parse the name hash table,
but it is not yet complete.  It parses the basic metadata of
the hash table, the bucket array, and the names buffer, but
doesn't use any of these fields yet as the data structure
requires a non-trivial amount of work to understand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268268 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:09:14 +00:00
Tom Stellard
c6d991c3a5 AMDGPU: Move R600 specific code out of AMDGPUISelLowering.cpp
Reviewers: arsenm

Subscribers: jvesely, arsenm, llvm-commits

Differential Revision: http://reviews.llvm.org/D19736

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268267 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:05:17 +00:00
Mehdi Amini
a4a5ff8bb3 ReversePostOrderFunctionAttrs is not modifying the call graph, let's preserve it.
When running cc1 with -flto=thin, it is followed by GlobalOpt, which
requires the callgraph. This saves rebuilding one.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268266 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:03:33 +00:00
Tom Stellard
83f4a25d58 AMDGPU/SI: Fix bug in SIInstrInfo::insertWaitStates() uncovered by r268260
We can't use MI->getDebugLoc() when MI is an iterator that could be
MBB.end().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268265 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 18:02:24 +00:00
Tom Stellard
8478bd5765 AMDGPU/SI: Use the hazard recognizer to break SMEM soft clauses
Summary:
Add support for detecting hazards in SMEM soft clauses, so that we only
break the clauses when necessary, either by adding s_nop or re-ordering
other alu instructions.

Reviewers: arsenm

Subscribers: arsenm, llvm-commits

Differential Revision: http://reviews.llvm.org/D18870

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268260 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 17:39:06 +00:00
Nicolai Haehnle
10ea516563 AMDGPU: llvm.SI.fs.constant is a source of divergence
Summary:
This intrinsic is used to get flat-shaded fragment shader inputs. Those are
uniform across a primitive, but a fragment shader wave may process pixels from
multiple primitives (as indicated by the prim_mask), and so that's where
divergence can arise.

Reviewers: arsenm, tstellarAMD

Subscribers: arsenm, llvm-commits

Differential Revision: http://reviews.llvm.org/D19747

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268259 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 17:37:01 +00:00
NAKAMURA Takumi
1be8ec9b75 ScheduleDAGInstrs.cpp: Don't peel the iterator when it points the end. This will fix the crash in r268143.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268257 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 17:29:55 +00:00
Derek Schuff
1e477250a6 [WebAssembly] Rename memory_size intrinsic to current_memory
This follows the recent renaming in the wasm spec.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268255 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 17:25:22 +00:00
Hans Wennborg
0c15a0b738 [SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics
Make it possible that TryToSimplifyUncondBranchFromEmptyBlock merges empty
basic block including lifetime intrinsics as well as phi nodes and
unconditional branch into its successor or predecessor(s).

If successor of empty block has single predecessor, all contents including
lifetime intrinsics are sinked into the successor. Otherwise, they are
hoisted into its predecessor(s) and then merged into the predecessor(s).

Patch by Josh Yoon <josh.yoon@samsung.com>!

Differential Revision: http://reviews.llvm.org/D19257

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268254 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 17:22:54 +00:00
Mehdi Amini
282acf461e Move createReversePostOrderFunctionAttrsPass right after the inliner is done
This is where it was originally, until LoopVersioningLICM was
inserted before in r259986, I don't believe it was on purpose.

Differential Revision: http://reviews.llvm.org/D19809

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268252 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 16:53:16 +00:00