platform/upstream/llvm.git
5 years ago[lldb] Add support in Status::AsCString to retrieve win32 system error strings
Aaron Smith [Fri, 19 Oct 2018 18:58:24 +0000 (18:58 +0000)]
[lldb] Add support in Status::AsCString to retrieve win32 system error strings

Reviewers: rnk, zturner, aleksandr.urakov

Subscribers: lldb-commits

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

llvm-svn: 344798

5 years ago[llvm-mca] Remove a stale TODO comment. NFC
Andrea Di Biagio [Fri, 19 Oct 2018 18:39:29 +0000 (18:39 +0000)]
[llvm-mca] Remove a stale TODO comment. NFC

Starting from revision r344334, we can now describe optimizable
register-register moves in the machine scheduling models.

llvm-svn: 344797

5 years ago[ConstantFolding] Constant fold minimum and maximum intrinsics
Thomas Lively [Fri, 19 Oct 2018 18:15:32 +0000 (18:15 +0000)]
[ConstantFolding] Constant fold minimum and maximum intrinsics

Summary: Depends on D52764

Reviewers: aheejin, dschuff

Subscribers: llvm-commits

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

llvm-svn: 344796

5 years ago[Driver] Reland: Default Android toolchains to libc++.
Dan Albert [Fri, 19 Oct 2018 18:06:02 +0000 (18:06 +0000)]
[Driver] Reland: Default Android toolchains to libc++.

The sanitizer builder that was broken by this should now be fixed.

Original review was https://reviews.llvm.org/D53109

llvm-svn: 344795

5 years ago[dwarfdump] Hide ranges in diff-mode.
Jonas Devlieghere [Fri, 19 Oct 2018 17:57:53 +0000 (17:57 +0000)]
[dwarfdump] Hide ranges in diff-mode.

llvm-dwarfdump --diff should not print DW_AT_ranges. This patch fixes
that.

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

llvm-svn: 344794

5 years ago[InstCombine] use m_Neg() in dyn_castNegVal() to match vectors with undef elts
Sanjay Patel [Fri, 19 Oct 2018 17:54:53 +0000 (17:54 +0000)]
[InstCombine] use m_Neg() in dyn_castNegVal() to match vectors with undef elts

llvm-svn: 344793

5 years ago[Hexagon] Remove support for V4
Krzysztof Parzyszek [Fri, 19 Oct 2018 17:31:11 +0000 (17:31 +0000)]
[Hexagon] Remove support for V4

llvm-svn: 344791

5 years ago[InstCombine] move/add tests for sub/neg; NFC
Sanjay Patel [Fri, 19 Oct 2018 17:26:22 +0000 (17:26 +0000)]
[InstCombine] move/add tests for sub/neg; NFC

These should all be handled using "dyn_castNegVal",
but that misses vectors with undef elements.

llvm-svn: 344790

5 years agoJava annotation declaration being handled correctly
Hans Wennborg [Fri, 19 Oct 2018 16:19:52 +0000 (16:19 +0000)]
Java annotation declaration being handled correctly

Previously, Java annotation declarations (@interface AnnotationName) were being
handled as ObjC interfaces. This caused the brace formatting to mess up, so
that when you had a class with an interface defined in it, it would indent the
final brace of the class.

It used to format this class like so:

  class A {
    @interface B {}
    }

But will now just skip the @interface and format it like so:

  class A {
    @interface B {}
  }

Patch by Sam Maier!

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

llvm-svn: 344789

5 years ago[lldbsuite, windows] Disable two tail call frames tests that fail on Windows
Stella Stamenova [Fri, 19 Oct 2018 16:00:58 +0000 (16:00 +0000)]
[lldbsuite, windows] Disable two tail call frames tests that fail on Windows

Summary: These tests fail on Windows because of known limitations (a.k.a. bugs) with the current implementation of GetFrameAtIndex

Reviewers: asmith, vsk

Reviewed By: vsk

Subscribers: abidh, lldb-commits

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

llvm-svn: 344788

5 years ago[clangd] Set workspace root when initializing ClangdServer, disallow mutation.
Sam McCall [Fri, 19 Oct 2018 15:42:23 +0000 (15:42 +0000)]
[clangd] Set workspace root when initializing ClangdServer, disallow mutation.

Summary:
Rename instance variable to WorkspaceRoot to match what we call it internally.

Add fixme to set it automatically. Don't do it yet, clients have assumptions
that the constructor won't access the FS.

Don't second-guess the provided root.

Reviewers: ioeric

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344787

5 years ago[Hexagon] Remove support for V4
Krzysztof Parzyszek [Fri, 19 Oct 2018 15:36:45 +0000 (15:36 +0000)]
[Hexagon] Remove support for V4

llvm-svn: 344786

5 years ago[clang-tidy] Resolve readability-else-after-return false positive for constexpr if.
Marek Kurdej [Fri, 19 Oct 2018 15:26:17 +0000 (15:26 +0000)]
[clang-tidy] Resolve readability-else-after-return false positive for constexpr if.

Summary:
It fixes the false positive when using constexpr if and where else cannot be removed:

Example:
```
  if constexpr (sizeof(int) > 4)
    // ...
    return /* ... */;
  else // This else cannot be removed.
    // ...
    return /* ... */;
```

Reviewers: alexfh, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: lebedev.ri, xazax.hun, cfe-commits

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

llvm-svn: 344785

5 years ago[ASTImporter] Removed uneeded default case label.
Balazs Keri [Fri, 19 Oct 2018 15:16:51 +0000 (15:16 +0000)]
[ASTImporter] Removed uneeded default case label.

llvm-svn: 344784

5 years ago[ASTImporter] Added error handling for AST import.
Balazs Keri [Fri, 19 Oct 2018 13:32:20 +0000 (13:32 +0000)]
[ASTImporter] Added error handling for AST import.

Summary:
The goal of this change is to make the ASTImporter::Import functions return
llvm::Expected instead of the imported type.
As first part the ASTNodeImporter visit functions are updated to return with
llvm::Expected. Various `import` functions are added to ASTNodeImporter to
simplify the code and have a common place for interface towards ASTImporter
(from ASTNodeImporter). There is some temporary code that is needed before
ASTImporter is updated.

Reviewers: a.sidorin, a_sidorin, xazax.hun

Reviewed By: a_sidorin

Subscribers: dkrupp, Szelethus, rnkovacs, martong, jfb, cfe-commits

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

llvm-svn: 344783

5 years ago[llvm-exegesis] Mark second-form X87 instructions as unsupported.
Clement Courbet [Fri, 19 Oct 2018 12:24:49 +0000 (12:24 +0000)]
[llvm-exegesis] Mark second-form X87 instructions as unsupported.

Summary:
We only support the first form because we rely on information that is
only available there.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

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

llvm-svn: 344782

5 years ago[MC][DWARF][AsmParser] Ensure nested CFI frames are diagnosed.
Kristina Brooks [Fri, 19 Oct 2018 12:14:30 +0000 (12:14 +0000)]
[MC][DWARF][AsmParser] Ensure nested CFI frames are diagnosed.

This avoids a crash (with asserts) or bad codegen (without asserts)
in Dwarf streamer later on. This patch fixes this condition in
MCStreamer and propogates SMLoc down when it's available with an
added bonus of source locations for those specific types of errors.

Further patches could use similar improvements as currently most
non-Windows CFI directives lack an SMLoc parameter.

Modified an existing test to verify source location propogation and
added an object-file version of it to verify that it does not crash in
addition to a standalone test to only ensure it does not crash.

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

llvm-svn: 344781

5 years ago[llvm-exegesis] Re-enable liveliness tracker.
Clement Courbet [Fri, 19 Oct 2018 12:08:05 +0000 (12:08 +0000)]
[llvm-exegesis] Re-enable liveliness tracker.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

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

llvm-svn: 344780

5 years ago[llvm-exegesis] X87 RFP setup code.
Clement Courbet [Fri, 19 Oct 2018 09:56:54 +0000 (09:56 +0000)]
[llvm-exegesis] X87 RFP setup code.

Summary:
This was lost during refactoring in rL342644.

Fix and simplify simplify value size handling: always go through a 80 bit value,
because the value can be 1 byte). Add unit tests.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

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

llvm-svn: 344779

5 years ago[OpenCL] Remove unwanted signedness conversion from tests
Marco Antognini [Fri, 19 Oct 2018 09:01:37 +0000 (09:01 +0000)]
[OpenCL] Remove unwanted signedness conversion from tests

The get_kernel_* functions used in cl20-device-side-enqueue.cl all return
unsigned integers. This patch avoids undesired implicit conversions on the
returned values.

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

llvm-svn: 344778

5 years ago[clangd] Remove the overflow log.
Haojian Wu [Fri, 19 Oct 2018 08:35:24 +0000 (08:35 +0000)]
[clangd] Remove the overflow log.

Summary:
LLVM codebase has generated files (all are build/Target/XXX/*.inc) that
exceed the MaxLine & MaxColumn. Printing these log would be noisy.

Reviewers: sammccall

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344777

5 years ago[COFF] Fix error handling on duplicates for import library symbols
Martin Storsjo [Fri, 19 Oct 2018 06:39:36 +0000 (06:39 +0000)]
[COFF] Fix error handling on duplicates for import library symbols

Normally one wouldn't run into that case, but it is possible with
a little creative ordering of special libraries.

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

llvm-svn: 344776

5 years ago[pipeliner] Fix test added in rL344748 to require asserts
Fangrui Song [Fri, 19 Oct 2018 06:20:01 +0000 (06:20 +0000)]
[pipeliner] Fix test added in rL344748 to require asserts

llvm-svn: 344775

5 years agoUse llvm::{all,any,none}_of instead std::{all,any,none}_of. NFC
Fangrui Song [Fri, 19 Oct 2018 06:12:02 +0000 (06:12 +0000)]
Use llvm::{all,any,none}_of instead std::{all,any,none}_of. NFC

llvm-svn: 344774

5 years ago[clangd] Fix msan failure after r344735 by initializing bitfields
Krasimir Georgiev [Fri, 19 Oct 2018 06:05:32 +0000 (06:05 +0000)]
[clangd] Fix msan failure after r344735 by initializing bitfields

That revision changed integer members to bitfields; the integers were
default initialized before and the bitfields lost that default
initialization. This started causing msan use-of-uninitialized memory in
clangd tests.

llvm-svn: 344773

5 years ago[clang-tidy] readability-uppercase-literal-suffix: specify target for ms test too
Roman Lebedev [Fri, 19 Oct 2018 06:04:07 +0000 (06:04 +0000)]
[clang-tidy] readability-uppercase-literal-suffix: specify target for ms test too

Apparently the bots were still failing with this.
Sadly, i did not see *this* failure when i last looked.

llvm-svn: 344772

5 years agoRevert commit r344670 as the test fails on a bot http://lab.llvm.org:8011/builders...
Douglas Yung [Fri, 19 Oct 2018 04:09:32 +0000 (04:09 +0000)]
Revert commit r344670 as the test fails on a bot lab.llvm.org:8011/builders/clang-cmake-armv7-full/builds/2683/.

llvm-svn: 344771

5 years ago[CodeGen] Fix for PR39094.
Hsiangkai Wang [Fri, 19 Oct 2018 01:52:54 +0000 (01:52 +0000)]
[CodeGen] Fix for PR39094.

When using MachineInstr to get SlotIndex, the MI could not be a debug
instruction. mi2iMap does not contain debug instructions in it.

After enabling DBG_LABEL in the generated code, the first instruction in
the bundle may be a debug instruction. In this patch, I use the first
non-debug instruction in the bundle to query SlotIndex in mi2iMap.

Bugzilla report: https://bugs.llvm.org/show_bug.cgi?id=39094

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

llvm-svn: 344770

5 years ago[TI removal] Remove `TerminatorInst` from the IR type system!
Chandler Carruth [Fri, 19 Oct 2018 00:22:37 +0000 (00:22 +0000)]
[TI removal] Remove `TerminatorInst` from the IR type system!

llvm-svn: 344769

5 years ago[TI removal] Switch some newly added code over to use `Instruction`
Chandler Carruth [Fri, 19 Oct 2018 00:22:10 +0000 (00:22 +0000)]
[TI removal] Switch some newly added code over to use `Instruction`
directly.

llvm-svn: 344768

5 years ago[COFF, ARM64] Enable unit test arm64-microsoft-status-reg.cpp only for aarch64 target
Mandeep Singh Grang [Fri, 19 Oct 2018 00:05:26 +0000 (00:05 +0000)]
[COFF, ARM64] Enable unit test arm64-microsoft-status-reg.cpp only for aarch64 target

This should unbreak bots broken here:
http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/14391
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/38288

llvm-svn: 344767

5 years agoUpdate the project name in README.md
Greg Bedwell [Fri, 19 Oct 2018 00:03:01 +0000 (00:03 +0000)]
Update the project name in README.md

Per llvm.org: "The name "LLVM" itself is not an acronym; it is the full
name of the project."

llvm-svn: 344766

5 years ago[COFF, ARM64] Add _ReadStatusReg and_WriteStatusReg intrinsics
Mandeep Singh Grang [Thu, 18 Oct 2018 23:35:35 +0000 (23:35 +0000)]
[COFF, ARM64] Add _ReadStatusReg and_WriteStatusReg intrinsics

Reviewers: rnk, compnerd, mstorsjo, efriedma, TomTan, haripul, javed.absar

Reviewed By: efriedma

Subscribers: dmajor, kristof.beyls, chrib, cfe-commits

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

llvm-svn: 344765

5 years ago[TI removal] Update the C API for the move away from `TerminatorInst`.
Chandler Carruth [Thu, 18 Oct 2018 23:03:55 +0000 (23:03 +0000)]
[TI removal] Update the C API for the move away from `TerminatorInst`.

This updates the C API for the removal of `TerminatorInst`. It converts
the type query to a predicate query and moves the generic methods to
work on `Instruction` instances that satisfy this predicate rather than
requiring a specific type. It also clarifies that the C API wrapping
`BasicBlock::getTerminator` just returns an `Instruction`. Because this
was always wrapped opaquely as a value and the functions consuming these
values will work on `Instruction` objects, this shouldn't break any
clients.

This is a completely compatible change to the C API.

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

llvm-svn: 344764

5 years ago[ORC] Add a createJITDylib method to LLJIT.
Lang Hames [Thu, 18 Oct 2018 22:42:32 +0000 (22:42 +0000)]
[ORC] Add a createJITDylib method to LLJIT.

Because I'm about to get on stage at the dev meeting and claim that it exists.

This method creates a JITDylib instance with the given name and returns a
reference to it.

llvm-svn: 344763

5 years ago[Test] Fix test file for C++98 mode
David Bolvansky [Thu, 18 Oct 2018 21:26:01 +0000 (21:26 +0000)]
[Test] Fix test file for C++98 mode

llvm-svn: 344762

5 years ago[Diagnostics] Add missing expected warning to test file
David Bolvansky [Thu, 18 Oct 2018 21:06:14 +0000 (21:06 +0000)]
[Diagnostics] Add missing expected warning to test file

llvm-svn: 344761

5 years ago[clang-tidy] readability-uppercase-literal-suffix: specify target for opencl test
Roman Lebedev [Thu, 18 Oct 2018 20:59:03 +0000 (20:59 +0000)]
[clang-tidy] readability-uppercase-literal-suffix: specify target for opencl test

I'm not sure if it will actually help or not.
ppc64be-clang-lnt-test bot is failing.

llvm-svn: 344760

5 years ago[Diagnostics] Check for integer overflow in array size expressions
David Bolvansky [Thu, 18 Oct 2018 20:49:06 +0000 (20:49 +0000)]
[Diagnostics] Check for integer overflow in array size expressions

Summary: Fixes PR27439

Reviewers: rsmith, Rakete1111

Reviewed By: rsmith

Subscribers: Rakete1111, cfe-commits

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

llvm-svn: 344759

5 years ago[clang-tidy] readability-uppercase-literal-suffix: specify target for fp tests
Roman Lebedev [Thu, 18 Oct 2018 20:27:10 +0000 (20:27 +0000)]
[clang-tidy] readability-uppercase-literal-suffix: specify target for fp tests

__float128 isn't universally avaliable.

llvm-svn: 344758

5 years ago[clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP)
Roman Lebedev [Thu, 18 Oct 2018 20:16:44 +0000 (20:16 +0000)]
[clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP)

Summary:
Finds classes that not only contain the data (non-static member variables),
but also have logic (non-static member functions), and diagnoses all member
variables that have any other scope other than `private`. They should be
made `private`, and manipulated exclusively via the member functions.

Optionally, classes with all member variables being `public` could be
ignored, and optionally all `public` member variables could be ignored.

Options
-------

* IgnoreClassesWithAllMemberVariablesBeingPublic

  Allows to completely ignore classes if **all** the member variables in that
  class have `public` visibility.

* IgnorePublicMemberVariables

  Allows to ignore (not diagnose) **all** the member variables with `public`
  visibility scope.

References:
* MISRA 11-0-1 Member data in non-POD class types shall be private.
* https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c2-use-class-if-the-class-has-an-invariant-use-struct-if-the-data-members-can-vary-independently
* https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rc-private
* https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rh-protected

Reviewers: JonasToth, aaron.ballman, alexfh, hokein, xazax.hun

Reviewed By: aaron.ballman

Subscribers: Eugene.Zelenko, zinovy.nis, cfe-commits, rnkovacs, nemanjai, mgorny, xazax.hun, kbarton

Tags: #clang-tools-extra

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

llvm-svn: 344757

5 years agoSupport of hurd in llvm-shlib
Sylvestre Ledru [Thu, 18 Oct 2018 20:07:44 +0000 (20:07 +0000)]
Support of hurd in llvm-shlib

Svante Signell

llvm-svn: 344756

5 years ago[clang-tidy] Add new 'readability-uppercase-literal-suffix' check (CERT DCL16-C,...
Roman Lebedev [Thu, 18 Oct 2018 20:06:40 +0000 (20:06 +0000)]
[clang-tidy] Add new 'readability-uppercase-literal-suffix' check (CERT DCL16-C, MISRA C:2012, 7.3, MISRA C++:2008, 2-13-4)

Summary:
Detects when the integral literal or floating point (decimal or hexadecimal)
literal has non-uppercase suffix, and suggests to make the suffix uppercase,
with fix-it.

All valid combinations of suffixes are supported.

```
  auto x = 1;  // OK, no suffix.

  auto x = 1u; // warning: integer literal suffix 'u' is not upper-case

  auto x = 1U; // OK, suffix is uppercase.

  ...
```

References:
* [[ https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152241 | CERT DCL16-C ]]
* MISRA C:2012, 7.3 - The lowercase character "l" shall not be used in a literal suffix
* MISRA C++:2008, 2-13-4 - Literal suffixes shall be upper case

Reviewers: JonasToth, aaron.ballman, alexfh, hokein, xazax.hun

Reviewed By: aaron.ballman

Subscribers: Eugene.Zelenko, mgorny, rnkovacs, cfe-commits

Tags: #clang-tools-extra

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

llvm-svn: 344755

5 years agoMake Function::getInstructionCount const
Mircea Trofin [Thu, 18 Oct 2018 19:49:44 +0000 (19:49 +0000)]
Make Function::getInstructionCount const

Summary: Function::getInstructionCount can be const.

Reviewers: davidxl, paquette

Reviewed By: davidxl

Subscribers: llvm-commits

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

llvm-svn: 344754

5 years agoRevert r344693 ("[ARM] bottom-top mul support in ARMParallelDSP")
Eli Friedman [Thu, 18 Oct 2018 19:34:30 +0000 (19:34 +0000)]
Revert r344693 ("[ARM] bottom-top mul support in ARMParallelDSP")

Still causing failures on the polly-aosp buildbot; I'll follow up
with a reduced testcase.

llvm-svn: 344752

5 years ago[compiler-rt] Don't explicitly set CMAKE_CXX_FLAGS.
Dan Albert [Thu, 18 Oct 2018 18:04:28 +0000 (18:04 +0000)]
[compiler-rt] Don't explicitly set CMAKE_CXX_FLAGS.

Summary:
C++ flags should not be used for not-C++ files as it may trigger
-Werror=unused-command-line-argument. CMake will use CMAKE_C_FLAGS,
CMAKE_CXX_FLAGS, and CMAKE_ASM_FLAGS as appropriate implicitly, so
this does not need to be explicitly handled here.

This change depends on https://reviews.llvm.org/D53301, since one of
the builders depended on this behavior because it was not configuring
CMAKE_ASM_FLAGS.

Reviewers: eugenis, vitalybuka

Reviewed By: eugenis, vitalybuka

Subscribers: dberris, mgorny, delcypher, #sanitizers, llvm-commits

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

llvm-svn: 344751

5 years agoAdd check-clang-python to the Clang tests directory in IDEs; NFC.
Aaron Ballman [Thu, 18 Oct 2018 17:47:18 +0000 (17:47 +0000)]
Add check-clang-python to the Clang tests directory in IDEs; NFC.

llvm-svn: 344750

5 years agoAdd language standard aliases for -std=c18, -std=gnu18, and -std=iso9899:2018.
Aaron Ballman [Thu, 18 Oct 2018 17:42:41 +0000 (17:42 +0000)]
Add language standard aliases for -std=c18, -std=gnu18, and -std=iso9899:2018.

As described in D40225, the C17 standard was balloted and approved in 2017, but the ISO publication process delayed the actual publication until 2018. WG14 considers the release to be C17 and describes it as such, but users can still be confused by the publication year which is why -std=c18 adds value. These aliases map to c17 and are all supported by GCC 8.x with the same behavior. Note that the value of __STDC_VERSION__ remains at 201710L.

llvm-svn: 344749

5 years ago[Pipeliner] copyToPhi DAG Mutation to improve scheduling.
Sumanth Gundapaneni [Thu, 18 Oct 2018 15:51:16 +0000 (15:51 +0000)]
[Pipeliner] copyToPhi DAG Mutation to improve scheduling.

In a loop, create artificial dependences between the source of a
COPY/REG_SEQUENCE to the use in next iteration.

Eg:
SRC ----Data Dep--> COPY
COPY ---Anti Dep--> PHI (implies, to be used in next iteration)
PHI ----Data Dep--> USE

This patches creates
USE ----Artificial Dep---> SRC

This will effectively schedule the COPY late to eliminate additional copies.
Before this patch, the schedule can be
SRC, COPY, USE : The COPY is used in next iteration and it needs to be
preserved.

After this patch, the schedule can be
USE, SRC, COPY : The COPY is used in next iteration and the live interval is
reduced.

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

llvm-svn: 344748

5 years ago[PPC64] Fix offset checks on rel24 call relocations.
Sean Fertile [Thu, 18 Oct 2018 15:43:41 +0000 (15:43 +0000)]
[PPC64] Fix offset checks on rel24 call relocations.

Adjusted the range check on a call instruction from 24 bits signed to
26 bits signed. While the instruction only encodes 24 bits, the target is
assumed to be 4 byte aligned, and the value that is encoded in the instruction
gets shifted left by 2 to form the offset. Also added a check that the offset is
indeed at least 4 byte aligned.

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

llvm-svn: 344747

5 years ago[SymbolFileNativePDB] Fix missing linkage to DebugInfoCodeView
Michal Gorny [Thu, 18 Oct 2018 15:39:22 +0000 (15:39 +0000)]
[SymbolFileNativePDB] Fix missing linkage to DebugInfoCodeView

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

llvm-svn: 344746

5 years ago[clangd] Clear the semantic of RefSlab::size.
Haojian Wu [Thu, 18 Oct 2018 15:33:20 +0000 (15:33 +0000)]
[clangd] Clear the semantic of RefSlab::size.

Summary:
The RefSlab::size can easily cause confusions, it returns the number of
different symbols, rahter than the number of all references.

- add numRefs() method and cache it, since calculating it everytime is nontrivial.
- clear misused places.

Reviewers: sammccall

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344745

5 years ago[lldbsuite] Mark the TestScriptedResolver tests as XFAIL on Windows
Stella Stamenova [Thu, 18 Oct 2018 15:30:31 +0000 (15:30 +0000)]
[lldbsuite] Mark the TestScriptedResolver tests as XFAIL on Windows

Summary: They fail similarly to some of the other breakpoint tests on Windows, so I suspect the cause is the same. I've linked to the same bug.

Reviewers: asmith, zturner, jingham

Subscribers: abidh, lldb-commits

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

llvm-svn: 344744

5 years ago[LV] Fold tail by masking to vectorize loops of arbitrary trip count under opt for...
Ayal Zaks [Thu, 18 Oct 2018 15:03:15 +0000 (15:03 +0000)]
[LV] Fold tail by masking to vectorize loops of arbitrary trip count under opt for size

When optimizing for size, a loop is vectorized only if the resulting vector loop
completely replaces the original scalar loop. This holds if no runtime guards
are needed, if the original trip-count TC does not overflow, and if TC is a
known constant that is a multiple of the VF. The last two TC-related conditions
can be overcome by
1. rounding the trip-count of the vector loop up from TC to a multiple of VF;
2. masking the vector body under a newly introduced "if (i <= TC-1)" condition.

The patch allows loops with arbitrary trip counts to be vectorized under -Os,
subject to the existing cost model considerations. It also applies to loops with
small trip counts (under -O2) which are currently handled as if under -Os.

The patch does not handle loops with reductions, live-outs, or w/o a primary
induction variable, and disallows interleave groups.

(Third, final and main part of -)
Differential Revision: https://reviews.llvm.org/D50480

llvm-svn: 344743

5 years ago[X86][Tests] Make sure tls-direct-seg-refs tests only run where supported
Kristina Brooks [Thu, 18 Oct 2018 14:44:25 +0000 (14:44 +0000)]
[X86][Tests] Make sure tls-direct-seg-refs tests only run where supported

This flag is only supported for x86 targets, make sure the tests only run
for those.

llvm-svn: 344742

5 years ago[clangd] Enforce rules around "initialize" request, and create ClangdServer lazily.
Sam McCall [Thu, 18 Oct 2018 14:41:50 +0000 (14:41 +0000)]
[clangd] Enforce rules around "initialize" request, and create ClangdServer lazily.

Summary:
LSP is a slightly awkward map to C++ object lifetimes: the initialize request
is part of the protocol and provides information that doesn't change over the
lifetime of the server.

Until now, we handled this by initializing ClangdServer and ClangdLSPServer
right away, and making anything that can be set in the "initialize" request
mutable.
With this patch, we create ClangdLSPServer immediately, but defer creating
ClangdServer until "initialize". This opens the door to passing the relevant
initialize params in the constructor and storing them immutably.
(That change isn't actually done in this patch).

To make this safe, we have the MessageDispatcher enforce that the "initialize"
method is called before any other (as required by LSP). That way each method
handler can assume Server is initialized, as today.

As usual, while implementing this I found places where our test cases violated
the protocol.

Reviewers: ioeric

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344741

5 years ago[OPENMP] Move OMPClausePrinter to OpenMPClause.h/OpenMPClause.cpp - NFC. Differential...
Patrick Lyster [Thu, 18 Oct 2018 14:28:23 +0000 (14:28 +0000)]
[OPENMP] Move OMPClausePrinter to OpenMPClause.h/OpenMPClause.cpp - NFC. Differential Revision: https://reviews.llvm.org/D53102

llvm-svn: 344740

5 years agoAdd support for -mno-tls-direct-seg-refs to Clang
Kristina Brooks [Thu, 18 Oct 2018 14:07:02 +0000 (14:07 +0000)]
Add support for -mno-tls-direct-seg-refs to Clang

This patch exposes functionality added in rL344723 to the Clang driver/frontend
as a flag and adds appropriate metadata.

Driver tests pass:
```
ninja check-clang-driver
-snip-
  Expected Passes    : 472
  Expected Failures  : 3
  Unsupported Tests  : 65
```

Odd failure in CodeGen tests but unrelated to this:
```
ninja check-clang-codegen
-snip-
/SourceCache/llvm-trunk-8.0/tools/clang/test/CodeGen/builtins-wasm.c:87:10:
error: cannot compile this builtin function yet
-snip-
Failing Tests (1):
    Clang :: CodeGen/builtins-wasm.c

  Expected Passes    : 1250
  Expected Failures  : 2
  Unsupported Tests  : 120
  Unexpected Failures: 1
```

Original commit:
[X86] Support for the mno-tls-direct-seg-refs flag
Allows to disable direct TLS segment access (%fs or %gs). GCC supports a
similar flag, it can be useful in some circumstances, e.g. when a thread
context block needs to be updated directly from user space. More info and
specific use cases: https://bugs.llvm.org/show_bug.cgi?id=16145

Patch by nruslan (Ruslan Nikolaev).

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

llvm-svn: 344739

5 years agoDivergenceAnalysisTest: fix use of uninitialized memory
Nicolai Haehnle [Thu, 18 Oct 2018 12:54:39 +0000 (12:54 +0000)]
DivergenceAnalysisTest: fix use of uninitialized memory

Thanks to Simon Moll for chasing it down.

Change-Id: If188f07c4aaec217f40a7a2ca029818f9202f1cb
llvm-svn: 344738

5 years ago[clangd] Lay JSONRPCDispatcher to rest.
Sam McCall [Thu, 18 Oct 2018 12:32:04 +0000 (12:32 +0000)]
[clangd] Lay JSONRPCDispatcher to rest.

Summary:
Most of its functionality is moved into ClangdLSPServer.
The decoupling between JSONRPCDispatcher, ProtocolCallbacks, ClangdLSPServer
was never real, and only served to obfuscate.

Some previous implicit/magic stuff is now explicit:
 - the return type of LSP method calls are now in the signature
 - no more reply() that gets the ID using global context magic
 - arg tracing no longer relies on RequestArgs::stash context magic either

This is mostly refactoring, but some deliberate fixes while here:
 - LSP method params are now by const reference
 - notifications and calls are now distinct namespaces.
   (some tests had protocol errors and needed updating)
 - we now reply to calls we failed to decode
 - outgoing calls use distinct IDs
A few error codes and message IDs changed in unimportant ways (see tests).

Reviewers: ioeric

Subscribers: mgorny, ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits

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

llvm-svn: 344737

5 years ago[clangd] Names that are not spelled in source code are reserved.
Eric Liu [Thu, 18 Oct 2018 12:23:05 +0000 (12:23 +0000)]
[clangd] Names that are not spelled in source code are reserved.

Summary:
These are often not expected to be used directly e.g.
```
TEST_F(Fixture, X) {
  ^  // "Fixture_X_Test" expanded in the macro should be down ranked.
}
```

Only doing this for sema for now, as such symbols are mostly coming from sema
e.g. gtest macros expanded in the main file. We could also add a similar field
for the index symbol.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344736

5 years ago[clangd] Encode Line/Column as a 32-bits integer.
Haojian Wu [Thu, 18 Oct 2018 10:43:50 +0000 (10:43 +0000)]
[clangd] Encode Line/Column as a 32-bits integer.

Summary:
This would buy us more memory. Using a 32-bits integer is enough for
most human-readable source code (up to 4M lines and 4K columns).

Previsouly, we used 8 bytes for a position, now 4 bytes, it would save
us 8 bytes for each Ref and each Symbol instance.

For LLVM-project binary index file, we save ~13% memory.

| Before | After |
| 412MB  | 355MB |

Reviewers: sammccall

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344735

5 years ago[DA] DivergenceAnalysis for unstructured, reducible CFGs
Nicolai Haehnle [Thu, 18 Oct 2018 09:38:44 +0000 (09:38 +0000)]
[DA] DivergenceAnalysis for unstructured, reducible CFGs

Summary:
This is patch 2 of the new DivergenceAnalysis (https://reviews.llvm.org/D50433).

This patch contains a generic divergence analysis implementation for
unstructured, reducible Control-Flow Graphs. It contains two new classes.
The `SyncDependenceAnalysis` class lazily computes sync dependences, which
relate divergent branches to points of joining divergent control. The
`DivergenceAnalysis` class contains the generic divergence analysis
implementation.

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: sameerds, kristina, nhaehnle, xbolva00, tschuett, mgorny, llvm-commits

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

llvm-svn: 344734

5 years ago[clang-tidy] Ignore a case where the fix of make_unique check introduces side effect.
Haojian Wu [Thu, 18 Oct 2018 09:13:34 +0000 (09:13 +0000)]
[clang-tidy] Ignore a case where the fix of make_unique check introduces side effect.

Summary:
Previously, ptr.reset(new char[5]) will be replaced with `p =
make_unique<char[]>(5)`, the fix has side effect -- doing
default initialization, it may cause performace regression (we are
bitten by this rececntly)

The check should be conservative for these cases.

Reviewers: alexfh

Subscribers: xazax.hun, cfe-commits

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

llvm-svn: 344733

5 years ago[Support] json::Value construction from std::vector<T> and std::map<string,T>.
Sam McCall [Thu, 18 Oct 2018 08:47:24 +0000 (08:47 +0000)]
[Support] json::Value construction from std::vector<T> and std::map<string,T>.

Summary: Previously this required a conversion to json::Array/json::Object first.

Reviewers: ioeric

Subscribers: kristina, llvm-commits

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

llvm-svn: 344732

5 years ago[llvm-exegesis] Fix off by one error
Guillaume Chatelet [Thu, 18 Oct 2018 08:20:50 +0000 (08:20 +0000)]
[llvm-exegesis] Fix off by one error

llvm-svn: 344731

5 years ago[TI removal] Test predicate rather than casting to detect a terminator
Chandler Carruth [Thu, 18 Oct 2018 08:16:20 +0000 (08:16 +0000)]
[TI removal] Test predicate rather than casting to detect a terminator
and use the range based successor API.

llvm-svn: 344730

5 years ago[Windows] Fix threads comparison on Windows
Aleksandr Urakov [Thu, 18 Oct 2018 07:52:56 +0000 (07:52 +0000)]
[Windows] Fix threads comparison on Windows

Summary:
This patch makes Windows threads to compare by a thread ID, not by a handle.
It's because the same thread can have different handles on Windows
(for example, `GetCurrentThread` always returns the fake handle `-2`).
This leads to some incorrect behavior. For example, in `Process::GetRunLock`
always `m_public_run_lock` is returned without this patch.

Reviewers: zturner, clayborg, stella.stamenova

Reviewed By: stella.stamenova

Subscribers: stella.stamenova, lldb-commits

Tags: #lldb

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

llvm-svn: 344729

5 years ago[TI removal] Generically discuss terminators rather than use the soon to
Chandler Carruth [Thu, 18 Oct 2018 07:43:30 +0000 (07:43 +0000)]
[TI removal] Generically discuss terminators rather than use the soon to
vanish subclass name.

llvm-svn: 344728

5 years ago[TI removal] Remove discussion of `TerminatorInst` from the LLVM
Chandler Carruth [Thu, 18 Oct 2018 07:40:24 +0000 (07:40 +0000)]
[TI removal] Remove discussion of `TerminatorInst` from the LLVM
documentation.

llvm-svn: 344727

5 years ago[TI removal] Remove TerminatorInst references from bindings.
Chandler Carruth [Thu, 18 Oct 2018 07:40:03 +0000 (07:40 +0000)]
[TI removal] Remove TerminatorInst references from bindings.

For the Go bindings, this just removes the no longer useful "isa"-style
wrapper. If there is a user that is interested, they can add a wrapper
for `Instruction::isTerminator`.

For the OCaml bindings, this is just a documentation update.

llvm-svn: 344726

5 years agoAdd a emitUnaryFloatFnCall version that fetches the function name from TLI
Mikael Holmen [Thu, 18 Oct 2018 06:27:53 +0000 (06:27 +0000)]
Add a emitUnaryFloatFnCall version that fetches the function name from TLI

Summary:
In several places in the code we use the following pattern:

  if (hasUnaryFloatFn(&TLI, Ty, LibFunc_tan, LibFunc_tanf, LibFunc_tanl)) {
    [...]
    Value *Res = emitUnaryFloatFnCall(X, TLI.getName(LibFunc_tan), B, Attrs);
    [...]
  }

In short, we check if there is a lib-function for a certain type, and then
we _always_ fetch the name of the "double" version of the lib function and
construct a call to the appropriate function, that we just checked exists,
using that "double" name as a basis.

This is of course a problem in cases where the target doesn't support the
"double" version, but e.g. only the "float" version.

In that case TLI.getName(LibFunc_tan) returns "", and
emitUnaryFloatFnCall happily appends an "f" to "", and we erroneously end
up with a call to a function called "f".

To solve this, the above pattern is changed to

  if (hasUnaryFloatFn(&TLI, Ty, LibFunc_tan, LibFunc_tanf, LibFunc_tanl)) {
    [...]
    Value *Res = emitUnaryFloatFnCall(X, &TLI, LibFunc_tan, LibFunc_tanf,
                                      LibFunc_tanl, B, Attrs);
    [...]
  }

I.e instead of first fetching the name of the "double" version and then
letting emitUnaryFloatFnCall() add the final "f" or "l", we let
emitUnaryFloatFnCall() fetch the right name from TLI.

Reviewers: eli.friedman, efriedma

Reviewed By: efriedma

Subscribers: efriedma, bjope, llvm-commits

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

llvm-svn: 344725

5 years agoFix warning about unused variable [NFC]
Mikael Holmen [Thu, 18 Oct 2018 06:00:39 +0000 (06:00 +0000)]
Fix warning about unused variable [NFC]

llvm-svn: 344724

5 years ago[X86] Support for the mno-tls-direct-seg-refs flag
Kristina Brooks [Thu, 18 Oct 2018 03:14:37 +0000 (03:14 +0000)]
[X86] Support for the mno-tls-direct-seg-refs flag

Allows to disable direct TLS segment access (%fs or %gs). GCC supports
a similar flag, it can be useful in some circumstances, e.g. when a thread
context block needs to be updated directly from user space. More info
and specific use cases: https://bugs.llvm.org/show_bug.cgi?id=16145

There is another revision for clang as well.
Related: D53102

All X86 CodeGen tests appear to pass:
```
[46/47] Running lit suite /SourceCache/llvm-trunk-8.0/test/CodeGen
Testing Time: 23.17s
  Expected Passes    : 3801
  Expected Failures  : 15
  Unsupported Tests  : 8021
```

Reviewed by: Craig Topper.

Patch by nruslan (Ruslan Nikolaev).

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

llvm-svn: 344723

5 years agoRevert "Return a named error in the result object of an expression with no result"
Krasimir Georgiev [Thu, 18 Oct 2018 03:10:43 +0000 (03:10 +0000)]
Revert "Return a named error in the result object of an expression with no result"

This reverts commit r344647.
This causes build failures with [-Werror, -Wswitch]. Some cases where the newly
introduced enum value is not handled in particular are in:
  lldb/source/Expression/REPL.cpp:350
  lldb/source/Interpreter/CommandInterpreter.cpp:1529
(maybe there could be more)

As I don't understand lldb to make sure the likely trivial fixes are
correct and also as they might need additional tests, leaving to the
author to resolve.

llvm-svn: 344722

5 years ago[llvm-exegesis] Mark destructor virtual after r344695
Krasimir Georgiev [Thu, 18 Oct 2018 02:06:16 +0000 (02:06 +0000)]
[llvm-exegesis] Mark destructor virtual after r344695

This was causing a -Wnon-virtual-dtor warning.

llvm-svn: 344721

5 years ago[BuildingAJIT] Update the Ch1 KaleidoscopeJIT class to expose errors to clients.
Lang Hames [Thu, 18 Oct 2018 00:51:38 +0000 (00:51 +0000)]
[BuildingAJIT] Update the Ch1 KaleidoscopeJIT class to expose errors to clients.

Returning the error to clients provides an opportunity to introduce readers to
the Expected and Error APIs and makes the tutorial more useful as a starting
point for a real JIT class, while only slightly complicating the code.

llvm-svn: 344720

5 years ago[TI removal] Switch simple loop unswitch to `Instruction`.
Chandler Carruth [Thu, 18 Oct 2018 00:40:26 +0000 (00:40 +0000)]
[TI removal] Switch simple loop unswitch to `Instruction`.

llvm-svn: 344719

5 years ago[TI removal] Switch NewGVN to directly use `Instruction`.
Chandler Carruth [Thu, 18 Oct 2018 00:39:46 +0000 (00:39 +0000)]
[TI removal] Switch NewGVN to directly use `Instruction`.

llvm-svn: 344718

5 years ago[TI removal] Use `Instruction` instead of `TerminatorInst` for
Chandler Carruth [Thu, 18 Oct 2018 00:39:18 +0000 (00:39 +0000)]
[TI removal] Use `Instruction` instead of `TerminatorInst` for
a variable's type.

llvm-svn: 344717

5 years ago[TI removal] Update CodeExtractor to use Instruction directly.
Chandler Carruth [Thu, 18 Oct 2018 00:38:54 +0000 (00:38 +0000)]
[TI removal] Update CodeExtractor to use Instruction directly.

llvm-svn: 344716

5 years ago[TI removal] Switch ObjCARC code to directly use the nice range-based
Chandler Carruth [Thu, 18 Oct 2018 00:38:34 +0000 (00:38 +0000)]
[TI removal] Switch ObjCARC code to directly use the nice range-based
successors API or directly build the iterators out of the terminator
instruction and avoid requiring a TerminatorInst variable.

llvm-svn: 344715

5 years ago[TI removal] Switch MergeFunctions to directly use Instruction API.
Chandler Carruth [Thu, 18 Oct 2018 00:37:37 +0000 (00:37 +0000)]
[TI removal] Switch MergeFunctions to directly use Instruction API.

llvm-svn: 344714

5 years ago[TI removal] Switch an analysis to just use Instruction.
Chandler Carruth [Thu, 18 Oct 2018 00:36:15 +0000 (00:36 +0000)]
[TI removal] Switch an analysis to just use Instruction.

llvm-svn: 344713

5 years ago[BuildingAJIT] Simplify a tutorial example and fix a syntax error.
Lang Hames [Wed, 17 Oct 2018 22:27:09 +0000 (22:27 +0000)]
[BuildingAJIT] Simplify a tutorial example and fix a syntax error.

llvm-svn: 344712

5 years agoAMDGPU: Add options to enable/disable code object v3
Konstantin Zhuravlyov [Wed, 17 Oct 2018 21:39:12 +0000 (21:39 +0000)]
AMDGPU: Add options to enable/disable code object v3

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

llvm-svn: 344711

5 years ago[AArch64] Define __ELF__ for aarch64-none-elf and other similar triples.
Eli Friedman [Wed, 17 Oct 2018 21:07:11 +0000 (21:07 +0000)]
[AArch64] Define __ELF__ for aarch64-none-elf and other similar triples.

"aarch64-none-elf" is commonly used for AArch64 baremetal toolchains.

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

llvm-svn: 344710

5 years ago[clang-doc] Bringing bitcode tests in line
Julie Hockett [Wed, 17 Oct 2018 20:16:05 +0000 (20:16 +0000)]
[clang-doc] Bringing bitcode tests in line

Makes bitcode tests line up with what's actually called in the tool.
Should fix the failing bot.

Also fixes a warning that was being thrown about initialization braces.

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

llvm-svn: 344707

5 years ago[BuildingAJIT] Fix a function signature in the documentation.
Lang Hames [Wed, 17 Oct 2018 19:35:38 +0000 (19:35 +0000)]
[BuildingAJIT] Fix a function signature in the documentation.

llvm-svn: 344705

5 years agoPort libcxxabi r344607 into llvm
Pavel Labath [Wed, 17 Oct 2018 18:50:25 +0000 (18:50 +0000)]
Port libcxxabi r344607 into llvm

Summary:
The original commit message was:
    This uses CRTP (for performance reasons) to allow a user the override
    demangler functions to implement custom parsing logic. The motivation
    for this is LLDB, which needs to occasionaly modify the mangled names.
    One such instance is already implemented via the TypeCallback member,
    but this is very specific functionality which does not help with any
    other use case. Currently we have a use case for modifying the
    constructor flavours, which would require adding another callback. This
    approach does not scale.

    With CRTP, the user (LLDB) can override any function it needs without
    any special support from the demangler library. After LLDB is ported to
    use this instead of the TypeCallback mechanism, the callback can be
    removed.

The only difference here is the addition of a unit test which exercises
the CRTP mechanism to override a function in the parser.

Reviewers: erik.pilkington, rsmith, EricWF

Subscribers: mgorny, kristina, llvm-commits

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

llvm-svn: 344703

5 years agoFix for arm bots afternew PM pass port. Prevent cross compiling on arm.
Leonard Chan [Wed, 17 Oct 2018 18:12:18 +0000 (18:12 +0000)]
Fix for arm bots afternew PM pass port. Prevent cross compiling on arm.

llvm-svn: 344702

5 years agoFix for failing unit tests on some bots after r344696.
Leonard Chan [Wed, 17 Oct 2018 16:21:19 +0000 (16:21 +0000)]
Fix for failing unit tests on some bots after r344696.

llvm-svn: 344701

5 years ago[libcxx] Improve reporting when running the lit test suite
Louis Dionne [Wed, 17 Oct 2018 16:12:04 +0000 (16:12 +0000)]
[libcxx] Improve reporting when running the lit test suite

Summary:
Running the test suite with -a will now properly show all the executed
commands. The reports also include the environment under which the test
is being executed, which is helpful for reproducing issues.

Reviewers: EricWF

Subscribers: christof, dexonsmith, libcxx-commits

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

llvm-svn: 344700

5 years ago[PassManager/Sanitizer] Enable usage of ported AddressSanitizer passes with -fsanitiz...
Leonard Chan [Wed, 17 Oct 2018 15:38:22 +0000 (15:38 +0000)]
[PassManager/Sanitizer] Enable usage of ported AddressSanitizer passes with -fsanitize=address

Enable usage of `AddressSanitizer` and `AddressModuleSanitizer` ported from the
legacy to the new PassManager.

This patch depends on https://reviews.llvm.org/D52739.

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

llvm-svn: 344699

5 years agoAMDGPU: Avoid selecting ds_{read,write}2_b32 on SI
Nicolai Haehnle [Wed, 17 Oct 2018 15:37:48 +0000 (15:37 +0000)]
AMDGPU: Avoid selecting ds_{read,write}2_b32 on SI

Summary:
To workaround a hardware issue in the (base + offset) calculation
when base is negative. The impact on code quality should be limited
since SILoadStoreOptimizer still runs afterwards and is able to
combine loads/stores based on known sign information.

This fixes visible corruption in Hitman on SI (easily reproducible
by running benchmark mode).

Change-Id: Ia178d207a5e2ac38ae7cd98b532ea2ae74704e5f
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99923

Reviewers: arsenm, mareko

Subscribers: jholewinski, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

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

llvm-svn: 344698

5 years agoStructurizeCFG: Simplify inserted PHI nodes
Nicolai Haehnle [Wed, 17 Oct 2018 15:37:41 +0000 (15:37 +0000)]
StructurizeCFG: Simplify inserted PHI nodes

Summary:
This improves subsequent divergence analysis in some cases.

Change-Id: I5e95e7ec7fd3fa80d414d1a53a02fea23e3d67d3

Reviewers: arsenm, rampitec

Subscribers: jvesely, wdng, llvm-commits

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

llvm-svn: 344697

5 years agoAMDGPU: Divergence-driven selection of scalar buffer load intrinsics
Nicolai Haehnle [Wed, 17 Oct 2018 15:37:30 +0000 (15:37 +0000)]
AMDGPU: Divergence-driven selection of scalar buffer load intrinsics

Summary:
Moving SMRD to VMEM in SIFixSGPRCopies is rather bad for performance if
the load is really uniform. So select the scalar load intrinsics directly
to either VMEM or SMRD buffer loads based on divergence analysis.

If an offset happens to end up in a VGPR -- either because a floating
point calculation was involved, or due to other remaining deficiencies
in SIFixSGPRCopies -- we use v_readfirstlane.

There is some unrelated churn in tests since we now select MUBUF offsets
in a unified way with non-scalar buffer loads.

Change-Id: I170e6816323beb1348677b358c9d380865cd1a19

Reviewers: arsenm, alex-t, rampitec, tpr

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, t-tye, llvm-commits

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

llvm-svn: 344696

5 years ago[llvm-exegesis] Allow measuring several instructions in a single run.
Clement Courbet [Wed, 17 Oct 2018 15:04:15 +0000 (15:04 +0000)]
[llvm-exegesis] Allow measuring several instructions in a single run.

Summary:
We try to recover gracefully on instructions that would crash the
program.

This includes some refactoring of runMeasurement() implementations.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

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

llvm-svn: 344695

5 years agoFix broken formatting caused by test commit
Theodoros Theodoridis [Wed, 17 Oct 2018 15:01:18 +0000 (15:01 +0000)]
Fix broken formatting caused by test commit

llvm-svn: 344694

5 years ago[ARM] bottom-top mul support in ARMParallelDSP
Sam Parker [Wed, 17 Oct 2018 13:02:48 +0000 (13:02 +0000)]
[ARM] bottom-top mul support in ARMParallelDSP

Previously reverted in rL343082.

Original commit message:

On failing to find sequences that can be converted into dual macs,
try to find sequential 16-bit loads that are used by muls which we
can then use smultb, smulbt, smultt with a wide load.

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

llvm-svn: 344693