platform/upstream/llvm.git
6 years agoRevert changes from D46265.
Than McIntosh [Fri, 18 May 2018 17:47:10 +0000 (17:47 +0000)]
Revert changes from D46265.

This is a revert of the changes from https://reviews.llvm.org/D46265;
the new test introduced (test/CodeGen/X86/PR37310.mir) causes buildbot
failures.

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D47061

llvm-svn: 332742

6 years ago[MC] Relax .fill size requirements
Nirav Dave [Fri, 18 May 2018 17:45:48 +0000 (17:45 +0000)]
[MC] Relax .fill size requirements

Avoid requirement that number of values must be known at assembler
time.

Fixes PR33586.

Reviewers: rnk, peter.smith, echristo, jyknight

Subscribers: hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D46703

llvm-svn: 332741

6 years ago[X86] Update fast-isel test cases for _mm256_mask_cvtepi16_epi8 to match clang r332738.
Craig Topper [Fri, 18 May 2018 17:29:47 +0000 (17:29 +0000)]
[X86] Update fast-isel test cases for _mm256_mask_cvtepi16_epi8 to match clang r332738.

llvm-svn: 332740

6 years agoAdd remarks describing when a pass changes the IR instruction count of a module
Jessica Paquette [Fri, 18 May 2018 17:26:39 +0000 (17:26 +0000)]
Add remarks describing when a pass changes the IR instruction count of a module

This patch adds a remark which tells the user when a pass changes the number of
IR instructions in a module.

It can be enabled by using -Rpass-analysis=size-info.

The point of this is to make it easier to collect statistics on how passes
modify programs in terms of code size. This is similar in concept to timing
reports, but using a remark-based interface makes it easy to diff changes over
multiple compilations of the same program.

By adding functionality like this, we can see
  * Which passes impact code size the most
  * How passes impact code size at different optimization levels
  * Which pass might have contributed the most to an overall code size
    regression

The patch lives in the legacy pass manager, but since it's simply emitting
remarks, it shouldn't be too difficult to adapt the functionality to the new
pass manager as well. This can also be adapted to handle MachineInstr counts in
code gen passes.

https://reviews.llvm.org/D38768

llvm-svn: 332739

6 years ago[X86] Fix a bad cast from mask16 to mask8 in _mm256_mask_cvtepi16_epi8 introduced...
Craig Topper [Fri, 18 May 2018 17:18:46 +0000 (17:18 +0000)]
[X86] Fix a bad cast from mask16 to mask8 in _mm256_mask_cvtepi16_epi8 introduced in r332266.

llvm-svn: 332738

6 years ago[X86][BtVer2] Improve simulation of (V)PINSR values
Simon Pilgrim [Fri, 18 May 2018 17:09:41 +0000 (17:09 +0000)]
[X86][BtVer2] Improve simulation of (V)PINSR values

Include the 6cy delay transferring from the GPR to FPU.

llvm-svn: 332737

6 years ago[docs] Scudo documentation minor update
Kostya Kortchinsky [Fri, 18 May 2018 17:02:35 +0000 (17:02 +0000)]
[docs] Scudo documentation minor update

Summary:
Minor changes to reflect changes to the code that were not documented:
- `SCUDO_DEFAULT_OPTIONS` compile time way of defining options;
- MIPS added as a supported architecture;
- clarification on how to fully disable the Quarantine;
- rewording in a few places.

Reviewers: alekseyshl, flowerhack

Reviewed By: alekseyshl

Subscribers: sdardis, arichardson, atanasyan, llvm-commits

Differential Revision: https://reviews.llvm.org/D47071

llvm-svn: 332736

6 years ago[NFC] update coding standard links to HTTPS
JF Bastien [Fri, 18 May 2018 16:44:13 +0000 (16:44 +0000)]
[NFC] update coding standard links to HTTPS

Update one link which redirected, and remove an Amazon ref.

llvm-svn: 332735

6 years agoFix unused variable warning in r332724
Eric Liu [Fri, 18 May 2018 16:29:42 +0000 (16:29 +0000)]
Fix unused variable warning in r332724

llvm-svn: 332734

6 years ago[lldb] Fix compile warnings in r332702
Eric Liu [Fri, 18 May 2018 16:19:52 +0000 (16:19 +0000)]
[lldb] Fix compile warnings in r332702

Summary:
- Fix #include path
- Fix warning:
````
error: format specifies type 'unsigned long long' but the argument has type 'uint64_t'
(aka 'unsigned long') [-Werror,-Wformat]
 ```

Reviewers: labath, javed.absar

Differential Revision: https://reviews.llvm.org/D47072

llvm-svn: 332733

6 years agoTrying to fix clang-move tests on windows build bot broken by r332717
Eric Liu [Fri, 18 May 2018 16:08:18 +0000 (16:08 +0000)]
Trying to fix clang-move tests on windows build bot broken by r332717

http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10702

llvm-svn: 332732

6 years ago[Tooling] Add an overload of runToolOnCodeWithArgs that takes VFS
Eric Liu [Fri, 18 May 2018 16:06:19 +0000 (16:06 +0000)]
[Tooling] Add an overload of runToolOnCodeWithArgs that takes VFS

Summary: ... to support purely VFS-based tools.

Reviewers: bkramer

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D47074

llvm-svn: 332731

6 years agoRevert "[DWARF] Extract indexing code into a separate class hierarchy"
Amara Emerson [Fri, 18 May 2018 15:59:42 +0000 (15:59 +0000)]
Revert "[DWARF] Extract indexing code into a separate class hierarchy"

This reverts commit r332719 due to breaking this green dragon build:
http://green.lab.llvm.org/green/job/lldb-xcode/6644

llvm-svn: 332730

6 years agoMCSchedModel: Add comments to IssueWidth.
Andrew Trick [Fri, 18 May 2018 15:57:54 +0000 (15:57 +0000)]
MCSchedModel: Add comments to IssueWidth.

llvm-svn: 332729

6 years ago[ASTImporter] Enable disabled but passing test
Gabor Marton [Fri, 18 May 2018 15:46:18 +0000 (15:46 +0000)]
[ASTImporter] Enable disabled but passing test

Summary:
There is a test which passes since D32947, but it was forgotten to be enabled.
This patch enables that disabled test.

Reviewers: a.sidorin, r.stahl, xazax.hun

Subscribers: rnkovacs, dkrupp, cfe-commits

Differential Revision: https://reviews.llvm.org/D47069

llvm-svn: 332728

6 years ago[clang-format/ObjC] Correctly annotate single-component ObjC method invocations
Ben Hamilton [Fri, 18 May 2018 15:27:02 +0000 (15:27 +0000)]
[clang-format/ObjC] Correctly annotate single-component ObjC method invocations

Summary:
Previously, clang-format's parser would fail to annotate the
selector in a single-component Objective-C method invocation with
`TT_SelectorName`. For example, the following:

  [foo bar];

would parse `bar` as `TT_Unknown`:

  M=0 C=1 T=Unknown S=0 B=0 BK=0 P=140 Name=identifier L=34 PPK=2
  FakeLParens= FakeRParens=0 II=0x559d5db51770 Text='bar'

This caused us to fail to insert a space after a closing cast rparen,
so the following:

  [((Foo *)foo) bar];

would format as:

  [((Foo *)foo)bar];

This diff fixes the issue by ensuring we annotate the selector
in a single-component Objective-C method invocation as
`TT_SelectorName`.

Test Plan: New tests added. Ran tests with:
  % make -j16 FormatTests && ./tools/clang/unittests/Format/FormatTests

Reviewers: djasper, jolesiak

Reviewed By: jolesiak

Subscribers: Wizard, klimek, hokein, cfe-commits

Differential Revision: https://reviews.llvm.org/D47028

llvm-svn: 332727

6 years ago[InstCombine] add tests for lack of abs/nabs canonicalization; NFC
Sanjay Patel [Fri, 18 May 2018 15:26:38 +0000 (15:26 +0000)]
[InstCombine] add tests for lack of abs/nabs canonicalization; NFC

llvm-svn: 332726

6 years ago[InstCombine] regenerate checks; NFC
Sanjay Patel [Fri, 18 May 2018 15:22:19 +0000 (15:22 +0000)]
[InstCombine] regenerate checks; NFC

There were a combination of auto-generated styles in use
here because the scripts have evolved.

llvm-svn: 332725

6 years ago[HIP] Support offloading by linker script
Yaxun Liu [Fri, 18 May 2018 15:07:56 +0000 (15:07 +0000)]
[HIP] Support offloading by linker script

To support linking device code in different source files, it is necessary to
embed fat binary at host linking stage.

This patch emits an external symbol for fat binary in host codegen, then
embed the fat binary by lld through a linker script.

Differential Revision: https://reviews.llvm.org/D46472

llvm-svn: 332724

6 years agoSilence more truncation warnings; NFC.
Aaron Ballman [Fri, 18 May 2018 14:53:32 +0000 (14:53 +0000)]
Silence more truncation warnings; NFC.

llvm-svn: 332723

6 years ago[X86][BtVer2] Partial vector stores (inc MMX) have a 2cy latency
Simon Pilgrim [Fri, 18 May 2018 14:22:22 +0000 (14:22 +0000)]
[X86][BtVer2] Partial vector stores (inc MMX) have a 2cy latency

llvm-svn: 332722

6 years ago[clangd] Adapt file migration in r332720
Eric Liu [Fri, 18 May 2018 14:17:36 +0000 (14:17 +0000)]
[clangd] Adapt file migration in r332720

llvm-svn: 332721

6 years agoMove #include manipulation code to new lib/Tooling/Inclusions.
Eric Liu [Fri, 18 May 2018 14:16:37 +0000 (14:16 +0000)]
Move #include manipulation code to new lib/Tooling/Inclusions.

Summary:
clangToolingCore is linked into almost everything (incl. clang), but
not few tools need #include manipulation at this point. So pull this into a
separate library in Tooling.

Reviewers: ilya-biryukov

Subscribers: klimek, mgorny, cfe-commits, thakis

Differential Revision: https://reviews.llvm.org/D47068

llvm-svn: 332720

6 years ago[DWARF] Extract indexing code into a separate class hierarchy
Pavel Labath [Fri, 18 May 2018 14:15:46 +0000 (14:15 +0000)]
[DWARF] Extract indexing code into a separate class hierarchy

Summary:
This places the `if(m_using_apple_tables)` branches inside the
SymbolFileDWARF class behind an abstract DWARFIndex class. The class
currently has two implementations:
- AppleIndex, which searches using .apple_names and friends
- ManualIndex, which searches using a manually built index

Most of the methods of the class are very simple, and simply extract the
list of DIEs for the given name from the appropriate sub-table. The main
exception are the two GetFunctions overloads, which take a couple of
extra paramenters, including some callbacks. It was not possible to
split these up the same way as other methods, as here we were doing a
lot of post-processing on the results. The post-processing is similar
for the two cases, but not identical. I hope to factor these further in
separate patches.

Other interesting methods are:
- Preload(): do any preprocessing to make lookups faster (noop for
  AppleIndex, forces a build of the lookup tables for ManualIndex).
- ReportInvalidDIEOffset(): Used to notify the users of an invalid index
  (prints a message for AppleIndex, noop for ManualIndex).
- Dump(): dumps the index state (noop for AppleIndex, prints the lookup
  tables for ManualIndex).

Reviewers: clayborg, JDevlieghere

Subscribers: mgorny, aprantl, lldb-commits

Differential Revision: https://reviews.llvm.org/D46889

llvm-svn: 332719

6 years ago[X86][SSE] Ensure vector partial load/stores use the WriteVecLoad/WriteVecStore sched...
Simon Pilgrim [Fri, 18 May 2018 14:08:01 +0000 (14:08 +0000)]
[X86][SSE] Ensure vector partial load/stores use the WriteVecLoad/WriteVecStore scheduler classes

Retag some instructions that were missed when we split off vector load/store/moves - MOVQ/MOVD etc.

Fixes BtVer2/SLM which have different behaviours for GPR stores.

llvm-svn: 332718

6 years ago[VFS] Implement getRealPath for OverlayFileSystem.
Eric Liu [Fri, 18 May 2018 13:22:49 +0000 (13:22 +0000)]
[VFS] Implement getRealPath for OverlayFileSystem.

Reviewers: bkramer

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D47060

llvm-svn: 332717

6 years agoSilence a truncation warning; NFC.
Aaron Ballman [Fri, 18 May 2018 13:18:41 +0000 (13:18 +0000)]
Silence a truncation warning; NFC.

llvm-svn: 332716

6 years ago[X86][AVX] VEXTRACTF128mr store is a WriteFStoreX not WriteFStore
Simon Pilgrim [Fri, 18 May 2018 13:17:51 +0000 (13:17 +0000)]
[X86][AVX] VEXTRACTF128mr store is a WriteFStoreX not WriteFStore

llvm-svn: 332715

6 years ago[X86][SSE] Ensure float load/stores use the WriteFLoad/WriteFStore scheduler classes
Simon Pilgrim [Fri, 18 May 2018 13:13:59 +0000 (13:13 +0000)]
[X86][SSE] Ensure float load/stores use the WriteFLoad/WriteFStore scheduler classes

Retag some instructions that were missed when we split off vector load/store/moves - MOVSS/MOVSD/MOVHPD/MOVHPD/MOVLPD/MOVLPS etc.

Fixes BtVer2/SLM which have different behaviours for GPR stores.

llvm-svn: 332714

6 years ago[ExynosM3] Fix scheduling info.
Clement Courbet [Fri, 18 May 2018 13:10:41 +0000 (13:10 +0000)]
[ExynosM3] Fix scheduling info.

Differential Revision: https://reviews.llvm.org/D46356

llvm-svn: 332713

6 years ago[X86][ZnVer1] Cleanup more single match instregexs
Simon Pilgrim [Fri, 18 May 2018 13:05:26 +0000 (13:05 +0000)]
[X86][ZnVer1] Cleanup more single match instregexs

llvm-svn: 332712

6 years agoAdd Script to match open Phabricator reviews with potential reviewers.
Kristof Beyls [Fri, 18 May 2018 13:02:32 +0000 (13:02 +0000)]
Add Script to match open Phabricator reviews with potential reviewers.

At the last EuroLLVM, I gave a lightning talk about code review
statistics on Phabricator reviews and what we could derive from that
to try and reduce waiting-for-review bottlenecks. (see
https://llvm.org/devmtg/2018-04/talks.html#Lightning_2).

One of the items I pointed to is a script we've been using internally
for a little while to try and match open Phabricator reviews to people
who might be able to review them well. I received quite a few requests
to share that script, so here it is.

Warning: this is prototype quality!

The script uses 2 similar heuristics to try and match open reviews with
potential reviewers:

If there is overlap between the lines of code touched by the
patch-under-review and lines of code that a person has written, that
person may be a good reviewer.
If there is overlap between the files touched by the patch-under-review
and the source files that a person has made changes to, that person may
be a good reviewer.
The script provides a percentage for each of the above heuristics and
emails a summary. For example, a summary I received a few weeks ago
from the script is the following:

SUMMARY FOR kristof.beyls@arm.com (found 8 reviews):
[3.37%/41.67%] https://reviews.llvm.org/D46018 '[GlobalISel][IRTranslator] Split aggregates during IR translation' by Amara Emerson
[0.00%/100.00%] https://reviews.llvm.org/D46111 '[ARM] Enable misched for R52.' by Dave Green
[0.00%/50.00%] https://reviews.llvm.org/D45770 '[AArch64] Disable spill slot scavenging when stack realignment required.' by Paul Walker
[0.00%/40.00%] https://reviews.llvm.org/D42759 '[CGP] Split large data structres to sink more GEPs' by Haicheng Wu
[0.00%/25.00%] https://reviews.llvm.org/D45189 '[MachineOutliner][AArch64] Keep track of functions that use a red zone in AArch64MachineFunctionInfo and use that instead of checking for noredzone in the MachineOutliner' by Jessica Paquette
[0.00%/25.00%] https://reviews.llvm.org/D46107 '[AArch64] Codegen for v8.2A dot product intrinsics' by Oliver Stannard
[0.00%/12.50%] https://reviews.llvm.org/D45541 '[globalisel] Update GlobalISel emitter to match new representation of extending loads' by Daniel Sanders
[0.00%/6.25%] https://reviews.llvm.org/D44386 '[x86] Introduce the pconfig/enclv instructions' by Gabor Buella

The first percentage in square brackets is the percentage of lines in
the patch-under-review that changes lines that I wrote. The second
percentage is the percentage of files that I made at least some
changes to out of all of the files touched by the patch-under-review.

Both the script and the heuristics are far from perfect, but I've
heard positive feedback from the few colleagues the script has been
sending a summary to every day - hearing that this does help them to
quickly find patches-under-review they can help to review.

The script takes quite some time to run (I typically see it running
for 2 to 3 hours on weekdays when it gets started by a cron job early
in the morning). There are 2 reasons why it takes a long time:

The REST api into Phabricator isn't very efficient, i.e. a lot of
uninteresting data needs to be fetched. The script tries to reduce this
overhead partly by caching info it has fetched on previous runs, so as
to not have to refetch lots of Phabricator state on each run.
The script uses git blame to find for each line of code in the patch who
wrote the original line of code being altered. git blame is
sloooowww....
Anyway - to run this script:

First install a virtualenv as follows (using Python2.7 - Python3 is
almost certainly not going to work at the moment):
$ virtualenv venv
$ . ./venv/bin/activate
$ pip install Phabricator

Then to run the script, looking for open reviews that could be done by
X.Y@company.com, run (in the venv):
$ python ./find_interesting_reviews.py X.Y@company.com

Please note that "X.Y@company.com" needs to be the exact email address
(capitalization is important) that the git LLVM repository knows the
person as. Multiple email addresses can be specified on the command
line. Note that the script as is will email the results to all email
addresses specified on the command line - so be careful not to spam
people accidentally!

Differential Revision: https://reviews.llvm.org/D46192

llvm-svn: 332711

6 years agoAdd back #ifdef __APPLE__ to RegisterContextDarwin_xxx::NumSupportedHardwareWatchpoints
Pavel Labath [Fri, 18 May 2018 12:54:21 +0000 (12:54 +0000)]
Add back #ifdef __APPLE__ to RegisterContextDarwin_xxx::NumSupportedHardwareWatchpoints

It turns out these class still contained some os-specific functionality,
but I did not notice that originally, as it was #ifdef arm(64). This
adds back the __APPLE__ condition to these particular functions,
unbreaking arm builds on other OSs.

llvm-svn: 332710

6 years agouse standard llvm cmake formatting for targets defined in plugin tests
Nico Weber [Fri, 18 May 2018 12:42:30 +0000 (12:42 +0000)]
use standard llvm cmake formatting for targets defined in plugin tests

llvm-svn: 332709

6 years ago[llvm-exegesis] Improve documentation.
Clement Courbet [Fri, 18 May 2018 12:33:57 +0000 (12:33 +0000)]
[llvm-exegesis] Improve documentation.

Summary:
- Better flag names.
- Fix flag reference in doc.
- Add usage examples in doc.

Fixes PR37497.

Reviewers: gchatelet

Subscribers: llvm-commits, tschuett

Differential Revision: https://reviews.llvm.org/D47015

llvm-svn: 332708

6 years agoStackColoring: better handling of statically unreachable code
Than McIntosh [Fri, 18 May 2018 12:25:30 +0000 (12:25 +0000)]
StackColoring: better handling of statically unreachable code

Summary:
Avoid assert/crash during liveness calculation in situations where the
incoming machine function has statically unreachable BBs.

Fixes PR37130.

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D46265

llvm-svn: 332707

6 years ago[SystemZ] Fix commit message of previous commit.
Jonas Paulsson [Fri, 18 May 2018 12:07:16 +0000 (12:07 +0000)]
[SystemZ]  Fix commit message of previous commit.

Sorry, the commit comment for r332703 is completely broken.
My mind slipped - the right description would be:

In SystemZDAGToDAGISel::Select(), in the handling for SELECT_CCMASK:

Check if UpdateNodeOperands() returns a different SDNode and in that
case call ReplaceNode.

Review: Ulrich Weigand.
llvm-svn: 332706

6 years ago[X86][CET] Changing -fcf-protection behavior to comply with gcc (LLVM part)
Alexander Ivchenko [Fri, 18 May 2018 11:58:25 +0000 (11:58 +0000)]
[X86][CET] Changing -fcf-protection behavior to comply with gcc (LLVM part)

This patch aims to match the changes introduced in gcc by
https://gcc.gnu.org/ml/gcc-cvs/2018-04/msg00534.html. The
IBT feature definition is removed, with the IBT instructions
being freely available on all X86 targets. The shadow stack
instructions are also being made freely available, and the
use of all these CET instructions is controlled by the module
flags derived from the -fcf-protection clang option. The hasSHSTK
option remains since clang uses it to determine availability of
shadow stack instruction intrinsics, but it is no longer directly used.

Comes with a clang patch (D46881).

Patch by mike.dvoretsky

Differential Revision: https://reviews.llvm.org/D46882

llvm-svn: 332705

6 years agoThis patch aims to match the changes introduced
Alexander Ivchenko [Fri, 18 May 2018 11:56:21 +0000 (11:56 +0000)]
This patch aims to match the changes introduced
in gcc by https://gcc.gnu.org/ml/gcc-cvs/2018-04/msg00534.html.
The -mibt feature flag is being removed, and the -fcf-protection
option now also defines a CET macro and causes errors when used
on non-X86 targets, while X86 targets no longer check for -mibt
and -mshstk to determine if -fcf-protection is supported. -mshstk
is now used only to determine availability of shadow stack intrinsics.

Comes with an LLVM patch (D46882).

Patch by mike.dvoretsky

Differential Revision: https://reviews.llvm.org/D46881

llvm-svn: 332704

6 years ago[SystemZ] Fold AHIMux in foldMemoryOperandImpl.
Jonas Paulsson [Fri, 18 May 2018 11:54:04 +0000 (11:54 +0000)]
[SystemZ]  Fold AHIMux in foldMemoryOperandImpl.

AHIMux can be folded the same way as AHI.

Review: Ulrich Weigand
llvm-svn: 332703

6 years agoMake ObjectFileMachO work on non-darwin platforms
Pavel Labath [Fri, 18 May 2018 11:35:46 +0000 (11:35 +0000)]
Make ObjectFileMachO work on non-darwin platforms

Summary:
Before this patch we were unable to write cross-platform MachO tests
because the parsing code did not compile on other platforms. The reason
for that was that ObjectFileMachO depended on
RegisterContextDarwin_arm(64)? (presumably for core file parsing) and
the two Register Context classes uses constants from the system headers
(KERN_SUCCESS, KERN_INVALID_ARGUMENT).

As far as I can tell, these two files don't actually interact with the
darwin kernel -- they are used only in ObjectFileMachO and MacOSX-Kernel
process plugin (even though it has "kernel" in the name, this one
communicates with it via network packets and not syscalls). For the time
being I have created OS-independent definitions of these constants and
made the register context classes use those. Long term, the error
handling in these classes should be probably changed to use more
standard mechanisms such as Status or Error classes.

This is the only change necessary (apart from build system glue) to make
ObjectFileMachO work on other platforms. To demonstrate that, I remove
REQUIRES:darwin from our (only) cross-platform mach-o test.

Reviewers: jasonmolenda, aprantl, clayborg, javed.absar

Subscribers: mgorny, lldb-commits, kristof.beyls

Differential Revision: https://reviews.llvm.org/D46934

llvm-svn: 332702

6 years agoRe-enable a clang-move test on windows.
Eric Liu [Fri, 18 May 2018 09:25:36 +0000 (09:25 +0000)]
Re-enable a clang-move test on windows.

This was fixed by r332612.

llvm-svn: 332701

6 years agoFix _NSCFBoolean data formatter.
Jonas Devlieghere [Fri, 18 May 2018 09:14:45 +0000 (09:14 +0000)]
Fix _NSCFBoolean data formatter.

In r265181 the test for the NSCFBoolean data formatter was removed.
Later, in r279353 and r279446 a new implementation was provided for the
formatter, which I believe never worked (and this wasn't caught because
the test was never re-enabled).

This commit fixes the bug and re-enables the old test case.

Differential revision: https://reviews.llvm.org/D47014

llvm-svn: 332700

6 years agoDo not try to remove invisible Decls from DeclContext
Gabor Marton [Fri, 18 May 2018 09:08:47 +0000 (09:08 +0000)]
Do not try to remove invisible Decls from DeclContext

llvm-svn: 332699

6 years ago[SimplifyCFG] Fix a debug invariant bug in FoldBranchToCommonDest()
David Stenberg [Fri, 18 May 2018 08:52:15 +0000 (08:52 +0000)]
[SimplifyCFG] Fix a debug invariant bug in FoldBranchToCommonDest()

Summary:
Fix a case where FoldBranchToCommonDest() would bail out from doing CSE
when encountering a debug intrinsic. Handle that by skipping past the
debug intrinsics.

Also, as a minor refactoring, rename checkCSEInPredecessor() to
tryCSEWithPredecessor() to make it a bit more clear that the function
may remove instructions.

Reviewers: fhahn, craig.topper, dblaikie, xbolva00

Reviewed By: fhahn, xbolva00

Subscribers: vsk, davide, llvm-commits

Differential Revision: https://reviews.llvm.org/D46635

llvm-svn: 332698

6 years ago[llvm-exegesis] Fix compile error on VS.
Clement Courbet [Fri, 18 May 2018 07:18:56 +0000 (07:18 +0000)]
[llvm-exegesis] Fix compile error on VS.

llvm::BitVector::const_set_bits_iterator is not formally a
ForwardIterator. Using it as such results in compile time errors on some
compilers:

FAILED: unittests/tools/llvm-exegesis/X86/CMakeFiles/LLVMExegesisX86Tests.dir/RegisterAliasingTest.cpp.obj
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xutility(967): error C2794: 'iterator_category': is not a member of any direct or indirect base class of 'std::iterator_traits<_InIt>'
        with
        [
            _InIt=llvm::BitVector::const_set_bits_iterator
        ]

llvm-svn: 332697

6 years ago[RISCV] Add WasForced parameter to MCAsmBackend::fixupNeedsRelaxationAdvanced
Shiva Chen [Fri, 18 May 2018 06:42:21 +0000 (06:42 +0000)]
[RISCV] Add WasForced parameter to MCAsmBackend::fixupNeedsRelaxationAdvanced

For RISCV branch instructions, we need to preserve relocation types when linker
relaxation enabled, so then linker could modify offset when the branch offsets
changed.

We preserve relocation types by define shouldForceRelocation.
IsResolved return by evaluateFixup will always false when shouldForceRelocation
return true. It will make RISCV MC Branch Relaxation always relax 16-bit
branches to 32-bit form, even if the symbol actually could be resolved.

To avoid 16-bit branches always relax to 32-bit form when linker relaxation
enabled, we add a new parameter WasForced to indicate that the symbol actually
couldn't be resolved and not forced by shouldForceRelocation return true.

RISCVAsmBackend::fixupNeedsRelaxationAdvanced could relax branches with
unresolved symbols by (!IsResolved && !WasForced).

RISCV MC Branch Relaxation is needed because RISCV could perform 32-bit
to 16-bit transformation in MC layer.

Differential Revision: https://reviews.llvm.org/D46350

llvm-svn: 332696

6 years ago[LICM] Extend the MustExecute scope
Serguei Katkov [Fri, 18 May 2018 04:56:28 +0000 (04:56 +0000)]
[LICM] Extend the MustExecute scope

CanProveNotTakenFirstIteration utility does not handle the case when
condition of the branch is a constant. Add its handling.

Reviewers: reames, anna, mkazantsev
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D46996

llvm-svn: 332695

6 years ago[X86DomainReassignment] Hopefully fix buildbot failure
Keno Fischer [Fri, 18 May 2018 04:36:38 +0000 (04:36 +0000)]
[X86DomainReassignment] Hopefully fix buildbot failure

The Darwin build bot failed with:
```
llc -mcpu=skylake-avx512 -mtriple=x86_64-unknown-linux-gnu domain-reassignment-test.ll -o - | llvm-mc
--
Exit Code: 134

Command Output (stderr):
--
Assertion failed: (MAI->hasSingleParameterDotFile()), function EmitFileDirective, file lib/MC/MCAsmStreamer.cpp, line 1087.
```

Looks like this is because the `llvm-mc` command was missing a triple
directive and defaulting to MachO. Add the triple option.

llvm-svn: 332694

6 years ago[llvm-objcopy] Fix formatting
Alexander Shaposhnikov [Fri, 18 May 2018 04:18:41 +0000 (04:18 +0000)]
[llvm-objcopy] Fix formatting

Apply clang-format -i -style=llvm to llvm-objcopy.cpp
NFC.

Test plan: make check-all

llvm-svn: 332693

6 years ago[asan] Add instrumentation support for Myriad
Walter Lee [Fri, 18 May 2018 04:10:38 +0000 (04:10 +0000)]
[asan] Add instrumentation support for Myriad

1. Define Myriad-specific ASan constants.

2. Add code to generate an outer loop that checks that the address is
   in DRAM range, and strip the cache bit from the address.  The
   former is required because Myriad has no memory protection, and it
   is up to the instrumentation to range-check before using it to
   index into the shadow memory.

3. Do not add an unreachable instruction after the error reporting
   function; on Myriad such function may return if the run-time has
   not been initialized.

4. Add a test.

Differential Revision: https://reviews.llvm.org/D46451

llvm-svn: 332692

6 years ago[asan] Add target-specific files for Myriad RTEMS port
Walter Lee [Fri, 18 May 2018 04:10:12 +0000 (04:10 +0000)]
[asan] Add target-specific files for Myriad RTEMS port

Differential Revision: https://reviews.llvm.org/D46468

llvm-svn: 332691

6 years ago[asan] Add support for Myriad RTEMS memory map
Walter Lee [Fri, 18 May 2018 04:09:45 +0000 (04:09 +0000)]
[asan] Add support for Myriad RTEMS memory map

The Myriad RTEMS memory system has a few unique aspects that
require support in the ASan run-time.

- A limited amount of memory (currently 512M).

- No virtual memory, no memory protection.

- DRAM starts at address 0x80000000.  Other parts of memory may be
  used for MMIO, etc.

- The second highest address bit is the "cache" bit, and 0x80000000
  and 0x84000000 alias to the same memory.

To support the above, we make the following changes:

- Use a ShadowScale of 5, to reduce shadow memory overhead.

- Adjust some existing macros to remove assumption that the lowest
  memory address is 0.

- add a RawAddr macro that on Myriad strips the cache bit from the
  input address, before using the address for shadow memory (for other
  archs this does nothing).

- We must check that an address is in DRAM range before using it to
  index into shadow memory.

Differential Revision: https://reviews.llvm.org/D46456

llvm-svn: 332690

6 years agoRevert "Temporarily revert "[DEBUG] Initial adaptation of NVPTX target for debug...
Eric Christopher [Fri, 18 May 2018 03:13:08 +0000 (03:13 +0000)]
Revert "Temporarily revert "[DEBUG] Initial adaptation of NVPTX target for debug info emission.""

This reapplies commits: r330271, r330592, r330779.

    [DEBUG] Initial adaptation of NVPTX target for debug info emission.

    Summary:
    Patch adds initial emission of the debug info for NVPTX target.
    Currently, only .file and .loc directives are emitted, everything else is
    commented out to not break the compilation of Cuda.

llvm-svn: 332689

6 years agoMitigate relocation overflow [part 2 of 2]
Han Shen [Fri, 18 May 2018 03:01:06 +0000 (03:01 +0000)]
Mitigate relocation overflow [part 2 of 2]

_init_array_start/end are placed at 0 if no ".init_array" presents,
this causes .text relocation against them become more prone to overflow.
This CL sets ".init_array" address to that of ".text" to mitigate the situation.

Review: https://reviews.llvm.org/D46200
llvm-svn: 332688

6 years agoTidy comment up a bit.
Eric Christopher [Fri, 18 May 2018 02:39:57 +0000 (02:39 +0000)]
Tidy comment up a bit.

llvm-svn: 332687

6 years agoFix unused lambda capture.
Eli Friedman [Fri, 18 May 2018 02:11:25 +0000 (02:11 +0000)]
Fix unused lambda capture.

llvm-svn: 332686

6 years ago[MachineOutliner] Count savings from outlining in bytes.
Eli Friedman [Fri, 18 May 2018 01:52:16 +0000 (01:52 +0000)]
[MachineOutliner] Count savings from outlining in bytes.

Counting the number of instructions is both unintuitive and inaccurate.
On AArch64, this only affects the generated remarks and certain rare
pseudo-instructions, but it will have a bigger impact on other targets.

Differential Revision: https://reviews.llvm.org/D46921

llvm-svn: 332685

6 years ago[CMake] Use <UNIX|WINDOWS>_COMMAND with separate_arguments
Petr Hosek [Fri, 18 May 2018 01:20:47 +0000 (01:20 +0000)]
[CMake] Use <UNIX|WINDOWS>_COMMAND with separate_arguments

NATIVE_COMMAND is only available since CMake 3.9.

llvm-svn: 332684

6 years ago[CMake] Detect the compiler runtime and standard library
Petr Hosek [Fri, 18 May 2018 01:10:09 +0000 (01:10 +0000)]
[CMake] Detect the compiler runtime and standard library

Rather then requiring the user to specify runtime the compiler
runtime and C++ standard library, or trying to guess them which is
error-prone, use auto-detection by parsing the compiler link output.

Differential Revision: https://reviews.llvm.org/D46857

llvm-svn: 332683

6 years ago[X86DomainReassignment] Don't compare stack-allocated values by address
Keno Fischer [Fri, 18 May 2018 01:03:01 +0000 (01:03 +0000)]
[X86DomainReassignment] Don't compare stack-allocated values by address

Summary:
The Closure allocated in the main loop is allocated on the stack. However,
later in the code its address is taken (and used for comparisons). This
obviously doesn't work. In fact, the Closure will get the same stack address
during every loop iteration, rendering the check that intended to identify
Closure conflicts entirely ineffective. Fix this bug by giving every Closure
a unique ID and using that for comparison. Alternatively, we could heap
allocate the closure object.

Fixes PR37396
Fixes JuliaLang/julia#27032

Reviewers: craig.topper, guyblank

Reviewed By: craig.topper

Subscribers: vchuravy, llvm-commits

Differential Revision: https://reviews.llvm.org/D46800

llvm-svn: 332682

6 years ago[sanitizer] Trivial portion of the port to Myriad RTEMS
Walter Lee [Fri, 18 May 2018 00:43:54 +0000 (00:43 +0000)]
[sanitizer] Trivial portion of the port to Myriad RTEMS

This commit contains the trivial portion of the port of ASan to
Myriad RTEMS.
- Whitelist platform in sanitizer_platform.h, ubsan_platform.h
- Turn off general interception
- Use memset for FastPoisonShadow
- Define interception wrappers
- Set errno symbol correctly
- Enable ASAN_LOW_MEMORY
- Enable preinit array
- Disable slow unwinding
- Use fuchsia offline symbolizer
- Disable common code for: InitializeShadowMemory, CreateMainThread,
  AsanThread::ThreadStart, StartReportDeadlySignal,
  MaybeReportNonExecRegion.

Differential Revision: https://reviews.llvm.org/D46454

llvm-svn: 332681

6 years ago[X86DomainReassignment] Don't delete IMPLICIT_DEF nodes
Keno Fischer [Fri, 18 May 2018 00:40:52 +0000 (00:40 +0000)]
[X86DomainReassignment] Don't delete IMPLICIT_DEF nodes

Summary:
We cannot simply delete IMPLICIT_DEF nodes. They may be used
later (e.g. by a PHI) and deleting them will cause later passes (e.g.
LiveVariables) to crash. However, it seems fine to ignore them for
purposes of the domain reassignment (as we do with PHI).

Fixes PR37430
Fixes JuliaLang/julia#27080

Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D46797

llvm-svn: 332680

6 years ago[CMake] Reland "Make simple source used for CMake checks a C file"
Petr Hosek [Thu, 17 May 2018 23:50:35 +0000 (23:50 +0000)]
[CMake] Reland "Make simple source used for CMake checks a C file"

The source being compiled is plain C, but using .cc extension forces it
to be compiled as C++ which requires a working C++ compiler including
C++ library which may not be the case when we're building compiler-rt
together with libcxx as part of runtimes build.

Differential Revision: https://reviews.llvm.org/D47031

llvm-svn: 332679

6 years agoAdd initial support for half precision builtins
Jan Vesely [Thu, 17 May 2018 22:55:30 +0000 (22:55 +0000)]
Add initial support for half precision builtins

v2: fix fmax implementation
    use consistent checks for __CLC_FP_SIZE
    add missing TODOs
    fix whitespace in definitions.h
v3: undef ZERO in modf.inc

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
reviewer: Jeroen Ketema <j.ketema@xs4all.nl>
Reviewed-by: Aaron Watry <awatry@gmail.com>
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 332677

6 years agoResubmit [pdb] Change /DEBUG:GHASH to emit 8 byte hashes."
Zachary Turner [Thu, 17 May 2018 22:55:15 +0000 (22:55 +0000)]
Resubmit [pdb] Change /DEBUG:GHASH to emit 8 byte hashes."

This fixes the remaining failing tests, so resubmitting with no
functional change.

llvm-svn: 332676

6 years agoSupport: Add a raw_ostream::write_zeros() function. NFCI.
Peter Collingbourne [Thu, 17 May 2018 22:11:43 +0000 (22:11 +0000)]
Support: Add a raw_ostream::write_zeros() function. NFCI.

This will eventually replace MCObjectWriter::WriteZeros.

Part of PR37466.

Differential Revision: https://reviews.llvm.org/D47033

llvm-svn: 332675

6 years agoRevert r332657: "[AA] cfl-anders-aa with field sensitivity"
George Burgess IV [Thu, 17 May 2018 21:56:39 +0000 (21:56 +0000)]
Revert r332657: "[AA] cfl-anders-aa with field sensitivity"

I don't believe the person who LGTMed this review has appropriate
context on this code. I apologize if I'm wrong.

llvm-svn: 332674

6 years agoAMDGPU/SI: Don't promote alloca to vector for atomic load/store
Changpeng Fang [Thu, 17 May 2018 21:49:44 +0000 (21:49 +0000)]
AMDGPU/SI: Don't promote alloca to vector for atomic load/store

Summary:
  Don't promote alloca to vector for atomic load/store

Reviewer:
  arsenm

Differential Revision:
  https://reviews.llvm.org/D46085

llvm-svn: 332673

6 years agoRevert "[pdb] Change /DEBUG:GHASH to emit 8 byte hashes."
Zachary Turner [Thu, 17 May 2018 21:49:25 +0000 (21:49 +0000)]
Revert "[pdb] Change /DEBUG:GHASH to emit 8 byte hashes."

A few tests haven't been properly updated, so reverting while
I have time to investigate proper fixes.

llvm-svn: 332672

6 years ago[Windows, Process] LLDB reads wrong registers on 64bit Windows
Stella Stamenova [Thu, 17 May 2018 21:42:37 +0000 (21:42 +0000)]
[Windows, Process] LLDB reads wrong registers on 64bit Windows

Summary: LLDB reads wrong registers on 64bit Windows because RegisterContextWindows_x64::GetRegisterInfoAtIndex returns wrong reference.
I encountered broken backtrace when the program stopped at function which does not have prologue code, such as compiled with '-fomit-frame-pointer'.
In this situation, CFA is equal to rsp but LLDB reads r9.

RegisterContextWindows_x64::GetRegisterInfoAtIndex depends the order of lldb_XXX_x86_64 values, but RegisterIndex/g_register_infos/g_gpr_reg_indices does not follow order.

In source/Plugins/Process/Utility/lldb-x86-register-enums.h
The order of GPRs is rax, rbx, rcx, rdx, rdi, rsi, rbp, rsp, r8, ...

In source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp
The order of GPRs is rax, rbx, rcx, rdx, rdi, rsi, r8, r9, r10, ...

Patch by Kenji Koyanagi

llvm-svn: 332671

6 years ago[Windows, Process] Fix an issue in windows thread handling that was causing LLDB...
Stella Stamenova [Thu, 17 May 2018 21:34:24 +0000 (21:34 +0000)]
[Windows, Process] Fix an issue in windows thread handling that was causing LLDB to hang

Summary: The function ResumeThread on Windows returns a DWORD which is an unsigned int. In TargetThreadWindows::DoResume, there's code that determines how many times to call ResumeThread based on whether the return value is greater than 0. Since the function returns -1 (as an unsigned int) on failure, this was getting stuck in an infinite loop if ResumeThread failed for any reason. The correct thing to do is check whether the return value is -1 and then return the appropriate error instead of ignoring the return value.

Reviewers: asmith, zturner, labath

Reviewed By: zturner

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D47020

llvm-svn: 332670

6 years ago[pdb] Change /DEBUG:GHASH to emit 8 byte hashes.
Zachary Turner [Thu, 17 May 2018 21:22:48 +0000 (21:22 +0000)]
[pdb] Change /DEBUG:GHASH to emit 8 byte hashes.

Previously we emitted 20-byte SHA1 hashes.  This is overkill
for identifying debug info records, and has the negative side
effect of making object files bigger and links slower.  By
using only the last 8 bytes of a SHA1, we get smaller object
files and ~10% faster links.

This modifies the format of the .debug$H section by adding a new
value for the hash algorithm field, so that the linker will still
work when its object files have an old format.

Differential Revision: https://reviews.llvm.org/D46855

llvm-svn: 332669

6 years agoFix lld wasm debug info test on Windows (path separator, sigh)
Reid Kleckner [Thu, 17 May 2018 21:10:31 +0000 (21:10 +0000)]
Fix lld wasm debug info test on Windows (path separator, sigh)

llvm-svn: 332668

6 years ago[WebAssembly] Add Wasm personality and isScopedEHPersonality()
Heejin Ahn [Thu, 17 May 2018 20:52:03 +0000 (20:52 +0000)]
[WebAssembly] Add Wasm personality and isScopedEHPersonality()

Summary:
- Add wasm personality function
- Re-categorize the existing `isFuncletEHPersonality()` function into
two different functions: `isFuncletEHPersonality()` and
`isScopedEHPersonality(). This becomes necessary as wasm EH uses scoped
EH instructions (catchswitch, catchpad/ret, and cleanuppad/ret) but not
outlined funclets.
- Changed some callsites of `isFuncletEHPersonality()` to
`isScopedEHPersonality()` if they are related to scoped EH IR-level
stuff.

Reviewers: majnemer, dschuff, rnk

Subscribers: jfb, sbc100, jgravelle-google, eraman, JDevlieghere, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D45559

llvm-svn: 332667

6 years ago[ORC] Consolidate materialization errors, and generate them in VSO's
Lang Hames [Thu, 17 May 2018 20:48:58 +0000 (20:48 +0000)]
[ORC] Consolidate materialization errors, and generate them in VSO's
notifyFailed method rather than passing in an error generator.

VSO::notifyFailed is responsible for notifying queries that they will not
succeed due to error. In practice the queries don't care about the details
of the failure, just the fact that a failure occurred for some symbols.
Having VSO::notifyFailed take care of this simplifies the interface.

llvm-svn: 332666

6 years ago[ORC] Make MaterializationResponsibility's constructor private.
Lang Hames [Thu, 17 May 2018 20:48:50 +0000 (20:48 +0000)]
[ORC] Make MaterializationResponsibility's constructor private.

MaterializationResponsibility instances should be created by
MaterializationUnits only. Making the constructor private enforces this.

llvm-svn: 332665

6 years ago[codeview] Include record prefix in global type hashing
Reid Kleckner [Thu, 17 May 2018 20:47:22 +0000 (20:47 +0000)]
[codeview] Include record prefix in global type hashing

The prefix includes type kind, which is important to preserve. Two
different type leafs can easily have the same interior record contents
as another type.

We ran into this issue in PR37492 where a bitfield type record collided
with a const modifier record. Their contents were bitwise identical, but
their kinds were different.

llvm-svn: 332664

6 years agoARC, Nios2: Silence build warnings. NFCI.
Peter Collingbourne [Thu, 17 May 2018 20:46:01 +0000 (20:46 +0000)]
ARC, Nios2: Silence build warnings. NFCI.

llvm-svn: 332663

6 years ago[CMake] Cleanup find_compiler_rt_library function [NFC]
Petr Hosek [Thu, 17 May 2018 20:35:55 +0000 (20:35 +0000)]
[CMake] Cleanup find_compiler_rt_library function [NFC]

Rename the output variable and remove the unnecessary set call.

llvm-svn: 332661

6 years agoFix typo in error message.
Rui Ueyama [Thu, 17 May 2018 20:25:35 +0000 (20:25 +0000)]
Fix typo in error message.

llvm-svn: 332658

6 years ago[AA] cfl-anders-aa with field sensitivity
David Bolvansky [Thu, 17 May 2018 20:23:33 +0000 (20:23 +0000)]
[AA] cfl-anders-aa with field sensitivity

Summary:
There was some unfinished work started for offset tracking in CFLGraph by the author of implementation of Andersen algorithm. This work was completed and support for field sensitivity was added to the core of Andersen algorithm.

The performance results seem promising.

SPEC2006 int_base score was increased by 1.1 % (I  compared clang 6.0 with clang 6.0 with this patch). The avergae compile time was increased by +- 1 % according my measures with small and medium C/C++ projects (I did not tested it on the large projects with milions of lines of code)

Reviewers: chandlerc, george.burgess.iv, rja

Reviewed By: rja

Subscribers: rja, llvm-commits

Differential Revision: https://reviews.llvm.org/D46282

llvm-svn: 332657

6 years agoMake ALIGN work with -r in linker scripts
Rui Ueyama [Thu, 17 May 2018 20:22:39 +0000 (20:22 +0000)]
Make ALIGN work with -r in linker scripts

Patch by Mark Kettenis.

Make ALIGN work in linker scripts used with the -r option. This works in
GNU ld (ld.bfd) and is used to generate the "random gap" object for
linking the OpenBSD kernel.

Differential Revision: https://reviews.llvm.org/D46839

llvm-svn: 332656

6 years ago[LV][VPlan] Build plain CFG with simple VPInstructions for outer loops.
Diego Caballero [Thu, 17 May 2018 19:24:47 +0000 (19:24 +0000)]
[LV][VPlan] Build plain CFG with simple VPInstructions for outer loops.

Patch #3 from VPlan Outer Loop Vectorization Patch Series #1
(RFC: http://lists.llvm.org/pipermail/llvm-dev/2017-December/119523.html).

Expected to be NFC for the current inner loop vectorization path. It
introduces the basic algorithm to build the VPlan plain CFG (single-level
CFG, no hierarchical CFG (H-CFG), yet) in the VPlan-native vectorization
path using VPInstructions. It includes:
  - VPlanHCFGBuilder: Main class to build the VPlan H-CFG (plain CFG without nested regions, for now).
  - VPlanVerifier: Main class with utilities to check the consistency of a H-CFG.
  - VPlanBlockUtils: Main class with utilities to manipulate VPBlockBases in VPlan.

Reviewers: rengolin, fhahn, mkuper, mssimpso, a.elovikov, hfinkel, aprantl.

Differential Revision: https://reviews.llvm.org/D44338

llvm-svn: 332654

6 years agoAdd a limit for phi folding instcombine
Xinliang David Li [Thu, 17 May 2018 19:24:03 +0000 (19:24 +0000)]
Add a limit for phi folding instcombine

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

llvm-svn: 332653

6 years ago[llvm-mca] Make Dispatch a subclass of Stage.
Matt Davis [Thu, 17 May 2018 19:22:29 +0000 (19:22 +0000)]
[llvm-mca] Make Dispatch a subclass of Stage.

Summary:
The logic of dispatch remains the same, but now DispatchUnit is a Stage (DispatchStage).

This change has the benefit of simplifying the backend runCycle() code.
The same logic applies, but it belongs to different components now.  This is just a start,
eventually we will need to remove the call to the DispatchStage in Scheduler.cpp, but
that will be a separate patch.  This change is mostly a renaming and moving of existing logic.

This change also encouraged me to remove the Subtarget (STI) member from the
Backend class.  That member was used to initialize the other members of Backend
and to eventually call DispatchUnit::dispatch().  Now that we have Stages, we
can eliminate this by instantiating the DispatchStage with everything it needs
at the time of construction (e.g., Subtarget).  That change allows us to call
DispatchStage::execute(IR) as we expect to call execute() for all other stages.

Once we add the Stage list (D46907) we can more cleanly call preExecute() on
all of the stages, DispatchStage, will probably wrap cycleEvent() in that
case.

Made some formatting and minor cleanups to README.txt.  Some of the text
was re-flowed to stay within 80 cols.

Reviewers: andreadb, courbet, RKSimon

Reviewed By: andreadb, courbet

Subscribers: mgorny, javed.absar, tschuett, gbedwell, llvm-commits

Differential Revision: https://reviews.llvm.org/D46983

llvm-svn: 332652

6 years ago[x86] preserve test intent by removing undef
Sanjay Patel [Thu, 17 May 2018 18:43:44 +0000 (18:43 +0000)]
[x86] preserve test intent by removing undef

We need to clean up the DAG floating-point undef logic.
This process is similar to how we handled integer undef
logic in https://reviews.llvm.org/D43141.

And as we did there, I'm trying to reduce the patch by
changing tests that would probably become meaningless
once we correct FP undef folding.

llvm-svn: 332648

6 years ago[builtins][macos] bump up the the macOS version min in os_version_check tests
Alex Lorenz [Thu, 17 May 2018 18:41:38 +0000 (18:41 +0000)]
[builtins][macos] bump up the the macOS version min in os_version_check tests

This ensures that the tests link with the latest OS.

llvm-svn: 332647

6 years agoAdd missing test case for r332639
Reid Kleckner [Thu, 17 May 2018 18:34:05 +0000 (18:34 +0000)]
Add missing test case for r332639

llvm-svn: 332646

6 years ago[llvm-pdbutil] Dump struct/class/union sizes in the minimal dump format
Reid Kleckner [Thu, 17 May 2018 18:33:42 +0000 (18:33 +0000)]
[llvm-pdbutil] Dump struct/class/union sizes in the minimal dump format

llvm-svn: 332645

6 years agoImprove error message for -thinlto-object-suffix-replace and simplify code.
Rui Ueyama [Thu, 17 May 2018 18:27:12 +0000 (18:27 +0000)]
Improve error message for -thinlto-object-suffix-replace and simplify code.

llvm-svn: 332643

6 years ago[Debugify] Print the output to stderr
Anastasis Grammenos [Thu, 17 May 2018 18:19:58 +0000 (18:19 +0000)]
[Debugify] Print the output to stderr

Currently debugify prints it's output to stdout,
with this patch all the output generated goes to stderr.

This change lets us use debugify without taking away
the ability to pipe the output to other llvm tools.

llvm-svn: 332642

6 years ago[RISCV] Separate base from offset in lowerGlobalAddress
Sameer AbuAsal [Thu, 17 May 2018 18:14:53 +0000 (18:14 +0000)]
[RISCV] Separate base from offset in lowerGlobalAddress

Summary:
When lowering global address, lower the base as a TargetGlobal first then
 create an SDNode for the offset separately and chain it to the address calculation

 This optimization will create a DAG where the base address of a global access will
 be reused between different access. The offset can later be folded into the immediate
 part of the memory access instruction.

  With this optimization we generate:

    lui a0, %hi(s)
    addi a0, a0, %lo(s) ; shared base address.

    addi a1, zero, 20 ; 2 instructions per access.
    sw a1, 44(a0)

    addi a1, zero, 10
    sw a1, 8(a0)

    addi a1, zero, 30
    sw a1, 80(a0)

    Instead of:

    lui a0, %hi(s+44) ; 3 instructions per access.
    addi a1, zero, 20
    sw a1, %lo(s+44)(a0)

    lui a0, %hi(s+8)
    addi a1, zero, 10
    sw a1, %lo(s+8)(a0)

    lui a0, %hi(s+80)
    addi a1, zero, 30
    sw a1, %lo(s+80)(a0)

    Which will save one instruction per access.

Reviewers: asb, apazos

Reviewed By: asb

Subscribers: rbar, johnrusso, simoncook, jordy.potman.lists, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, apazos, asb, llvm-commits

Differential Revision: https://reviews.llvm.org/D46989

llvm-svn: 332641

6 years ago[x86] preserve test intent by removing undef
Sanjay Patel [Thu, 17 May 2018 18:13:58 +0000 (18:13 +0000)]
[x86] preserve test intent by removing undef

We need to clean up the DAG floating-point undef logic.
This process is similar to how we handled integer undef
logic in https://reviews.llvm.org/D43141.

And as we did there, I'm trying to reduce the patch by
changing tests that would probably become meaningless
once we correct FP undef folding.

llvm-svn: 332640

6 years agoFix a mangling failure on clang-cl C++17
Reid Kleckner [Thu, 17 May 2018 18:12:18 +0000 (18:12 +0000)]
Fix a mangling failure on clang-cl C++17

MethodVFTableLocations in MigrosoftVTableContext contains canonicalized
decl. But, it's sometimes asked to lookup for non-canonicalized decl,
and that causes assertion failure, and compilation failure.

Fixes PR37481.

Patch by Taiju Tsuiki!

Differential Revision: https://reviews.llvm.org/D46929

llvm-svn: 332639

6 years ago[ARM] preserve test intent by removing undef
Sanjay Patel [Thu, 17 May 2018 18:09:56 +0000 (18:09 +0000)]
[ARM] preserve test intent by removing undef

We need to clean up the DAG floating-point undef logic.
This process is similar to how we handled integer undef
logic in https://reviews.llvm.org/D43141.

And as we did there, I'm trying to reduce the patch by
changing tests that would probably become meaningless
once we correct FP undef folding.

llvm-svn: 332638

6 years ago[ARM] preserve test intent by removing undef
Sanjay Patel [Thu, 17 May 2018 18:08:27 +0000 (18:08 +0000)]
[ARM] preserve test intent by removing undef

We need to clean up the DAG floating-point undef logic.
This process is similar to how we handled integer undef
logic in https://reviews.llvm.org/D43141.

And as we did there, I'm trying to reduce the patch by
changing tests that would probably become meaningless
once we correct FP undef folding.

Follow-up to:
https://reviews.llvm.org/rL332538
...because that change wasn't enough.

llvm-svn: 332637

6 years ago[AArch64] preserve test intent by removing undef
Sanjay Patel [Thu, 17 May 2018 18:07:02 +0000 (18:07 +0000)]
[AArch64] preserve test intent by removing undef

We need to clean up the DAG floating-point undef logic.
This process is similar to how we handled integer undef
logic in D43141.

And as we did there, I'm trying to reduce the patch by
changing tests that would probably become meaningless
once we correct FP undef folding.

Follow-up to:
https://reviews.llvm.org/rL332534
...because that change wasn't enough.

llvm-svn: 332636

6 years ago[sanitizer] Don't add --export-dynamic for Myriad
Walter Lee [Thu, 17 May 2018 18:04:39 +0000 (18:04 +0000)]
[sanitizer] Don't add --export-dynamic for Myriad

This is to work around a bug in some versions of gnu ld, where
--export-dynamic implies -shared even if -static is explicitly given.
Myriad supports static linking only, so --export-dynamic is never
needed.

Differential Revision: https://reviews.llvm.org/D46452

llvm-svn: 332635

6 years ago[RISCV] Implement MC layer support for the tail pseudoinstruction
Mandeep Singh Grang [Thu, 17 May 2018 17:31:27 +0000 (17:31 +0000)]
[RISCV] Implement MC layer support for the tail pseudoinstruction

Summary:
This patch implements MC support for tail psuedo instruction.
A follow-up patch implements the codegen support as well as handling of the indirect tail pseudo instruction.

Reviewers: asb, apazos

Reviewed By: asb

Subscribers: rbar, johnrusso, simoncook, jordy.potman.lists, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, llvm-commits

Differential Revision: https://reviews.llvm.org/D46221

llvm-svn: 332634