oota-llvm.git
8 years ago[SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition.
James Y Knight [Wed, 13 Jan 2016 04:44:14 +0000 (04:44 +0000)]
[SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition.

AnalyzeBranch on X86 (and, previously, SPARC, which implementation was
copied from X86) tries to modify the branches based on block
layout (e.g. checking isLayoutSuccessor), when AllowModify is true.

The rest of the architectures leave that up to the caller, which can
call InsertBranch, RemoveBranch, and ReverseBranchCondition as
appropriate. That appears to be the preferred way to do it nowadays.

This commit makes SPARC like the rest: replaces AnalyzeBranch with an
implementation cribbed from AArch64, and adds a ReverseBranchCondition
implementation.

Additionally, a test-case has been added (also cribbed from AArch64)
demonstrating that redundant branch sequences no longer get emitted.

E.g., it used to emit code like this:
         bne .LBB1_2
         nop
         ba .LBB1_1
         nop
 .LBB1_2:

And now emits:
        cmp %i0, 42
        be .LBB1_1
        nop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257572 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Coverage] Refactor coverage mapping reader code
Xinliang David Li [Wed, 13 Jan 2016 04:36:15 +0000 (04:36 +0000)]
[Coverage] Refactor coverage mapping reader code

(Resubmit after fixing a typo that breaks test on big endian
 machines)

In this refactoring, member functions are introduced to access
CovMap header/func record members and hide layout details. This
will enable further code restructuring to support reading multiple
versions of coverage mapping data with shared/templatized code.
(When coveremap format version changes, backward compatibtility
should be preserved).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257571 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[llvm-readobj] Remove dead code. Add an assertion instead.
Davide Italiano [Wed, 13 Jan 2016 04:11:36 +0000 (04:11 +0000)]
[llvm-readobj] Remove dead code. Add an assertion instead.

When we arrive at the end of the function, the validation of
the object has been done already. In theory, so, we should never
arrive here with something broken as the object isn't mutated.
Practice sometimes proves theory to be wrong, so leave an assertion
instead, as suggested by David Blaikie, to catch bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257570 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRollback r257551 -- unexpected test failures TBI
Xinliang David Li [Wed, 13 Jan 2016 02:46:40 +0000 (02:46 +0000)]
Rollback r257551 -- unexpected test failures TBI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257564 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRe-Revert r257105 (Verifier debug info changes)
Keno Fischer [Wed, 13 Jan 2016 02:31:14 +0000 (02:31 +0000)]
Re-Revert r257105 (Verifier debug info changes)

While I investigate some new buildbot failures. This was originally reapplied
as r257550 and r257558.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257563 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[llvm-objdump] Use report_error() and improve error coverage.
Davide Italiano [Wed, 13 Jan 2016 02:03:31 +0000 (02:03 +0000)]
[llvm-objdump] Use report_error() and improve error coverage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257561 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] make sure to update CurrentUnit when drilling
Kostya Serebryany [Wed, 13 Jan 2016 01:58:27 +0000 (01:58 +0000)]
[libFuzzer] make sure to update CurrentUnit when drilling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257560 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse utostr rather than std::to_string
Keno Fischer [Wed, 13 Jan 2016 01:26:57 +0000 (01:26 +0000)]
Use utostr rather than std::to_string

Looks like std::to_string is not available for Android. Hopefully
this fixes the bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257558 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAsmPrinter: Fix wrong OS X versions being emitted for darwin triples
Matthias Braun [Wed, 13 Jan 2016 01:18:13 +0000 (01:18 +0000)]
AsmPrinter: Fix wrong OS X versions being emitted for darwin triples

The version numbers of the darwin kernel are different from the version
numbers of OS X, so we need adjustments if we had "*-*-darwin" triples.
Use the existing utility functions in TargetTriple for this.

Fixes rdar://22056966

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257555 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Mark our lines as statements, not expressions
David Majnemer [Wed, 13 Jan 2016 01:05:23 +0000 (01:05 +0000)]
[CodeView] Mark our lines as statements, not expressions

The line tables for CodeView make a distinction between expressions and
statements.  As it turns out, MSVC always emits them as statements and
we always emit them as expressions.  Let's switch to statements to match
the CodeView that they emit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257553 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Improve the line table dumper
David Majnemer [Wed, 13 Jan 2016 01:05:16 +0000 (01:05 +0000)]
[CodeView] Improve the line table dumper

This change has us print out fields we didn't previously understand.  To
improve readability, we now group column information with it's
respective line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257552 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Coverage] Refactor coverage mapping reader code /NFC
Xinliang David Li [Wed, 13 Jan 2016 00:53:46 +0000 (00:53 +0000)]
[Coverage] Refactor coverage mapping reader code /NFC

(Resubmit after fixing build bot failures)

In this refactoring, member functions are introduced to access
CovMap header/func record members and hide layout details. This
will enable further code restructuring to support reading multiple
versions of coverage mapping data with shared/templatized code.
(When coveremap format version changes, backward compatibtility
should be preserved).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257551 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReapply r257105 "[Verifier] Check that debug values have proper size"
Keno Fischer [Wed, 13 Jan 2016 00:31:44 +0000 (00:31 +0000)]
Reapply r257105 "[Verifier] Check that debug values have proper size"

The follow extra changes were made to test cases:

Manually making the variable be the actual type instead of a pointer
to avoid pointer-size differences in generic code:

    LLVM :: DebugInfo/Generic/2010-03-24-MemberFn.ll
    LLVM :: DebugInfo/Generic/2010-04-06-NestedFnDbgInfo.ll
    LLVM :: DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
    LLVM :: DebugInfo/Generic/varargs.ll

Delete sizing information from debug info for the same reason
(but the presence of the pointer was important to the test case):

    LLVM :: DebugInfo/Generic/restrict.ll
    LLVM :: DebugInfo/Generic/tu-composite.ll
    LLVM :: Linker/type-unique-type-array-a.ll
    LLVM :: Linker/type-unique-simple2.ll

Fixing an incorrect DW_OP_deref

    LLVM :: DebugInfo/Generic/2010-05-03-OriginDIE.ll

Fixing a missing DW_OP_deref

    LLVM :: DebugInfo/Generic/incorrect-variable-debugloc.ll

Additionally, clang should no longer complain during bootstrap should no
longer happen after r257534.

The original commit message was:
```
Summary:
Teach the Verifier to make sure that the storage size given to llvm.dbg.declare
or the value size given to llvm.dbg.value agree with what is declared in
DebugInfo. This is implicitly assumed in a number of passes (e.g. in SROA).
Additionally this catches a number of common mistakes, such as passing a
pointer when a value was intended or vice versa.

One complication comes from stack coloring which modifies the original IR when
it merges allocas in order to make sure that if AA falls back to the IR it gets
the correct result. However, given this new invariant, indiscriminately
replacing one alloca by a different (differently sized one) is no longer valid.
Fix this by just undefing out any use of the alloca in a dbg.declare in this
case.

Additionally, I had to fix a number of test cases. Of particular note:
- I regenerated dbg-changes-codegen-branch-folding.ll from the given source as
  it was affected by the bug fixed in r256077
- two-cus-from-same-file.ll was changed to avoid having a variable-typed debug
  variable as that would depend on the target, even though this test is
  supposed to be generic
- I had to manually declared size/align for reference type. See also the
  discussion for D14275/r253186.
- fpstack-debuginstr-kill.ll required changing `double` to `long double`
- most others were just a question of adding OP_deref
```

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257550 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRollback r257547 -- buildbot failure TBI
Xinliang David Li [Wed, 13 Jan 2016 00:27:24 +0000 (00:27 +0000)]
Rollback r257547 -- buildbot failure TBI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257549 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFor llvm-objdump, add the option -private-header (without the trailing ’s’)
Kevin Enderby [Wed, 13 Jan 2016 00:25:36 +0000 (00:25 +0000)]
For llvm-objdump, add the option -private-header (without the trailing ’s’)
to only print the first private header.

Which for Mach-O files only prints the Mach header and not the subsequent load
commands.  Which is used by scripts to match what the darwin otool(1) with the
-h flag does without the -l flag.

For non-Mach-O files it has the same functionality as -private-headers (with
the trailing ’s’).

rdar://24158331

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257548 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Coverage] Refactor coverage mapping reader code /NFC
Xinliang David Li [Wed, 13 Jan 2016 00:16:43 +0000 (00:16 +0000)]
[Coverage] Refactor coverage mapping reader code /NFC

In this refactoring, member functions are introduced to access
CovMap header/func record members and hide layout details. This
will enable further code restructuring to support reading multiple
versions of coverage mapping data with shared/templatized code.
(When coveremap format version changes, backward compatibtility
should be preserved).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257547 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoGuard fabs to bfc convert with V6T2 flag
Ana Pazos [Wed, 13 Jan 2016 00:03:35 +0000 (00:03 +0000)]
Guard fabs to bfc convert with V6T2 flag

Summary:
BFC instructions are available in ARMv6T2 and above.

Reviewers: t.p.northover

Subscribers: aemerson

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257546 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ARM] Mark VMOV with immediate: isAsCheapAsMove.
Quentin Colombet [Wed, 13 Jan 2016 00:02:40 +0000 (00:02 +0000)]
[ARM] Mark VMOV with immediate: isAsCheapAsMove.
VMOVs are not strictly speaking cheap, but they are as expensive as a vector
copy (VORR), so we should prefer rematerialization over splitting when it
applies.

rdar://problem/23754176

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257545 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCannotBeOrderedLessThanZero: add some missing cases
Fiona Glaser [Tue, 12 Jan 2016 23:37:30 +0000 (23:37 +0000)]
CannotBeOrderedLessThanZero: add some missing cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257542 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCOFF: Teach llvm-objdump how to dump DLL forwarder symbols.
Rui Ueyama [Tue, 12 Jan 2016 23:28:42 +0000 (23:28 +0000)]
COFF: Teach llvm-objdump how to dump DLL forwarder symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257539 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Fix disassembler shared-libs build
Derek Schuff [Tue, 12 Jan 2016 23:03:40 +0000 (23:03 +0000)]
[WebAssembly] Fix disassembler shared-libs build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257536 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRegisterPressure: Expose RegisterOperands API
Matthias Braun [Tue, 12 Jan 2016 22:57:35 +0000 (22:57 +0000)]
RegisterPressure: Expose RegisterOperands API

Previously the RegisterOperands have only been used internally in
RegisterPressure.cpp. However this datastructure can be useful for other
tasks as well and allows refactoring of PDiff initialisation out of
RPTracker::recede().

This patch:
- Exposes RegisterOperands as public API
- Splits RPTracker::recede() into a part that skips DebugValues and
  maintains the region borders, and the core that changes register
  pressure when given a set of RegisterOperands.
- This allows to move the PDiff initialisation out recede() into a
  method of the PressureDiffs class.
- The upcoming subregister scheduling code will also use
  RegisterOperands to avoid pushing more unrelated functionality into
  recede()/advance().

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257535 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Utils] Insert DW_OP_bit_piece when only describing part of the variable
Keno Fischer [Tue, 12 Jan 2016 22:46:09 +0000 (22:46 +0000)]
[Utils] Insert DW_OP_bit_piece when only describing part of the variable

Summary: The dbg.declare -> dbg.value conversion looks through any zext/sext
to find a value to describe the variable (in the expectation that those
zext/sext instruction will go away later). However, those values do not
cover the entire variable and thus need a DW_OP_bit_piece.

Reviewers: aprantl
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D16061

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257534 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Support] Add saturating multiply-add support function
Nathan Slingerland [Tue, 12 Jan 2016 22:34:00 +0000 (22:34 +0000)]
[Support] Add saturating multiply-add support function

Summary: Add SaturatingMultiplyAdd convenience function template since A + (X * Y) comes up frequently when doing weighted arithmetic.

Reviewers: davidxl, silvas

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257532 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Initialize column-end to zero
David Majnemer [Tue, 12 Jan 2016 21:58:20 +0000 (21:58 +0000)]
[CodeView] Initialize column-end to zero

CodeView, unlike DWARF, can associate code with a range of columns.
However, LLVM can only represent a single column position internally.

We used to claim that the end column and start column were the same
which yielded less than satisfactory results: we would stop printing at
the _beginning_ of the source expression!  Instead, mark the column-end
as 'zero' to indicate that we don't have one (as per the documentation
for IDiaLineNumber::get_lineNumberEnd).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257528 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAsssembly] Register the MC register info.
Dan Gohman [Tue, 12 Jan 2016 21:27:55 +0000 (21:27 +0000)]
[WebAsssembly] Register the MC register info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257525 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AVX512] adding PROLQ and PROLD Intrinsics
Michael Zuckerman [Tue, 12 Jan 2016 21:19:17 +0000 (21:19 +0000)]
[AVX512] adding PROLQ and PROLD Intrinsics

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257523 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Fix a test to work even when the integrated assembler is enabled.
Dan Gohman [Tue, 12 Jan 2016 21:01:30 +0000 (21:01 +0000)]
[WebAssembly] Fix a test to work even when the integrated assembler is enabled.

Add -no-integrated-as to this test, since it's testing inline asm strings
that aren't actually valid assembly syntax.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257519 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCodegen: [PPC] Handle weighted comparisons when inserting selects.
Kyle Butt [Tue, 12 Jan 2016 21:00:43 +0000 (21:00 +0000)]
Codegen: [PPC] Handle weighted comparisons when inserting selects.

Only non-weighted predicates were handled in PPCInstrInfo::insertSelect. Handle
the weighted predicates as well.

This latent bug was triggered by r255398, because it added use of the
branch-weighted predicates.

While here, switch over an enum instead of an int to get the compiler to enforce
totality in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257518 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Add a EM_WEBASSEMBLY value, and several bits of code that use it.
Dan Gohman [Tue, 12 Jan 2016 20:56:01 +0000 (20:56 +0000)]
[WebAssembly] Add a EM_WEBASSEMBLY value, and several bits of code that use it.

A request has been made to the official registry, but an official value is
not yet available. This patch uses a temporary value in order to support
development. When an official value is recieved, the value of EM_WEBASSEMBLY
will be updated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257517 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Add ELFRelocs/WebAssembly.def as a "textual header" to the module map.
Dan Gohman [Tue, 12 Jan 2016 20:51:40 +0000 (20:51 +0000)]
[WebAssembly] Add ELFRelocs/WebAssembly.def as a "textual header" to the module map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257515 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Introduce a WebAssemblyTargetStreamer class.
Dan Gohman [Tue, 12 Jan 2016 20:30:51 +0000 (20:30 +0000)]
[WebAssembly] Introduce a WebAssemblyTargetStreamer class.

Refactor .param, .result, .local, and .endfunc, as directives, using the
proper MCTargetStreamer mechanism, rather than fake instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257511 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReplace inherited constructor with an explicit one
Krzysztof Parzyszek [Tue, 12 Jan 2016 19:27:59 +0000 (19:27 +0000)]
Replace inherited constructor with an explicit one

Some bots failed when the inherited constructor was used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257508 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Make CFG stackification independent of basic-block labels.
Dan Gohman [Tue, 12 Jan 2016 19:14:46 +0000 (19:14 +0000)]
[WebAssembly] Make CFG stackification independent of basic-block labels.

This patch changes the way labels are referenced. Instead of referencing the
basic-block label name (eg. .LBB0_0), instructions now just have an immediate
which indicates the depth in the control-flow stack to find a label to jump to.
This makes them much closer to what we expect to have in the binary encoding,
and avoids the problem of basic-block label names not being explicit in the
binary encoding.

Also, it terminates blocks and loops with end_block and end_loop instructions,
rather than basic-block label names, for similar reasons.

This will also fix problems where two constructs appear to have the same label,
because we no longer explicitly use labels, so consumers that need labels will
presumably create their own labels, and presumably they won't reuse labels
when they do.

This patch does make the code a little more awkward to read; as a partial
mitigation, this patch also introduces comments showing where the labels are,
and comments on each branch showing where it's branching to.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257505 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Implement RDF-based post-RA optimizations
Krzysztof Parzyszek [Tue, 12 Jan 2016 19:09:01 +0000 (19:09 +0000)]
[Hexagon] Implement RDF-based post-RA optimizations

- Handle simple cases of register copies (what current RDF CP allows).
- Hexagon-specific dead code elimination: handles dead address updates
  in post-increment instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257504 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, 0.5...
Sanjay Patel [Tue, 12 Jan 2016 19:06:35 +0000 (19:06 +0000)]
[LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, 0.5) calls

Also, propagate the FMF to the newly created sqrt() call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257503 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ORC] More cleanup, partially aimed at working around GCC ICE.
Lang Hames [Tue, 12 Jan 2016 19:01:49 +0000 (19:01 +0000)]
[ORC] More cleanup, partially aimed at working around GCC ICE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257501 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agorangify; NFCI
Sanjay Patel [Tue, 12 Jan 2016 18:47:59 +0000 (18:47 +0000)]
rangify; NFCI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257500 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAuto-link with ole32.dll to simplify building LLVM.dll
Reid Kleckner [Tue, 12 Jan 2016 18:33:49 +0000 (18:33 +0000)]
Auto-link with ole32.dll to simplify building LLVM.dll

Patch by Jakob Bornecrantz

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257499 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Replace lambda with a helper method.
Lang Hames [Tue, 12 Jan 2016 18:17:23 +0000 (18:17 +0000)]
[Orc] Replace lambda with a helper method.

This is good cleanup, but I'm also hoping it'll fix some more GCC ICEs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257498 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agofunction names start with a lower case letter ; NFC
Sanjay Patel [Tue, 12 Jan 2016 18:03:37 +0000 (18:03 +0000)]
function names start with a lower case letter ; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257496 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix bot failure from r257493: remove extraneous temp file read
Teresa Johnson [Tue, 12 Jan 2016 17:53:59 +0000 (17:53 +0000)]
Fix bot failure from r257493: remove extraneous temp file read

This was left from an earlier version of the test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257494 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ThinLTO] Handle an external call from an import to an alias in dest
Teresa Johnson [Tue, 12 Jan 2016 17:48:44 +0000 (17:48 +0000)]
[ThinLTO] Handle an external call from an import to an alias in dest

The findExternalCalls routine ignores calls to functions already
defined in the dest module. This was not handling the case where
the definition in the current module is actually an alias to a
function call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257493 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibCallSimplifier] use instruction-level fast-math-flags to transform pow(exp(x...
Sanjay Patel [Tue, 12 Jan 2016 17:30:37 +0000 (17:30 +0000)]
[LibCallSimplifier] use instruction-level fast-math-flags to transform pow(exp(x)) calls

See also:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404
http://reviews.llvm.org/rL257414

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257491 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRDF: Copy propagation
Krzysztof Parzyszek [Tue, 12 Jan 2016 17:23:48 +0000 (17:23 +0000)]
RDF: Copy propagation

This is a very limited implementation of DFG-based copy propagation.
It only handles actual COPY instructions (does not handle other equivalents
such as add-immediate with a 0 operand).
The major limitation is that it does not update the DFG: that will be the
change required to make it more robust (hopefully coming up soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257490 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Emit note directive for HSA even if there are no functions
Tom Stellard [Tue, 12 Jan 2016 17:18:17 +0000 (17:18 +0000)]
AMDGPU: Emit note directive for HSA even if there are no functions

Reviewers: arsenm, echristo

Subscribers: arsenm, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257488 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Clang-format.
Lang Hames [Tue, 12 Jan 2016 17:06:32 +0000 (17:06 +0000)]
[Orc] Clang-format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257487 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Take another shot at working around the GCC 4.7 ICE in
Lang Hames [Tue, 12 Jan 2016 17:04:12 +0000 (17:04 +0000)]
[Orc] Take another shot at working around the GCC 4.7 ICE in
http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75/builds/27486

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257486 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRDF: Dead code elimination
Krzysztof Parzyszek [Tue, 12 Jan 2016 17:01:16 +0000 (17:01 +0000)]
RDF: Dead code elimination

Utility class to perform DFG-based dead code elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257485 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoconsolidate exp/exp2 tests
Sanjay Patel [Tue, 12 Jan 2016 17:00:38 +0000 (17:00 +0000)]
consolidate exp/exp2 tests

The transform is identical, so keep the tests together and save some overhead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257484 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix compiler warnings from r257477
Krzysztof Parzyszek [Tue, 12 Jan 2016 16:51:55 +0000 (16:51 +0000)]
Fix compiler warnings from r257477

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257483 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] add a macro LLVM_FUZZER_DEFINES_SANITIZER_WEAK_HOOOKS
Kostya Serebryany [Tue, 12 Jan 2016 16:50:18 +0000 (16:50 +0000)]
[libFuzzer] add a macro LLVM_FUZZER_DEFINES_SANITIZER_WEAK_HOOOKS

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257482 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd/edit tests to include instruction-level FMF on calls
Sanjay Patel [Tue, 12 Jan 2016 16:50:17 +0000 (16:50 +0000)]
Add/edit tests to include instruction-level FMF on calls
Prepatory patch before changing LibCallSimplifier to use the FMF.
Also, tighten the CHECK lines and give the tests more meaningful names.
Similar changes to:
http://reviews.llvm.org/rL257414

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257481 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRDF: Implement register liveness analysis
Krzysztof Parzyszek [Tue, 12 Jan 2016 15:56:33 +0000 (15:56 +0000)]
RDF: Implement register liveness analysis

Compute block live-ins and operand kill flags from the DFG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257480 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[mips] Correct operand order in DSP's mthi/mtlo
Daniel Sanders [Tue, 12 Jan 2016 15:15:14 +0000 (15:15 +0000)]
[mips] Correct operand order in DSP's mthi/mtlo

Summary: The result register is the second operand as per the other mt* instructions.

Reviewers: vkalintiris

Subscribers: llvm-commits, dsanders

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257478 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRegister Data Flow: data flow graph
Krzysztof Parzyszek [Tue, 12 Jan 2016 15:09:49 +0000 (15:09 +0000)]
Register Data Flow: data flow graph

Target independent, SSA-based data flow framework for representing
data flow between physical registers.

This commit implements the creation of the actual data flow graph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257477 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Make helper function static. NFC.
Benjamin Kramer [Tue, 12 Jan 2016 14:58:49 +0000 (14:58 +0000)]
[Hexagon] Make helper function static. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257476 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix test on windows.
Rafael Espindola [Tue, 12 Jan 2016 14:58:40 +0000 (14:58 +0000)]
Fix test on windows.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257475 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ARM] Fix several state persistence bugs
Keno Fischer [Tue, 12 Jan 2016 13:38:15 +0000 (13:38 +0000)]
[ARM] Fix several state persistence bugs

Summary:
This fixes three bugs, in all of which state is not or incorrecly reset between
objects (i.e. when reusing the same pass manager to create multiple object
files):
1) AttributeSection needs to be reset to nullptr, because otherwise the backend
   will try to emit into the old object file's attribute section causing a
   segmentation fault.
2) MappingSymbolCounter needs to be reset, otherwise the second object file
   will start where the first one left off.
3) The MCStreamer base class resets the Streamer's e_flags settings. Since
   EF_ARM_EABI_VER5 is set on streamer creation, we need to set it again
   after the MCStreamer was rest.

Also rename Reset (uppser case) to EHReset to avoid confusion with
reset (lower case).

Reviewers: rengolin
Differential Revision: http://reviews.llvm.org/D15950

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257473 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTest commit access - tiny comment and code style fix.
Andrey Turetskiy [Tue, 12 Jan 2016 13:34:11 +0000 (13:34 +0000)]
Test commit access - tiny comment and code style fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257472 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThe isel pattern that selects the memory-register form of VCVTPH2PS
Robert Lougher [Tue, 12 Jan 2016 11:48:25 +0000 (11:48 +0000)]
The isel pattern that selects the memory-register form of VCVTPH2PS
(64 to 128-bit) matches against the pattern fragment 'vzmovl_v2i64'
(a zero-extended 64-bit load).

However, a change in r248784 teaches the instruction combiner that only
the lower 64 bits of the input to a 128-bit vcvtph2ps are used.  This means
the instruction combiner will ordinarily optimize away the upper 64-bit
insertelement instruction in the zero-extension and so we no longer select
the memory-register form.  To fix this a new pattern has been added.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257470 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThe --debug-only option now takes a comma separated list of debug types.
Christof Douma [Tue, 12 Jan 2016 10:23:13 +0000 (10:23 +0000)]
The --debug-only option now takes a comma separated list of debug types.

This means that the DEBUG_TYPE cannot take a comma anymore. All existing passes
conform to this rule.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257466 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAVX512: VPMOVAPS/PD and VPMOVUPS/PD (load) intrinsic implementation.
Igor Breger [Tue, 12 Jan 2016 10:02:32 +0000 (10:02 +0000)]
AVX512: VPMOVAPS/PD and VPMOVUPS/PD (load) intrinsic implementation.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257463 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoExplicitly enable OBJECT library "target".
Axel Naumann [Tue, 12 Jan 2016 07:44:58 +0000 (07:44 +0000)]
Explicitly enable OBJECT library "target".

With this, one can build a lib from the objects of other libs:
set(SOURCES
  $<TARGET_OBJECTS:obj.clingInterpreter>
  $<TARGET_OBJECTS:obj.clingMetaProcessor>
  $<TARGET_OBJECTS:obj.clingUtils>
  )

Reviewed by Chris Bieneman - thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257459 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Comment out debugging output in OrcRemoteTargetClient::reserveMem to see
Lang Hames [Tue, 12 Jan 2016 07:26:28 +0000 (07:26 +0000)]
[Orc] Comment out debugging output in OrcRemoteTargetClient::reserveMem to see
whether this affects the GCC 4.7 ICE on
http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75 .

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257458 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert r257003
Andrew Wilkins [Tue, 12 Jan 2016 07:23:58 +0000 (07:23 +0000)]
Revert r257003

This revision breaks llvm-config if you set
BUILD_SHARED_LIBS=on in a CMake build. Backing
out until the fix is ready to land.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257457 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ORC] Remove extraneous '&'.
Lang Hames [Tue, 12 Jan 2016 07:10:10 +0000 (07:10 +0000)]
[ORC] Remove extraneous '&'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257455 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ORC] Replace some more 'auto' uses with std::error_code.
Lang Hames [Tue, 12 Jan 2016 07:09:41 +0000 (07:09 +0000)]
[ORC] Replace some more 'auto' uses with std::error_code.

One of the GCC 4.7 bots doesn't seem to like auto, and is currently suffering
from an ICE. I'm hoping this will help.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257454 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Add overloads of RPC::handle and RPC::expect that take member functions as
Lang Hames [Tue, 12 Jan 2016 06:48:52 +0000 (06:48 +0000)]
[Orc] Add overloads of RPC::handle and RPC::expect that take member functions as
handlers.

It is expected that RPC handlers will usually be member functions. Accepting them
directly in handle and expect allows for the remove of a lot of lambdas an
explicit error variables.

This patch also uses this new feature to substantially tidy up the
OrcRemoteTargetServer class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257452 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLoopUnroll: Move the actual unrolling logic to a standalone function. NFC
Justin Bogner [Tue, 12 Jan 2016 05:21:37 +0000 (05:21 +0000)]
LoopUnroll: Move the actual unrolling logic to a standalone function. NFC

This is pure code motion - break the actual work out of runOnLoop into
a reusable standalone function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257445 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Implement a prototype instruction encoder and disassembler.
Dan Gohman [Tue, 12 Jan 2016 03:32:29 +0000 (03:32 +0000)]
[WebAssembly] Implement a prototype instruction encoder and disassembler.

This is using an extremely simple temporary made-up binary format, not the
official binary format (which isn't defined yet).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257440 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Register the MC subtarget info.
Dan Gohman [Tue, 12 Jan 2016 03:30:06 +0000 (03:30 +0000)]
[WebAssembly] Register the MC subtarget info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257439 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Define OperandTypes for decoding immediate values.
Dan Gohman [Tue, 12 Jan 2016 03:09:16 +0000 (03:09 +0000)]
[WebAssembly] Define OperandTypes for decoding immediate values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257438 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Define a custom segment type for function definitions.
Dan Gohman [Tue, 12 Jan 2016 02:58:12 +0000 (02:58 +0000)]
[WebAssembly] Define a custom segment type for function definitions.

Since function definitions are not loaded into the address space, PT_LOAD is
inappropriate. PT_WEBASSEMBLY_FUNCTIONS is used to identify where the function
definitions are so that they can be processed at program startup time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257436 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] when a new unit is discovered using a dictionary, print all used dictiona...
Kostya Serebryany [Tue, 12 Jan 2016 02:36:59 +0000 (02:36 +0000)]
[libFuzzer] when a new unit is discovered using a dictionary, print all used dictionary entries

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257435 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] add various debug prints. Also don't mutate based on a cmp trace like...
Kostya Serebryany [Tue, 12 Jan 2016 02:08:37 +0000 (02:08 +0000)]
[libFuzzer] add various debug prints. Also don't mutate based on a cmp trace like (a eq a) or (a neq a)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257434 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Use TSFlags instead of keeping a list of special-case opcodes.
Dan Gohman [Tue, 12 Jan 2016 01:45:12 +0000 (01:45 +0000)]
[WebAssembly] Use TSFlags instead of keeping a list of special-case opcodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257433 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoOrcRemoteTargetServer.h: Suppress a warning. [-Wunused-variable]
NAKAMURA Takumi [Tue, 12 Jan 2016 01:23:43 +0000 (01:23 +0000)]
OrcRemoteTargetServer.h: Suppress a warning. [-Wunused-variable]

FIXME: It may return ErrorOr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257431 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agolli: Fix warnings. [-Wsign-compare]
NAKAMURA Takumi [Tue, 12 Jan 2016 01:23:30 +0000 (01:23 +0000)]
lli: Fix warnings. [-Wsign-compare]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257430 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCXX_FAST_TLS calling convention: performance improvement for x86-64.
Manman Ren [Tue, 12 Jan 2016 01:08:46 +0000 (01:08 +0000)]
CXX_FAST_TLS calling convention: performance improvement for x86-64.

This is the same change on x86-64 as r255821 on AArch64.
rdar://9001553

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257428 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLoopUnroll: Make canUnrollCompletely static - it doesn't use any state. NFC
Justin Bogner [Tue, 12 Jan 2016 01:06:32 +0000 (01:06 +0000)]
LoopUnroll: Make canUnrollCompletely static - it doesn't use any state. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257427 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLoopUnroll: Clean up the maze of initialization for unroll parameters. NFC
Justin Bogner [Tue, 12 Jan 2016 00:55:26 +0000 (00:55 +0000)]
LoopUnroll: Clean up the maze of initialization for unroll parameters. NFC

The layering of where the various loop unroll parameters are
initialized and overridden here was very confusing, making it pretty
difficult to tell just how the various sources interacted. Instead, we
put all of the initialization logic together in a single function so
that it's obvious what overrides what.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257426 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCXX_FAST_TLS calling convention: performance improvement for ARM.
Manman Ren [Tue, 12 Jan 2016 00:47:18 +0000 (00:47 +0000)]
CXX_FAST_TLS calling convention: performance improvement for ARM.

This is the same change on ARM as r255821 on AArch64.
rdar://9001553

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257424 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] extend the weak memcmp/strcmp/strncmp interceptors to receive the result...
Kostya Serebryany [Tue, 12 Jan 2016 00:43:42 +0000 (00:43 +0000)]
[libFuzzer] extend the weak memcmp/strcmp/strncmp interceptors to receive the result of the computations. With that, don't do any mutations if memcmp/etc returned 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257423 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[IRMover] Don't copy personality, etc unless creating def
Teresa Johnson [Tue, 12 Jan 2016 00:24:24 +0000 (00:24 +0000)]
[IRMover] Don't copy personality, etc unless creating def

Function::copyAttributesFrom will copy the personality function, prefix
data and prolog data from the source function to the new function, and
is invoked when the IRMover copies the function prototype. This puts a
reference to a constant in the source module on a function in the dest
module, which causes an error when deleting the source module after
importing, since the personality function in the source module still has
uses (this would presumably also be an issue for the prologue and prefix
data). Remove the copies added to the dest copy when creating the new
prototype, as they are mapped properly when/if we link the function body.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257420 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] XFAIL a few remote-jit test cases that I missed in r257391.
Lang Hames [Mon, 11 Jan 2016 23:57:39 +0000 (23:57 +0000)]
[Orc] XFAIL a few remote-jit test cases that I missed in r257391.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257419 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCXX_FAST_TLS calling convention: Add support for ARM on Darwin.
Manman Ren [Mon, 11 Jan 2016 23:50:43 +0000 (23:50 +0000)]
CXX_FAST_TLS calling convention: Add support for ARM on Darwin.

rdar://9001553

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257417 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Define WebAssembly-specific relocation codes.
Dan Gohman [Mon, 11 Jan 2016 23:38:05 +0000 (23:38 +0000)]
[WebAssembly] Define WebAssembly-specific relocation codes.

Currently WebAssembly has two kinds of relocations; data addresses and
function addresses. This adds ELF relocations for them, as well as an
MC symbol kind to indicate which type of relocation is needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257416 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAvoid the deprecated GetVersionEx API
Reid Kleckner [Mon, 11 Jan 2016 23:33:03 +0000 (23:33 +0000)]
Avoid the deprecated GetVersionEx API

Apparently the preferred version is the incredibly complicated
VerifyVersionInfoW function.

Rename the function to avoid potential future name clashes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257415 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibCallSimplifier] use instruction-level fast-math-flags to transform log calls
Sanjay Patel [Mon, 11 Jan 2016 23:31:48 +0000 (23:31 +0000)]
[LibCallSimplifier] use instruction-level fast-math-flags to transform log calls

Also, add tests to verify that we're checking 'fast' on both calls of each transform pair,
tighten the CHECK lines, and give the tests more meaningful names.

This is a continuation of:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257414 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove a bugs assert.
Rafael Espindola [Mon, 11 Jan 2016 23:21:45 +0000 (23:21 +0000)]
Remove a bugs assert.

There is no reason the value being printed has to be positive.
Fixes pr25802.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257412 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agolli-child-target: Introduce a new dependency on RuntimeDyld.
NAKAMURA Takumi [Mon, 11 Jan 2016 23:12:30 +0000 (23:12 +0000)]
lli-child-target: Introduce a new dependency on RuntimeDyld.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257410 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibCallSimplifier] don't allow sqrt transform unless all ops are unsafe
Sanjay Patel [Mon, 11 Jan 2016 22:50:36 +0000 (22:50 +0000)]
[LibCallSimplifier] don't allow sqrt transform unless all ops are unsafe

Fix the FIXME added with:
http://reviews.llvm.org/rL257400

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257404 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLoopUnroll: Use the optsize threshold for minsize as well
Justin Bogner [Mon, 11 Jan 2016 22:39:43 +0000 (22:39 +0000)]
LoopUnroll: Use the optsize threshold for minsize as well

Currently we're unrolling loops more in minsize than in optsize, which
means -Oz will have a larger code size than -Os. That doesn't make any
sense.

This resolves the FIXME about this in LoopUnrollPass and extends the
optsize test to make sure we use the smaller threshold for minsize as
well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257402 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agomore space; NFC
Sanjay Patel [Mon, 11 Jan 2016 22:35:39 +0000 (22:35 +0000)]
more space; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257401 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibCallSimplifier] use instruction-level fast-math-flags to transform sqrt calls
Sanjay Patel [Mon, 11 Jan 2016 22:34:19 +0000 (22:34 +0000)]
[LibCallSimplifier] use instruction-level fast-math-flags to transform sqrt calls

This is a continuation of adding FMF to call instructions:
http://reviews.llvm.org/rL255555

The intent of the patch is to preserve the current behavior of the transform except
that we use the sqrt instruction's 'fast' attribute as a trigger rather than the
function-level attribute.

But this raises a bug noted by the new FIXME comment.

In order to do this transform:
sqrt((x * x) * y) ---> fabs(x) * sqrt(y)

...we need all of the sqrt, the first fmul, and the second fmul to be 'fast'.
If any of those ops is strict, we should bail out.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257400 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agogetParent()->getParent() == getFunction() and clang-format ; NFC
Sanjay Patel [Mon, 11 Jan 2016 22:24:35 +0000 (22:24 +0000)]
getParent()->getParent() == getFunction() and clang-format ; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257399 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agodon't repeat function names in comments; NFC
Sanjay Patel [Mon, 11 Jan 2016 22:14:42 +0000 (22:14 +0000)]
don't repeat function names in comments; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257396 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd a missing error handling to llvm-lto.
Rafael Espindola [Mon, 11 Jan 2016 22:08:22 +0000 (22:08 +0000)]
Add a missing error handling to llvm-lto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257395 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Reorganize address offset folding.
Dan Gohman [Mon, 11 Jan 2016 22:05:44 +0000 (22:05 +0000)]
[WebAssembly] Reorganize address offset folding.

Always expect tglobaladdr and texternalsym to be wrapped in
WebAssemblywrapper nodes. Also, split out a regPlusGA from regPlusImm so
that it can special-case global addresses, as they can be folded in more
cases.

Unfortunately this doesn't enable any new optimizations yet due to
SelectionDAG limitations. I'll be submitting changes to the SelectionDAG
infrastructure, along with tests, in a separate patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257394 91177308-0d34-0410-b5e6-96231b3b80d8