OSDN Git Service
Duncan P. N. Exon Smith [Sat, 16 May 2015 01:01:55 +0000 (01:01 +0000)]
MC: Use MCSymbol in MCObject::IsSymbolRefDifferenceFullyResolvedImpl()
Transition one API from `MCSymbolData` to `MCSymbol`. The function
needs both, and the backpointer from `MCSymbolData` to `MCSymbol` is
going away.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237498
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sat, 16 May 2015 00:48:58 +0000 (00:48 +0000)]
MC: Change MCFragment::Atom to an MCSymbol, NFC
Change `MCFragment::Atom` from an `MCSymbolData` to an `MCSymbol`,
moving in the direction of removing the back-pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237497
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sat, 16 May 2015 00:35:24 +0000 (00:35 +0000)]
MC: Change MCAssembler::Symbols to store MCSymbol, NFC
Instead of storing a list of the `MCSymbolData` in use, store the
`MCSymbol`s. Churning in the direction of removing the back pointer
from `MCSymbolData`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237496
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Sat, 16 May 2015 00:33:12 +0000 (00:33 +0000)]
[BitcodeReader] Don't allow INSERTVAL/EXTRACTVAL with 0 indices
This would trigger an assertion later.
Bug found with AFL fuzz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237494
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sat, 16 May 2015 00:03:06 +0000 (00:03 +0000)]
MC: Merge MCSymbol and MCSymbolData
Turn `MCSymbolData` into a field inside of `MCSymbol`. Keep all the old
API alive for now, so that consumers can be updated in a later commit.
This means we still temporarily need the back pointer from
`MCSymbolData` to `MCSymbol`, but I'll remove it in a follow-up.
This optimizes for object emission over assembly emission. By removing
the `DenseMap` in `MCAssembler`, llc memory usage drops from around 1040
MB to 1001 MB (3.8%).
(I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`;
see r236629 for details.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237490
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sat, 16 May 2015 00:03:00 +0000 (00:03 +0000)]
MC: Move MCSymbolData to MCSymbol.h, NFC
Prepare for always including symbol data in MCSymbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237489
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Fri, 15 May 2015 23:57:13 +0000 (23:57 +0000)]
Remove redundant checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237488
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 15 May 2015 22:56:01 +0000 (22:56 +0000)]
MC: Change MCAssembler::Symbols to a vector
Instead of an intrusive double-linked linked list, use a
`std::vector<>`. This saves a pointer per symbol and simplifies
`MCSymbolData`. Otherwise, no functionality change here.
While I measured a memory drop from around 1047MB to 1040MB (0.6%) --
and this is a decent cleanup in its own right -- it's primarily a
preparation patch for merging `MCSymbol` and `MCSymbolData`. I'll post
an updated patch for that to the list in a moment.
(I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`;
see r236629 for details.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237487
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 15 May 2015 22:33:34 +0000 (22:33 +0000)]
MC: Reduce MCAssembler::Symbols API exposure, NFC
Stop exposing the storage for `MCAssembler::Symbols`, and have
`MCAssembler` add symbols directly to its list instead of using a hook
in `MCSymbolData`. This opens up room for a follow-up commit to switch
from a linked list to a vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237486
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 15 May 2015 22:19:42 +0000 (22:19 +0000)]
Remove MCAssembler.h include from MCStreamer.h and fix users of MCStreamer.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237483
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 15 May 2015 21:58:42 +0000 (21:58 +0000)]
Remove 3 includes from MCInstrDesc.h and explicitly include them where needed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237481
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 15 May 2015 21:29:43 +0000 (21:29 +0000)]
Move some methods to a new MCInstrDesc.cpp file to allow includes to be trimmed. NFC.
MCInstrDesc.h includes things like MCInst.h which i can now remove after this. That will be a future commit.
Reviewed by Jim Grosbach.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237478
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 15 May 2015 20:32:25 +0000 (20:32 +0000)]
[RuntimeDyld] Use isInt to assert that a relocation didn't overflow
isInt is a little easier to read, let's use that more consistently.
Incidentally, this also silences a warning for shifting a negative
number.
This fixes PR23532.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237476
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 15 May 2015 20:08:27 +0000 (20:08 +0000)]
[X86] Use a better sentinel offset for the FrameAddr index
Other pieces of CodeGen want to negate frame object offsets to account
for architectures where the stack grows down. Our object is a pseudo
object so it's offset doesn't matter. However, we shouldn't choose an
offset which results in undefined behavior if you negate it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237474
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 15 May 2015 19:13:31 +0000 (19:13 +0000)]
MC: MCCodeGenInfo naming update. NFC.
s/InitMCCodeGenInfo/initMCCodeGenInfo/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237471
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 15 May 2015 19:13:20 +0000 (19:13 +0000)]
MC: clang-format. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237470
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 15 May 2015 19:13:16 +0000 (19:13 +0000)]
MC: Update MCCodeEmitter naming. NFC.
s/EncodeInstruction/encodeInstruction/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237469
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 15 May 2015 19:13:05 +0000 (19:13 +0000)]
MC: Update MCFixup naming. NFC.
s/MCFixup::Create/MCFixup::create/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237468
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 15 May 2015 18:32:21 +0000 (18:32 +0000)]
[NFC] remove an extra new line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237462
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 15 May 2015 18:20:14 +0000 (18:20 +0000)]
While in GlobalValue fix the function(s) that don't follow the
naming convention and update users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237461
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 15 May 2015 17:54:48 +0000 (17:54 +0000)]
Add a speculative execution pass
Summary:
This is a pass for speculative execution of instructions for simple if-then (triangle) control flow. It's aimed at GPUs, but could perhaps be used in other contexts. Enabling this pass gives us a 1.0% geomean improvement on Google benchmark suites, with one benchmark improving 33%.
Credit goes to Jingyue Wu for writing an earlier version of this pass.
Patched by Bjarke Roune.
Test Plan:
This patch adds a set of tests in test/Transforms/SpeculativeExecution/spec.ll
The pass is controlled by a flag which defaults to having the pass not run.
Reviewers: eliben, dberlin, meheff, jingyue, hfinkel
Reviewed By: jingyue, hfinkel
Subscribers: majnemer, jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D9360
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237459
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 17:45:09 +0000 (17:45 +0000)]
Revert "Canonicalize min/max expressions correctly."
This reverts r237453 - it was causing timeouts on some bots. Reverting
while I investigate (it's probably InstCombine fighting itself...)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237458
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 17:41:29 +0000 (17:41 +0000)]
[SDAGBuilder] Make the AArch64 builder happier.
I intended this loop to only unwrap SplitVector actions, but it
was more broad than that, such as unwrapping WidenVector actions,
which makes operations seem legal when they're not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237457
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 15 May 2015 17:07:48 +0000 (17:07 +0000)]
[SLSR] handle (B | i) * S
Summary:
Consider (B | i) * S as (B + i) * S if B and i have no bits set in
common.
Test Plan: @or in slsr-mul.ll
Reviewers: broune, meheff
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9788
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237456
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 16:15:57 +0000 (16:15 +0000)]
Mark SMIN/SMAX/UMIN/UMAX nodes as legal and add patterns for them.
The new [SU]{MIN,MAX} SDNodes can be lowered directly to instructions for
most NEON datatypes - the big exclusion being v2i64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237455
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 16:10:59 +0000 (16:10 +0000)]
Canonicalize min/max expressions correctly.
This patch introduces a canonical form for min/max idioms where one operand
is extended or truncated. This often happens when the other operand is a
constant. For example:
%1 = icmp slt i32 %a, i32 0
%2 = sext i32 %a to i64
%3 = select i1 %1, i64 %2, i64 0
Would now be canonicalized into:
%1 = icmp slt i32 %a, i32 0
%2 = select i1 %1, i32 %a, i32 0
%3 = sext i32 %2 to i64
This builds upon a patch posted by David Majenemer
(https://www.marc.info/?l=llvm-commits&m=
143008038714141&w=2). That pass
passively stopped instcombine from ruining canonical patterns. This
patch additionally actively makes instcombine canonicalize too.
Canonicalization of expressions involving a change in type from int->fp
or fp->int are not yet implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237453
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 16:04:50 +0000 (16:04 +0000)]
Allow min/max detection to see through casts.
This teaches the min/max idiom detector in ValueTracking to see through
casts such as SExt/ZExt/Trunc. SCEV can already do this, so we're bringing
non-SCEV analyses up to the same level.
The returned LHS/RHS will not match the type of the original SelectInst
any more, so a CastOp is returned too to inform the caller how to
convert to the SelectInst's type.
No in-tree users yet; this will be used by InstCombine in a followup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237452
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 15 May 2015 15:59:22 +0000 (15:59 +0000)]
[llvm-readobj] Teach llvm-readobj to print PT_MIPS_ABIFLAGS program header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237451
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Fri, 15 May 2015 15:29:53 +0000 (15:29 +0000)]
NFC - Test case invokes llc on a file rather than redirected from a file.
This has caused some local failures. Updating the test case to be more
like the majority of the similar test cases.
Committing on behalf of Hubert Tong (hstong@ca.ibm.com).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237449
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 15 May 2015 12:32:16 +0000 (12:32 +0000)]
[xcore] Only support the 'm' inline assembly memory constraint. NFC.
Summary:
XCore doesn't seem to have any additional constraints. Therefore remove
the target hook.
No functional change intended.
Reviewers: friedgold
Reviewed By: friedgold
Subscribers: friedgold, llvm-commits
Differential Revision: http://reviews.llvm.org/D8921
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237442
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 12:17:22 +0000 (12:17 +0000)]
[DependenceAnalysis] Fix for PR21585: collectUpperBound triggers asserts
collectUpperBound hits an assertion when the back edge count is wider then the desired type.
If that happens, truncate the backedge count.
Patch by Philip Pfaffe!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237439
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Fri, 15 May 2015 09:42:11 +0000 (09:42 +0000)]
[mips] [IAS] Fix expansion of negative 32-bit immediates for LI/DLI.
Summary:
To maintain compatibility with GAS, we need to stop treating negative 32-bit immediates as 64-bit values when expanding LI/DLI.
This currently happens because of sign extension.
To do this we need to choose the 32-bit value expansion for values which use their upper 33 bits only for sign extension (i.e. no 0's, only 1's).
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8662
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237428
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 May 2015 09:03:15 +0000 (09:03 +0000)]
Add SDNodes for umin, umax, smin and smax.
This adds new SDNodes for signed/unsigned min/max. These nodes are built from
select/icmp pairs matched at SDAGBuilder stage.
This patch adds the nodes, as well as legalization support and sets them to
be "expand" for all targets.
NFC for now; this will be tested when I switch AArch64 to using these new
nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237423
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 15 May 2015 03:34:01 +0000 (03:34 +0000)]
Doxygen: Enable autobrief feature and update coding standards.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237417
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 15 May 2015 00:26:21 +0000 (00:26 +0000)]
[PlaceSafepoints] Fix a bug that came in with rL236672.
Transfer the calling convention from the invoke being replaced by
PlaceStatepoints to the new invoke to gc.statepoint created. Add a test
case that would have caught this issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237414
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 15 May 2015 00:26:15 +0000 (00:26 +0000)]
[PlaceSafepoints] Fix a bug that came in with rL236672.
rL236672 would generate all invoke statepoints with deopt args set to a
list containing the single element "0", instead of an empty list.
Also add a test case that would have caught this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237413
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Fri, 15 May 2015 00:20:44 +0000 (00:20 +0000)]
Stop resetting SanitizeAddress in TargetMachine::resetTargetOptions. NFC.
Instead of doing that, create a temporary copy of MCTargetOptions and reset its
SanitizeAddress field based on the function's attribute every time an InlineAsm
instruction is emitted in AsmPrinter::EmitInlineAsm.
This is part of the work to remove TargetMachine::resetTargetOptions (the FIXME
added to TargetMachine.cpp in r236009 explains why this function has to be
removed).
Differential Revision: http://reviews.llvm.org/D9570
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237412
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Fri, 15 May 2015 00:12:26 +0000 (00:12 +0000)]
Fix the check strings in a test case committed in r212455.
The access size (8, in this case) was missing in the function name that was
being checked.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237410
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 14 May 2015 23:56:58 +0000 (23:56 +0000)]
docs: Fix up some .rst formatting
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237409
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 14 May 2015 23:54:49 +0000 (23:54 +0000)]
MC: Avoid some UB caused by left shifting a negative value. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237408
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Thu, 14 May 2015 23:53:19 +0000 (23:53 +0000)]
[ValueTracking] refactor: extract method haveNoCommonBitsSet
Summary:
Extract method haveNoCommonBitsSet so that we don't have to duplicate this logic in
InstCombine and SeparateConstOffsetFromGEP.
This patch also makes SeparateConstOffsetFromGEP more precise by passing
DominatorTree to computeKnownBits.
Test Plan: value-tracking-domtree.ll that tests ValueTracking indeed leverages dominating conditions
Reviewers: broune, meheff, majnemer
Reviewed By: majnemer
Subscribers: jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D9734
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237407
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 14 May 2015 23:21:33 +0000 (23:21 +0000)]
Add a missing piece of existing practice to the developer policy. This may need further refinement, but I think is roughly correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237405
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 14 May 2015 23:08:22 +0000 (23:08 +0000)]
YAML: Add support for literal block scalar I/O.
This commit gives the users of the YAML Traits I/O library
the ability to serialize scalars using the YAML literal block
scalar notation by allowing them to implement a specialization
of the `BlockScalarTraits` struct for their custom types.
Reviewers: Duncan P. N. Exon Smith
Differential Revision: http://reviews.llvm.org/D9613
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237404
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 14 May 2015 23:07:13 +0000 (23:07 +0000)]
80-col fixups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237403
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 14 May 2015 22:41:49 +0000 (22:41 +0000)]
[lib/Fuzzer] Add SHA1 implementation from public domain.
Summary:
This adds a SHA1 implementation taken from public domain code.
The change is trivial, but as it involves third-party code I'd like
a second pair of eyes before commit.
LibFuzzer can not use SHA1 from openssl because openssl may not be available
and because we may be fuzzing openssl itself.
Using sha1sum via a pipe is too slow.
Test Plan: n/a
Reviewers: chandlerc
Reviewed By: chandlerc
Subscribers: majnemer, llvm-commits
Differential Revision: http://reviews.llvm.org/D9733
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237400
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 14 May 2015 22:29:46 +0000 (22:29 +0000)]
Reflow comments and remove one that predated the enum being in
the current file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237399
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 14 May 2015 22:26:54 +0000 (22:26 +0000)]
Remove setting FloatABIType from the X86 port, nothing uses it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237398
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Thu, 14 May 2015 22:02:54 +0000 (22:02 +0000)]
Add another InstCombine pass after LoopUnroll.
This is to cleanup some redundency generated by LoopUnroll pass. Such redundency may not be cleaned up by existing passes after LoopUnroll.
Differential Revision: http://reviews.llvm.org/D9777
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237395
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 14 May 2015 21:52:12 +0000 (21:52 +0000)]
Don't rely on implicit pointerness of 'auto'.
This ends up being a copy. Pointy hat to me.
Reported by: dexonsmith, dblaikie
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237394
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 14 May 2015 20:46:12 +0000 (20:46 +0000)]
Fix memory leak introduced in r237314.
The commit r237314 that implements YAML block parsing
introduced a leak that was caught by the ASAN linux buildbot.
YAML Parser stores its tokens in an ilist, and allocates
tokens using a BumpPtrAllocator, but doesn't call the
destructor for the allocated tokens. R237314 added an
std::string field to a Token which leaked as the Token's
destructor wasn't called. This commit fixes this leak
by calling the Token's destructor when a Token is being
removed from an ilist of tokens.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237389
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Thu, 14 May 2015 20:36:19 +0000 (20:36 +0000)]
[Hexagon] Generate hardware loop for a vectorized loop
The induction variable in the vectorized loop wasn't
recognized properly, so a hardware loop wasn't generated.
Differential Revision: http://reviews.llvm.org/D9722
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237388
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 14 May 2015 18:33:29 +0000 (18:33 +0000)]
Turn effective assert(0) into llvm_unreachable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237379
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Thu, 14 May 2015 18:07:04 +0000 (18:07 +0000)]
Update obsolete comments, fix typo, delete trailing space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237378
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Thu, 14 May 2015 18:01:48 +0000 (18:01 +0000)]
[ConstantFolding] Fix wrong folding of intrinsic 'convert.from.fp16'.
Function 'ConstantFoldScalarCall' (in ConstantFolding.cpp) works under the
wrong assumption that a call to 'convert.from.fp16' returns a value of
type 'float'.
However, intrinsic 'convert.from.fp16' can be overloaded; for example, we
can call 'convert.from.fp16.f64' to convert from half to double; etc.
Before this patch, the following example would have triggered an assertion
failure in opt (with -constprop):
```
define double @foo() {
entry:
%0 = call double @llvm.convert.from.fp16.f64(i16 0)
ret double %0
}
```
This patch fixes the problem in ConstantFolding.cpp. When folding a call to
convert.from.fp16, we perform a different kind of conversion based on the call
return type.
Added test 'Transform/ConstProp/convert-from-fp16.ll'.
Differential Revision: http://reviews.llvm.org/D9771
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237377
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 14 May 2015 18:01:13 +0000 (18:01 +0000)]
TargetSchedule: factor out common code; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237376
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 14 May 2015 18:01:11 +0000 (18:01 +0000)]
Remove MCInstrItineraries includes in parts that don't use them anymore
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237375
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Thu, 14 May 2015 17:31:40 +0000 (17:31 +0000)]
[Hexagon] Remove dead constant assignment in hardware loop pass
After converting a loop to a hardware loop, the pass should remove
any unnecessary instructions from the old compare-and-branch
code. This patch removes a dead constant assignment that was
used in the compare instruction.
Differential Revision: http://reviews.llvm.org/D9720
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237373
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Donmez [Thu, 14 May 2015 17:07:41 +0000 (17:07 +0000)]
Enable solid lzma compression for cpack, decreases setup size by ~30%
Reviewed by Hans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237372
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Thu, 14 May 2015 15:38:27 +0000 (15:38 +0000)]
Reflow long lines of some LLVMBuild files
Differential Revision: http://reviews.llvm.org/D9752
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237367
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Thu, 14 May 2015 14:51:32 +0000 (14:51 +0000)]
[mips] [IAS] Enforce .set nomacro.
Summary: When used, ".set nomacro" causes warning messages to be reported when we expand pseudo-instructions to multiple machine instructions.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9564
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237366
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Thu, 14 May 2015 14:15:08 +0000 (14:15 +0000)]
[Hexagon] Check for underflow/wrap in hardware loop pass
If the loop trip count may underflow or wrap, the compiler should
not generate a hardware loop since the trip count will be
incorrect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237365
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Thu, 14 May 2015 13:42:10 +0000 (13:42 +0000)]
[mips] [IAS] Emit .set macro/nomacro.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9563
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237363
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Thu, 14 May 2015 13:17:56 +0000 (13:17 +0000)]
[mips] Do not place users of $ra in the delay slot of call instructions.
Summary:
When we are trying to fill the delay slot of a call instruction, we must avoid
filler instructions that use the $ra register. This fixes the test
MultiSource/Applications/JM/lencod when we enable the forward delay slot filler.
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9670
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237362
91177308-0d34-0410-b5e6-
96231b3b80d8
Artyom Skrobov [Thu, 14 May 2015 12:59:46 +0000 (12:59 +0000)]
Re-apply r237247 - [AArch64] Codegen VMAX/VMIN for safe math cases
No longer breaks SPEC2000/2006
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237361
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 14 May 2015 12:33:32 +0000 (12:33 +0000)]
Attempt to fix MSVC bots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237359
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 14 May 2015 12:05:18 +0000 (12:05 +0000)]
New Loop Distribution pass
Summary:
This implements the initial version as was proposed earlier this year
(http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-January/080462.html).
Since then Loop Access Analysis was split out from the Loop Vectorizer
and was made into a separate analysis pass. Loop Distribution becomes
the second user of this analysis.
The pass is off by default and can be enabled
with -enable-loop-distribution. There is currently no notion of
profitability; if there is a loop with dependence cycles, the pass will
try to split them off from other memory operations into a separate loop.
I decided to remove the control-dependence calculation from this first
version. This and the issues with the PDT are actively discussed so it
probably makes sense to treat it separately. Right now I just mark all
terminator instruction required which keeps identical CFGs for each
distributed loop. This seems to be working pretty well for 456.hmmer
where even though there is an empty if-then block in the distributed
loop initially, it gets completely removed.
The pass keeps DominatorTree and LoopInfo updated. I've tested this
with -loop-distribute-verify with the testsuite where we distribute ~90
loops. SimplifyLoop is violated in some cases and I have a FIXME
covering this.
Reviewers: hfinkel, nadav, aschwaighofer
Reviewed By: aschwaighofer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8831
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237358
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Thu, 14 May 2015 10:58:59 +0000 (10:58 +0000)]
Fixed some typos and broken links in source level debugging docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237357
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Thu, 14 May 2015 10:53:40 +0000 (10:53 +0000)]
[mips] [IAS] Warn when LA is used with a 64-bit symbol.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9295
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237356
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Thu, 14 May 2015 10:02:58 +0000 (10:02 +0000)]
[mips] [IAS] Give expandLoadAddressSym() more specific arguments. NFC.
Summary:
If we only pass the necessary operands, we don't have to determine the position of the symbol operand when entering expandLoadAddressSym().
This simplifies the expandLoadAddressSym() code.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9291
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237355
91177308-0d34-0410-b5e6-
96231b3b80d8
Vladimir Sukharev [Thu, 14 May 2015 09:50:14 +0000 (09:50 +0000)]
[AArch64] Slight naming changes and comments for AArch64NamedImmMapper
Reviewers: echristo
Subscribers: llvm-commits
Follow-up to: http://reviews.llvm.org/D8496#158595
Relates to: http://reviews.llvm.org/rL235089
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237354
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Thu, 14 May 2015 09:04:45 +0000 (09:04 +0000)]
AVX-512: Added i1 type handling for calling conventions.
i1 type is a legal type on AVX-512 and can be passed as parameter or return value.
i1 is promoted to i8 on return and to i32 for call arguments (i8 is also promoted to i32 here).
The result code is similar to the previous X86 targets, where i1 is allways promoted to i8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237350
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 14 May 2015 06:47:02 +0000 (06:47 +0000)]
TableGen: Avoid undefined behaviour by doing this shift in int64
Found by ubsan. This was taking a bool and left shifting by 32 - the
result is 64 bit, so we should really do the math in a type it fits
in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237345
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 14 May 2015 05:54:02 +0000 (05:54 +0000)]
[TableGen] Remove an unnecessary outer 'if' around 3 separate inner ifs. No functional change intended.
The outer if had 3 separate conditions ORed together and then the inner ifs detected which of the three conditions it was by using only a portion of the specific condition. Just put the whole condition in each inner if and remove the outer if.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237343
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 14 May 2015 05:53:59 +0000 (05:53 +0000)]
[TableGen] Simplify some code. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237342
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 14 May 2015 05:53:56 +0000 (05:53 +0000)]
[TableGen] Remove ListInit::size() in favor of getSize() which does the same thing and is already used in most places. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237341
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 14 May 2015 05:53:53 +0000 (05:53 +0000)]
[TableGen] Replace some calls to ListInit::getSize() with ListInit::empty() if it was just comparing to 0. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237340
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 14 May 2015 04:52:57 +0000 (04:52 +0000)]
cmake: Use -fno-sanitize-recover=all - the old spelling is deprecated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237334
91177308-0d34-0410-b5e6-
96231b3b80d8
Andy Ayers [Thu, 14 May 2015 01:10:41 +0000 (01:10 +0000)]
Don't omit the constant when computing a cross-section relative relocation.
Differential Revision: http://reviews.llvm.org/D9692
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237327
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Thu, 14 May 2015 01:00:51 +0000 (01:00 +0000)]
[CodeGen] Use standard -not gnueabi- naming for f16 libcalls on Darwin.
Other targets probably should as well. Since r237161, compiler-rt has
both, but I don't see why anything other than gnueabi would use a
gnueabi naming scheme.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237324
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Wed, 13 May 2015 23:41:47 +0000 (23:41 +0000)]
Revert r237046. See the testcase on the thread where r237046 was committed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237317
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 13 May 2015 23:10:51 +0000 (23:10 +0000)]
YAML: Implement block scalar parsing.
This commit implements the parsing of YAML block scalars.
Some code existed for it before, but it couldn't parse block
scalars.
This commit adds a new yaml node type to represent the block
scalar values.
This commit also deletes the 'spec-09-27' and 'spec-09-28' tests
as they are identical to the test file 'spec-09-26'.
This commit introduces 3 new utility functions to the YAML scanner
class: `skip_s_space`, `advanceWhile` and `consumeLineBreakIfPresent`.
Reviewers: Duncan P. N. Exon Smith
Differential Revision: http://reviews.llvm.org/D9503
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237314
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 13 May 2015 22:55:01 +0000 (22:55 +0000)]
[opaque pointer type] Use the value type of the GlobalVariable rather than accessing it through the pointee's type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237312
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 13 May 2015 22:54:54 +0000 (22:54 +0000)]
[opaque pointer type] Use GlobalVariable::getValueType rather than accessing it through the GV's pointee type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237311
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Wed, 13 May 2015 22:44:52 +0000 (22:44 +0000)]
[X86] Fix PR23271 - RIP-relative decoding bug in disassembler.
Differential Revision: http://reviews.llvm.org/D9110
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237310
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 13 May 2015 22:43:09 +0000 (22:43 +0000)]
Construct ArrayRef<const T*> from vector<T>
ArrayRef already has a SFINAE constructor which can construct ArrayRef<const T*> from ArrayRef<T*>.
This adds methods to do the same directly from SmallVector and std::vector. This avoids an intermediate step through the use of makeArrayRef.
Also update the users of this in LICM and SROA to remove the now unnecessary makeArrayRef call.
Reviewed by David Blaikie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237309
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 13 May 2015 22:42:28 +0000 (22:42 +0000)]
[lib/Fuzzer] update docs about test corpuses in git
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237308
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 13 May 2015 22:41:48 +0000 (22:41 +0000)]
InstrProf: Fix display of large numbers in llvm-cov
llvm-cov was truncating numbers that were larger than a particular
fixed width, which is as confusing as it is useless. Instead, we use
engineering notation with SI prefix for magnitude.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237307
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 13 May 2015 22:19:13 +0000 (22:19 +0000)]
Add llvm::all_of which wraps std::all_of.
This version doesn't need begin/end but can instead just take a type which has begin/end methods.
Use this to replace an eligible foreach loop in LoopInfo found by David Blaikie in r237224.
Reviewed by David Blaikie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237301
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Wed, 13 May 2015 22:14:43 +0000 (22:14 +0000)]
Fix typo on Instruction::insert{After,Before}(). NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237300
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 13 May 2015 22:03:04 +0000 (22:03 +0000)]
InstrProf: Treat functions with a coverage map but no profile as unreached
If we have a coverage mapping but no profile data for a function,
calling it mismatched is misleading. This can just as easily be
unreachable code that was stripped from the binary. Instead, treat
these the same as functions where we have an explicit "zero" coverage
map by setting the count to zero for each mapped region.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237298
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 13 May 2015 21:41:14 +0000 (21:41 +0000)]
MC: clang-format MCSymbol.h, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237297
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 13 May 2015 20:28:41 +0000 (20:28 +0000)]
ARM: remove possible vestiges of the legacy JIT???
There's no need to manually pass modifier strings around to tell an operand how
to print now, that information is encoded in the operand itself since the MC
layer came along.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237295
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 13 May 2015 20:28:38 +0000 (20:28 +0000)]
ARM: remove custom jump table UID
We were creating and propagating two separate indices for each jump table (from
back in the mists of time). However, the generic index used by other backends
is sufficient to emit a unique symbol so this was unneeded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237294
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 13 May 2015 20:28:32 +0000 (20:28 +0000)]
ARM: refactor optimizeThumb2JumpTables.
The previous logic mixed 2 separate questions:
+ Can we form a TBB/TBH instruction?
+ Can we remove the jump-table calculation before it?
It then performed a bunch of random tests on the instructions earlier in the
basic block, which were probably sufficient to answer 2 but only because of the
very limited ways in which a t2BR_JT can actually be created.
For example there's no reason to expect the LeaInst to define the same base
register as the following indexing calulation. In practice this means we might
have missed opportunities to form TBB/TBH, in theory you could end up
misidentifying a sequence and removing the wrong LEA:
%R1 = t2LEApcrelJT ...
%R2 = t2LEApcrelJT ...
<... using and killing %R2 ...>
%R2 = t2ADDr %R1, $Ridx
Before we would have looked for an LEA defining %R2 and found the wrong one. We
just got lucky that jump table setup was (almost?) always confined to a single
basic block and there was only one jump table per block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237293
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 13 May 2015 20:20:10 +0000 (20:20 +0000)]
[Statepoints][Docs] Fix a couple of out of date examples.
Things I had missed in r237285.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237290
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 13 May 2015 20:19:51 +0000 (20:19 +0000)]
[Statepoints][Docs] Fix typo: change a period to a comma.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237289
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 13 May 2015 20:11:59 +0000 (20:11 +0000)]
[Safepoints][Verifier] Fix a tautological Assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237287
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 13 May 2015 20:11:31 +0000 (20:11 +0000)]
[PlaceSafepoints] New attributes for patchable statepoints.
Summary:
This patch teaches the PlaceSafepoints pass about two `CallSite`
function attributes:
* "statepoint-id": if the string value of this attribute can be parsed
as an integer, then it is propagated to the ID parameter of the
statepoint created.
* "statepoint-num-patch-bytes": if the string value of this attribute
can be parsed as an integer, then it is propagated to the `num patch
bytes` parameter of the statepoint created.
This change intentionally does not assert on a malformed value for these
attributes, given that they're not "official" attributes.
Reviewers: reames, pgavlin
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9735
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237286
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 13 May 2015 20:11:24 +0000 (20:11 +0000)]
[PlaceSafepoints] Update docs for r237214.
Show the two new ID and NumPatchBytes fields in the PlaceSafepoint
examples in Statepoints.rst to avoid confusion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237285
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 13 May 2015 19:51:21 +0000 (19:51 +0000)]
[LoopIdiomRecognize] Use auto + range-based loop. NFC intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237284
91177308-0d34-0410-b5e6-
96231b3b80d8