platform/upstream/llvm.git
5 years ago[dsymutil] Use rfind for paths with parentheses
Jonas Devlieghere [Thu, 28 Feb 2019 18:46:04 +0000 (18:46 +0000)]
[dsymutil] Use rfind for paths with parentheses

Dsymutil gets library member information is through the ambiguous
/path/to/archive.a(member.o). The current logic we use would get
confused by additional parentheses. Using rfind mitigates this issue.

llvm-svn: 355114

5 years ago[NFC][Sanitizer] Weak linkage is not available on Windows
Julian Lettner [Thu, 28 Feb 2019 18:42:14 +0000 (18:42 +0000)]
[NFC][Sanitizer] Weak linkage is not available on Windows

The concept of weak linkage is not available on Windows. The available
workarounds in LLVM/sanitizer runtimes have their own problems. Define a
separte symbol ubsan_GetStackTrace to work around the issue now. At lest
this way it is painfully obvious that we still have to do more cleanup.

Follow-up to revision: https://reviews.llvm.org/D58651

llvm-svn: 355113

5 years ago[WebAssembly] Remove uses of ThreadModel
Thomas Lively [Thu, 28 Feb 2019 18:39:08 +0000 (18:39 +0000)]
[WebAssembly] Remove uses of ThreadModel

Summary:
In the clang UI, replaces -mthread-model posix with -matomics as the
source of truth on threading. In the backend, replaces
-thread-model=posix with the atomics target feature, which is now
collected on the WebAssemblyTargetMachine along with all other used
features. These collected features will also be used to emit the
target features section in the future.

The default configuration for the backend is thread-model=posix and no
atomics, which was previously an invalid configuration. This change
makes the default valid because the thread model is ignored.

A side effect of this change is that objects are never emitted with
passive segments. It will instead be up to the linker to decide
whether sections should be active or passive based on whether atomics
are used in the final link.

Reviewers: aheejin, sbc100, dschuff

Subscribers: mehdi_amini, jgravelle-google, hiraditya, sunfish, steven_wu, dexonsmith, rupprecht, jfb, jdoerfert, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

llvm-svn: 355112

5 years ago[Tests] Strengthen LICM test corpus to show alignment striping. (part 2)
Philip Reames [Thu, 28 Feb 2019 18:17:51 +0000 (18:17 +0000)]
[Tests] Strengthen LICM test corpus to show alignment striping. (part 2)

This should have been part of r355110, but my brain isn't quite awake yet, despite the coffee.  Per the original submit comment... Doing scalar promotion w/o being able to prove the alignment of the hoisted load or sunk store is a bug.  Update tests to actually show the alignment so that impact of the patch which fixes this can be seen.

llvm-svn: 355111

5 years ago[Tests] Strengthen LICM test corpus to show alignment striping
Philip Reames [Thu, 28 Feb 2019 18:08:04 +0000 (18:08 +0000)]
[Tests] Strengthen LICM test corpus to show alignment striping

Doing scalar promotion w/o being able to prove the alignment of the hoisted load or sunk store is a bug.  Update tests to actually show the alignment so that impact of the patch which fixes this can be seen.

llvm-svn: 355110

5 years ago[ValueTracking] More accurate unsigned sub overflow detection
Nikita Popov [Thu, 28 Feb 2019 18:04:20 +0000 (18:04 +0000)]
[ValueTracking] More accurate unsigned sub overflow detection

Second part of D58593.

Compute precise overflow conditions based on all known bits, rather
than just the sign bits. Unsigned a - b overflows iff a < b, and we
can determine whether this always/never happens based on the minimal
and maximal values achievable for a and b subject to the known bits
constraint.

llvm-svn: 355109

5 years ago[clang-tidy] fix documentation link in list of clang-tidy checks
Jonas Toth [Thu, 28 Feb 2019 17:53:51 +0000 (17:53 +0000)]
[clang-tidy] fix documentation link in list of clang-tidy checks

llvm-svn: 355108

5 years agollvm-config: Include -stdlib= in --cxxflags
Tom Stellard [Thu, 28 Feb 2019 17:31:59 +0000 (17:31 +0000)]
llvm-config: Include -stdlib= in --cxxflags

Summary:
This was removed in r349068, but it is needed when llvm is compiled
using the non-default c++ standard library on a platform.

Reviewers: sylvestre.ledru, infinity0, mgorny, cuviper

Reviewed By: sylvestre.ledru

Subscribers: jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 355107

5 years agoPartial revert of r353952: [HIP] Handle compile -m options and propagate into LLC
Yaxun Liu [Thu, 28 Feb 2019 17:08:26 +0000 (17:08 +0000)]
Partial revert of r353952: [HIP] Handle compile -m options and propagate into LLC

Remove comments and tests about passing -mcode-object-v3 to driver since it does
not work. Other -m options are OK.

Also put back -mattr=-code-object-v3 since HIP is still not ready for code object
v3.

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

llvm-svn: 355106

5 years agoMake MergeBlockIntoPredecessor conformant to the precondition of calling DTU.applyUpdates
Chijun Sima [Thu, 28 Feb 2019 16:47:18 +0000 (16:47 +0000)]
Make MergeBlockIntoPredecessor conformant to the precondition of calling DTU.applyUpdates

Summary:
It is mentioned in the document of DTU that "It is illegal to submit any update that has already been submitted, i.e., you are supposed not to insert an existent edge or delete a nonexistent edge." It is dangerous to violet this rule because DomTree and PostDomTree occasionally crash on this scenario.

This patch fixes `MergeBlockIntoPredecessor`, making it conformant to this precondition.

Reviewers: kuhar, brzycki, chandlerc

Reviewed By: brzycki

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 355105

5 years ago[AArch64][GlobalISel] Add support for 64 bit vector shuffle using TBL1.
Amara Emerson [Thu, 28 Feb 2019 16:43:11 +0000 (16:43 +0000)]
[AArch64][GlobalISel] Add support for 64 bit vector shuffle using TBL1.

This extends the existing support for shufflevector to handle cases like
<2 x float>, which we can implement by concating the vectors and using a TBL1.

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

llvm-svn: 355104

5 years ago[cmake] Move LLDB_DISABLE_LIBEDIT handling code into a central place
Pavel Labath [Thu, 28 Feb 2019 16:04:54 +0000 (16:04 +0000)]
[cmake] Move LLDB_DISABLE_LIBEDIT handling code into a central place

This was previously scattered between the main CMakeLists.txt file and
LLDBGenerateConfig.cmake and LLDBConfig.cmake. This caused the some of
the code to be executed in incorrect order. Specifically, the check for
el_winsertstr was done before libedit_LIBRARIES was computed, and so it
always failed on the first run.

Moving it the two checks to a central place makes sure this doesn't
happen again and improves the overall readability.

llvm-svn: 355103

5 years ago[clang-tidy] redirection in list of checks adjusted
Jonas Toth [Thu, 28 Feb 2019 15:56:40 +0000 (15:56 +0000)]
[clang-tidy] redirection in list of checks adjusted

llvm-svn: 355102

5 years ago[Target][ARM] Add a usage for SrcSz to unbreak build-bots without assertions
Kadir Cetinkaya [Thu, 28 Feb 2019 15:55:11 +0000 (15:55 +0000)]
[Target][ARM] Add a usage for SrcSz to unbreak build-bots without assertions

llvm-svn: 355101

5 years ago[clang-tidy] include cppcoreguidelines-explicit-virtual-functions in list of checks...
Jonas Toth [Thu, 28 Feb 2019 15:47:10 +0000 (15:47 +0000)]
[clang-tidy] include cppcoreguidelines-explicit-virtual-functions in list of checks and fix redirection

llvm-svn: 355100

5 years agoAdd support for computing "zext of value" in KnownBits. NFCI
Bjorn Pettersson [Thu, 28 Feb 2019 15:45:29 +0000 (15:45 +0000)]
Add support for computing "zext of value" in KnownBits. NFCI

Summary:
The description of KnownBits::zext() and
KnownBits::zextOrTrunc() has confusingly been telling
that the operation is equivalent to zero extending the
value we're tracking. That has not been true, instead
the user has been forced to explicitly set the extended
bits as known zero afterwards.

This patch adds a second argument to KnownBits::zext()
and KnownBits::zextOrTrunc() to control if the extended
bits should be considered as known zero or as unknown.

Reviewers: craig.topper, RKSimon

Reviewed By: RKSimon

Subscribers: javed.absar, hiraditya, jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 355099

5 years ago[clang-tidy] documentation fixing the actual correct file
Jonas Toth [Thu, 28 Feb 2019 15:39:47 +0000 (15:39 +0000)]
[clang-tidy] documentation fixing the actual correct file

llvm-svn: 355098

5 years ago[clang-tidy] tryfix documenation continued
Jonas Toth [Thu, 28 Feb 2019 15:28:36 +0000 (15:28 +0000)]
[clang-tidy] tryfix documenation continued

llvm-svn: 355097

5 years ago[CTU] Do not allow different CPP dialects in CTU
Gabor Marton [Thu, 28 Feb 2019 15:24:59 +0000 (15:24 +0000)]
[CTU] Do not allow different CPP dialects in CTU

Summary:
If CPP dialects are different then return with error.

Consider this STL code:
  template<typename _Alloc>
    struct __alloc_traits
  #if __cplusplus >= 201103L
    : std::allocator_traits<_Alloc>
  #endif
    { // ...
    };
This class template would create ODR errors during merging the two units,
since in one translation unit the class template has a base class, however
in the other unit it has none.

Reviewers: xazax.hun, a_sidorin, r.stahl

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

llvm-svn: 355096

5 years ago[clang-tidy] another issue in documentation, double empty line seemed to confuse...
Jonas Toth [Thu, 28 Feb 2019 15:18:54 +0000 (15:18 +0000)]
[clang-tidy] another issue in documentation, double empty line seemed to confuse code-block

llvm-svn: 355095

5 years ago[clang-tidy] attempt to fix documentation build-error
Jonas Toth [Thu, 28 Feb 2019 15:01:17 +0000 (15:01 +0000)]
[clang-tidy] attempt to fix documentation build-error

llvm-svn: 355094

5 years ago[clang-tidy] added cppcoreguidelines-explicit-virtual-functions
Jonas Toth [Thu, 28 Feb 2019 14:55:12 +0000 (14:55 +0000)]
[clang-tidy] added cppcoreguidelines-explicit-virtual-functions

Addresses the bugzilla bug #30397. (https://bugs.llvm.org/show_bug.cgi?id=30397)
modernize-use-override suggests that destructors require the override specifier
and the CPP core guidelines do not recommend this.

Patch by lewmpk.

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

llvm-svn: 355093

5 years agoAdded missing license headers
Dmitri Gribenko [Thu, 28 Feb 2019 14:01:11 +0000 (14:01 +0000)]
Added missing license headers

Reviewers: ioeric

Subscribers: jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 355092

5 years agoUse ArrayRef::copy, instead of copying data manually
Dmitri Gribenko [Thu, 28 Feb 2019 14:00:26 +0000 (14:00 +0000)]
Use ArrayRef::copy, instead of copying data manually

Reviewers: ioeric

Subscribers: jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 355091

5 years agoMoved Ref into its own header and implementation file
Dmitri Gribenko [Thu, 28 Feb 2019 13:49:25 +0000 (13:49 +0000)]
Moved Ref into its own header and implementation file

Reviewers: ioeric

Subscribers: mgorny, jkorous, mgrang, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 355090

5 years ago[clang-tidy] bugprone-string-integer-assignment: Reduce false positives.
Clement Courbet [Thu, 28 Feb 2019 13:39:01 +0000 (13:39 +0000)]
[clang-tidy] bugprone-string-integer-assignment: Reduce false positives.

Summary: Detect a few expressions as likely character expressions, see PR27723.

Reviewers: xazax.hun, alexfh

Subscribers: rnkovacs, jdoerfert, cfe-commits

Tags: #clang

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

llvm-svn: 355089

5 years agoMoved Symbol into its own header and implementation file
Dmitri Gribenko [Thu, 28 Feb 2019 13:23:03 +0000 (13:23 +0000)]
Moved Symbol into its own header and implementation file

Reviewers: ioeric

Subscribers: mgorny, jkorous, arphaman, kadircet, jdoerfert, cfe-commits

Tags: #clang

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

llvm-svn: 355088

5 years ago[PowerPC] Removed STATISTIC that was causing build errors.
Stefan Pintilie [Thu, 28 Feb 2019 12:40:28 +0000 (12:40 +0000)]
[PowerPC] Removed STATISTIC that was causing build errors.

llvm-svn: 355087

5 years agoMoved SymbolOrigin into its own header and implementation file
Dmitri Gribenko [Thu, 28 Feb 2019 12:31:49 +0000 (12:31 +0000)]
Moved SymbolOrigin into its own header and implementation file

Reviewers: ioeric

Subscribers: mgorny, jkorous, arphaman, kadircet, jdoerfert, cfe-commits

Tags: #clang

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

llvm-svn: 355086

5 years ago[PowerPC] Move the stack pointer update instruction later in the prologue and earlier...
Stefan Pintilie [Thu, 28 Feb 2019 12:23:28 +0000 (12:23 +0000)]
[PowerPC] Move the stack pointer update instruction later in the prologue and earlier in the epilogue.

Move the stdu instruction in the prologue and epilogue.
This should provide a small performance boost in functions that are able to do
this. I've kept this change rather conservative at the moment and functions
with frame pointers or base pointers will not try to move the stack pointer
update.

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

llvm-svn: 355085

5 years ago[X86][AVX] Remove superfluous insert_subvector(zero, bitcast(x)) -> bitcast(insert_su...
Simon Pilgrim [Thu, 28 Feb 2019 11:39:52 +0000 (11:39 +0000)]
[X86][AVX] Remove superfluous insert_subvector(zero, bitcast(x)) -> bitcast(insert_subvector(zero, x)) fold

This is caught by other existing bitcast folds.

llvm-svn: 355084

5 years ago[ARM GlobalISel] Make arm_i32imm an IntImmLeaf
Diana Picus [Thu, 28 Feb 2019 11:13:05 +0000 (11:13 +0000)]
[ARM GlobalISel] Make arm_i32imm an IntImmLeaf

This gets rid of some duplication in the TableGen definition, but it
forces us to keep both a pointer and a reference to the subtarget in the
ARMInstructionSelector. That is pretty ugly but it might be a reasonable
trade-off, since the TableGen descriptions should outlive the code in
the selector (or in the worst case we can update to use just the
reference when we get rid of DAGISel).

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

llvm-svn: 355083

5 years agoMoved SymbolLocation into its own header and implementation file
Dmitri Gribenko [Thu, 28 Feb 2019 11:02:01 +0000 (11:02 +0000)]
Moved SymbolLocation into its own header and implementation file

Reviewers: ioeric

Subscribers: mgorny, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 355082

5 years agoMoved DenseMap support for SymbolID into SymbolID.h
Dmitri Gribenko [Thu, 28 Feb 2019 11:00:44 +0000 (11:00 +0000)]
Moved DenseMap support for SymbolID into SymbolID.h

llvm-svn: 355081

5 years agoFixed typos in a test: s/CEHCK/CHECK/
Dmitri Gribenko [Thu, 28 Feb 2019 10:58:13 +0000 (10:58 +0000)]
Fixed typos in a test: s/CEHCK/CHECK/

Reviewers: ilya-biryukov, serge-sans-paille

Subscribers: delcypher, llvm-commits

Tags: #llvm

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

llvm-svn: 355080

5 years agoFixed a typo in the test s/CEHCK/CHECK/
Dmitri Gribenko [Thu, 28 Feb 2019 10:56:39 +0000 (10:56 +0000)]
Fixed a typo in the test s/CEHCK/CHECK/

Summary:
Turns out the test was not correct, I had to adjust the test to work.  I
also added CHECK-LABELs for better error messages from FileCheck while
I'm here.

Reviewers: jsji

Subscribers: nemanjai, eraman, llvm-commits

Tags: #llvm

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

llvm-svn: 355079

5 years ago[X86][AVX] Fold vf64 concat_vectors(movddup(x),movddup(x)) -> broadcast(x)
Simon Pilgrim [Thu, 28 Feb 2019 10:53:58 +0000 (10:53 +0000)]
[X86][AVX] Fold vf64 concat_vectors(movddup(x),movddup(x)) -> broadcast(x)

llvm-svn: 355078

5 years ago[ARM GlobalISel] Support global variables for Thumb2
Diana Picus [Thu, 28 Feb 2019 10:42:47 +0000 (10:42 +0000)]
[ARM GlobalISel] Support global variables for Thumb2

Add the same level of support as for ARM mode (i.e. still no TLS
support).

In most cases, it is sufficient to replace the opcodes with the
t2-equivalent, but there are some idiosyncrasies that I decided to
preserve because I don't understand the full implications:
* For ARM we use LDRi12 to load from constant pools, but for Thumb we
  use t2LDRpci (I'm not sure if the ideal would be to use t2LDRi12 for
  Thumb as well, or to use LDRcp for ARM).
* For Thumb we don't have an equivalent for MOV|LDRLIT_ga_pcrel_ldr, so
  we have to generate MOV|LDRLIT_ga_pcrel plus a load from GOT.

The tests are in separate files because they're hard enough to read even
without doubling the number of checks.

llvm-svn: 355077

5 years ago[clang-tidy] misc-string-integer-assignment: fix false positive
Clement Courbet [Thu, 28 Feb 2019 10:33:32 +0000 (10:33 +0000)]
[clang-tidy] misc-string-integer-assignment: fix false positive

Summary:
using CodePoint = uint32_t;
CodePoint cp;
basic_string<CodePoint> s;
s += cp;

See PR27723.

Reviewers: xazax.hun, alexfh

Subscribers: rnkovacs, cfe-commits

Tags: #clang

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

llvm-svn: 355076

5 years ago[LLD][ELF] - Stop using binary input in invalid/tls-symbol.s test. NFCI.
George Rimar [Thu, 28 Feb 2019 09:24:12 +0000 (09:24 +0000)]
[LLD][ELF] - Stop using binary input in invalid/tls-symbol.s test. NFCI.

We can use yaml2obj instead, patch does this.

llvm-svn: 355075

5 years ago[llvm-objdump] - Improve the error message for "removing a section that is used by...
George Rimar [Thu, 28 Feb 2019 08:21:50 +0000 (08:21 +0000)]
[llvm-objdump] - Improve the error message for "removing a section that is used by relocation" case.

This refines/improves the error message introduced in D58625

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

llvm-svn: 355074

5 years ago[llvm-readobj] - Fix the invalid dumping of the dynamic sections without terminating...
George Rimar [Thu, 28 Feb 2019 08:15:59 +0000 (08:15 +0000)]
[llvm-readobj] - Fix the invalid dumping of the dynamic sections without terminating DT_NULL entry.

This is https://bugs.llvm.org/show_bug.cgi?id=40861,

Previously llvm-readobj would print the DT_NULL sometimes
for the dynamic section that has no terminator entry.

The logic of printDynamicTable was a bit overcomplicated.
I rewrote it slightly to fix the issue and commented.

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

llvm-svn: 355073

5 years ago[ValueTracking] More accurate unsigned add overflow detection
Nikita Popov [Thu, 28 Feb 2019 08:11:20 +0000 (08:11 +0000)]
[ValueTracking] More accurate unsigned add overflow detection

Part of D58593.

Compute precise overflow conditions based on all known bits, rather
than just the sign bits. Unsigned a + b overflows iff a > ~b, and we
can determine whether this always/never happens based on the minimal
and maximal values achievable for a and ~b subject to the known bits
constraint.

llvm-svn: 355072

5 years ago[X86] Use PreprocessISelDAG to convert vector sra/srl/shl to the X86 specific variabl...
Craig Topper [Thu, 28 Feb 2019 07:21:26 +0000 (07:21 +0000)]
[X86] Use PreprocessISelDAG to convert vector sra/srl/shl to the X86 specific variable shift ISD opcodes.

These allows use to use the same set of isel patterns for sra/srl/shl which are undefined for out of range shifts and intrinsic shifts which aren't undefined.

Doing this late allows DAG combine to have every opportunity to optimize the sra/srl/shl nodes.

This removes about 7000 bytes from the isel table and simplies the td files.

llvm-svn: 355071

5 years ago[Dominators] Avoid potentially quadratic std::is_permutation
Fangrui Song [Thu, 28 Feb 2019 05:16:01 +0000 (05:16 +0000)]
[Dominators] Avoid potentially quadratic std::is_permutation

Summary:
If the two sequences are not equal, std::is_permutation may be O(N^2)
and indeed the case in libstdc++ and libc++. Use SmallPtrSet to prevent
pessimizing cases. On my machine, SmallPtrSet starts to outperform
std::is_permutation when there are 16 elements.

Reviewers: kuhar

Reviewed By: kuhar

Subscribers: kristina, jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 355070

5 years ago[SelectionDAG] Strengthen assertions about usage of AtomicSDNodes
Philip Reames [Thu, 28 Feb 2019 04:07:23 +0000 (04:07 +0000)]
[SelectionDAG] Strengthen assertions about usage of AtomicSDNodes

In D57601, I described the expectations around usage of AtomicSDNode and LoadSDNode/StoreSDNode w.r.t. atomic and volatiles. This patch simply embeds those expectations in assertions so that they can't be accidentally weakened.

Note: The reason only AtomicSDNodes of ATOMIC_LOAD and ATOMIC_STORE opcode are currently checked is that AMDGPU has an intrinsic which gets lowered to an ATOMIC_LOAD_FADD w/o a corresponding atomic MMO. This is suspicious, and I've brought it to the attention of the relevant developers. Once resolved, I'll strengthen that assertion.

Note 2: If this breaks your out-of-tree backend, go read the update instructions associated w/the previously mentioned patch. This will assert on (a subset of) things you need to update per those instructions.

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

llvm-svn: 355069

5 years agoFix IR/Analysis layering issue with OptBisect
Richard Trieu [Thu, 28 Feb 2019 04:00:55 +0000 (04:00 +0000)]
Fix IR/Analysis layering issue with OptBisect

OptBisect is in IR due to LLVMContext using it.  However, it uses IR units from
Analysis as well.  This change moves getDescription functions from OptBisect
to their respective IR units.  Generating names for IR units will now be up
to the callers, keeping the Analysis IR units in Analysis.  To prevent
unnecessary string generation, isEnabled function is added so that callers know
when the description needs to be generated.

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

llvm-svn: 355068

5 years agoFix SupportTests.exe/AllocationTests/MappedMemoryTest.AllocAndReleaseHuge when the...
Alexandre Ganea [Thu, 28 Feb 2019 03:42:07 +0000 (03:42 +0000)]
Fix SupportTests.exe/AllocationTests/MappedMemoryTest.AllocAndReleaseHuge when the machine doesn't have large pages enabled.

llvm-svn: 355067

5 years agoFix non-Windows platforms build break introduced by r355065. Fixes:
Alexandre Ganea [Thu, 28 Feb 2019 03:03:07 +0000 (03:03 +0000)]
Fix non-Windows platforms build break introduced by r355065. Fixes:

In file included from /home/buildbots/ppc64le-lld-multistage-test/ppc64le-lld-multistage-test/llvm/lib/Support/Memory.cpp:14:
/home/buildbots/ppc64le-lld-multistage-test/ppc64le-lld-multistage-test/llvm/include/llvm/Support/Memory.h:38:14: error: private field 'Flags' is not used [-Werror,-Wunused-private-field]
    unsigned Flags = 0;
             ^
1 error generated.

llvm-svn: 355066

5 years ago[Memory] Add basic support for large/huge memory pages
Alexandre Ganea [Thu, 28 Feb 2019 02:47:34 +0000 (02:47 +0000)]
[Memory] Add basic support for large/huge memory pages

This patch introduces Memory::MF_HUGE_HINT which indicates that allocateMappedMemory() shall return a pointer to a large memory page.
However the flag is a hint because we're not guaranteed in any way that we will get back a large memory page. There are several restrictions:

- Large/huge memory pages aren't enabled by default on modern OSes (Windows 10 and Linux at least), and should be manually enabled/reserved.
- Once enabled, it should be kept in mind that large pages are physical only, they can't be swapped.
- Memory fragmentation can affect the availability of large pages, especially after running the OS for a long time and/or running along many other applications.

Memory::allocateMappedMemory() will fallback to 4KB pages if it can't allocate 2MB large pages (if Memory::MF_HUGE_HINT is provided)

Currently, Memory::MF_HUGE_HINT only works on Windows. The hint will be ignored on Linux, 4KB pages will always be returned.

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

llvm-svn: 355065

5 years ago[sanitizer] Got rid of text relocations in i386 vfork interceptor.
Evgeniy Stepanov [Thu, 28 Feb 2019 01:54:55 +0000 (01:54 +0000)]
[sanitizer] Got rid of text relocations in i386 vfork interceptor.

llvm-svn: 355064

5 years agoMove Symbols.cpp files.
Jason Molenda [Thu, 28 Feb 2019 01:26:01 +0000 (01:26 +0000)]
Move Symbols.cpp files.

llvm-svn: 355063

5 years agoAdd username to TODO comment in sanitizer to satisfy sanitizer lint check. NFC
Douglas Yung [Thu, 28 Feb 2019 01:20:38 +0000 (01:20 +0000)]
Add username to TODO comment in sanitizer to satisfy sanitizer lint check. NFC

llvm-svn: 355062

5 years ago[clang][index-while-building][NFC] Comment about implementation detail in FileIndexRecord
Jan Korous [Thu, 28 Feb 2019 01:12:27 +0000 (01:12 +0000)]
[clang][index-while-building][NFC] Comment about implementation detail in FileIndexRecord

llvm-svn: 355061

5 years agoTemporarily revert "ArgumentPromotion should copy all metadata to new Function" and...
Eric Christopher [Thu, 28 Feb 2019 01:11:12 +0000 (01:11 +0000)]
Temporarily revert "ArgumentPromotion should copy all metadata to new Function" and the dependent patch "Refine ArgPromotion metadata handling" as they're causing segfaults in argument promotion.

This reverts commits r354032 and r353537.

llvm-svn: 355060

5 years ago[X86] Use X86::LAST_VALID_COND instead of assuming X86::COND_S is the last encoding...
Craig Topper [Thu, 28 Feb 2019 01:00:31 +0000 (01:00 +0000)]
[X86] Use X86::LAST_VALID_COND instead of assuming X86::COND_S is the last encoding. NFC

llvm-svn: 355059

5 years agoEnsure that set constrained asm operands are not affected by truncation.
Joerg Sonnenberger [Thu, 28 Feb 2019 00:55:09 +0000 (00:55 +0000)]
Ensure that set constrained asm operands are not affected by truncation.

llvm-svn: 355058

5 years agoAMDGPU/GlobalISel: Add regbankselect test for phis
Matt Arsenault [Thu, 28 Feb 2019 00:52:36 +0000 (00:52 +0000)]
AMDGPU/GlobalISel: Add regbankselect test for phis

Add baseline for future fixes. These mostly show how this is broken
and producing illegal situations.

llvm-svn: 355057

5 years agoAMDGPU: Fix typo
Matt Arsenault [Thu, 28 Feb 2019 00:52:33 +0000 (00:52 +0000)]
AMDGPU: Fix typo

llvm-svn: 355056

5 years ago[Reprodicuers] Check initialization
Jonas Devlieghere [Thu, 28 Feb 2019 00:49:57 +0000 (00:49 +0000)]
[Reprodicuers] Check initialization

If the reproducer is not initialzied, the call to ::Instance() will
result in an assertion.

llvm-svn: 355055

5 years ago[CodeGen] Fix some broken IR generated by -fsanitize=unsigned-integer-overflow
Erik Pilkington [Thu, 28 Feb 2019 00:47:55 +0000 (00:47 +0000)]
[CodeGen] Fix some broken IR generated by -fsanitize=unsigned-integer-overflow

I think the author of the function assumed that `GetInsertBlock()`
wouldn't change from where `atomicPHI` was created, but this isn't
true when `-fsanitize=unsigned-integer-overflow` is enabled (we
generate an overflow/continuation label). Fix by keeping track of the
block we want to return to to complete the cmpxchg loop.

rdar://48406558

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

llvm-svn: 355054

5 years ago[NFC][TSan] Don't define GetStackTrace when compiling for Go
Julian Lettner [Thu, 28 Feb 2019 00:43:43 +0000 (00:43 +0000)]
[NFC][TSan] Don't define GetStackTrace when compiling for Go

rdar://48455255

llvm-svn: 355053

5 years ago[NFC][Sanitizer] Use correct WEAK annotation to make Windows work
Julian Lettner [Thu, 28 Feb 2019 00:43:40 +0000 (00:43 +0000)]
[NFC][Sanitizer] Use correct WEAK annotation to make Windows work

The previous fix didn't work for Windows:
https://github.com/llvm/llvm-project/commit/52b751088b11547e0f4ef0589ebbe5e57752c68c

llvm-svn: 355052

5 years agoAMDGPU: Enable function calls by default
Matt Arsenault [Thu, 28 Feb 2019 00:40:32 +0000 (00:40 +0000)]
AMDGPU: Enable function calls by default

Fixes some crashes on illegal call situations which are unfortunately
still valid IR.

llvm-svn: 355051

5 years ago[AArch64] Generate FP16 vector compare instructions.
Abderrazek Zaafrani [Thu, 28 Feb 2019 00:31:38 +0000 (00:31 +0000)]
[AArch64] Generate FP16 vector compare instructions.
https://reviews.llvm.org/D58561

llvm-svn: 355050

5 years agoAMDGPU: Fix crashes in invalid call cases
Matt Arsenault [Thu, 28 Feb 2019 00:28:44 +0000 (00:28 +0000)]
AMDGPU: Fix crashes in invalid call cases

We have to at least tolerate calls to kernels, possibly with a
mismatched calling convention on the callsite.

llvm-svn: 355049

5 years agoGlobalISel: Implement fewerElementsVector for phi
Matt Arsenault [Thu, 28 Feb 2019 00:16:32 +0000 (00:16 +0000)]
GlobalISel: Implement fewerElementsVector for phi

llvm-svn: 355048

5 years agoGlobalISel: Implement moreElementsVector for phi
Matt Arsenault [Thu, 28 Feb 2019 00:01:05 +0000 (00:01 +0000)]
GlobalISel: Implement moreElementsVector for phi

llvm-svn: 355047

5 years ago[Sanitizer] Attempt to fix linker error on ARM variants
Julian Lettner [Wed, 27 Feb 2019 23:47:00 +0000 (23:47 +0000)]
[Sanitizer] Attempt to fix linker error on ARM variants

Previous commit:
https://github.com/llvm/llvm-project/commit/a0884da62a471f08c65a03e337aea23203a43eb8

llvm-svn: 355046

5 years ago[compiler-rt] Windows Trace Logging for error reports.
Matthew G McGovern [Wed, 27 Feb 2019 23:43:50 +0000 (23:43 +0000)]
[compiler-rt] Windows Trace Logging for error reports.

Adds option for collecting sanitixer dumps via trace logging.
    - Set log_to_syslog=1 to enable this output.
    - Consult https://aka.ms/windowstracelogging for details on use.

llvm-svn: 355045

5 years ago[InstrProf] Use separate comdat group for data and counters
Reid Kleckner [Wed, 27 Feb 2019 23:38:44 +0000 (23:38 +0000)]
[InstrProf] Use separate comdat group for data and counters

Summary:
I hadn't realized that instrumentation runs before inlining, so we can't
use the function as the comdat group. Doing so can create relocations
against discarded sections when references to discarded __profc_
variables are inlined into functions outside the function's comdat
group.

In the future, perhaps we should consider standardizing the comdat group
names that ELF and COFF use. It will save object file size, since
__profv_$sym won't appear in the symbol table again.

Reviewers: xur, vsk

Subscribers: eraman, hiraditya, cfe-commits, #sanitizers, llvm-commits

Tags: #clang, #sanitizers, #llvm

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

llvm-svn: 355044

5 years ago[NFC][libc++] Update comment about oldest supported macosx for back-deployment
Louis Dionne [Wed, 27 Feb 2019 23:36:22 +0000 (23:36 +0000)]
[NFC][libc++] Update comment about oldest supported macosx for back-deployment

llvm-svn: 355043

5 years agoRemove unnecessary demangling operation (NFC)
Adrian Prantl [Wed, 27 Feb 2019 22:54:47 +0000 (22:54 +0000)]
Remove unnecessary demangling operation (NFC)

This extra call to the demangler doesn't affect the performance of C++
because the result is being cached anyway; but I'm working on a patch
to the Swift branch that uses extra contextual information to provide
a more accurate demangling result. In that case this call would be
extra and unnecessary work.

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

llvm-svn: 355042

5 years ago[sanitizer] Fix compilation errors in r355030.
Evgeniy Stepanov [Wed, 27 Feb 2019 22:23:51 +0000 (22:23 +0000)]
[sanitizer] Fix compilation errors in r355030.

Disable hwasan interceptor on non-linux, non-x86-or-arm platforms.
Add @plt to the asm call that clang intergrated-as infers but gcc does
not.

llvm-svn: 355041

5 years ago[MemorySSA] Make insertDef insert corresponding phi nodes.
Alina Sbirlea [Wed, 27 Feb 2019 22:20:22 +0000 (22:20 +0000)]
[MemorySSA] Make insertDef insert corresponding phi nodes.

Summary:
The original assumption for the insertDef method was that it would not
materialize Defs out of no-where, hence it will not insert phis needed
after inserting a Def.

However, when cloning an instruction (use case used in LICM), we do
materialize Defs "out of no-where". If the block receiving a Def has at
least one other Def, then no processing is needed. If the block just
received its first Def, we must check where Phi placement is needed.
The only new usage of insertDef is in LICM, hence the trigger for the bug.

But the original goal of the method also fails to apply for the move()
method. If we move a Def from the entry point of a diamond to either the
left or right blocks, then the merge block must add a phi.
While this usecase does not currently occur, or may be viewed as an
incorrect transformation, MSSA must behave corectly given the scenario.

Resolves PR40749 and PR40754.

Reviewers: george.burgess.iv

Subscribers: sanjoy, jlebar, Prazek, jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 355040

5 years ago[NFC][Sanitizer] Pull up GetStackTrace into sanitizer_common
Julian Lettner [Wed, 27 Feb 2019 22:16:02 +0000 (22:16 +0000)]
[NFC][Sanitizer] Pull up GetStackTrace into sanitizer_common

We already independently declare GetStackTrace in all (except TSan)
sanitizer runtime headers. Lets move it to sanitizer_stacktrace.h to
have one canonical way to fill in a BufferedStackFrame. Also enables us
to use it in sanitizer_common itself.

This patch defines GetStackTrace for TSan and moves the function from
ubsan_diag.cc to ubsan_diag_standalone.cc to avoid duplicate symbols
for the UBSan-ASan runtime.

Other than that this patch just moves the code out of headers and into
the correct namespace.

Reviewers: vitalybuka

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

llvm-svn: 355039

5 years agoDefault to Secure PLT on PPC for NetBSD and OpenBSD.
Joerg Sonnenberger [Wed, 27 Feb 2019 21:53:14 +0000 (21:53 +0000)]
Default to Secure PLT on PPC for NetBSD and OpenBSD.
This matches the default settings of clang.

llvm-svn: 355038

5 years agoRemove dependency from Host -> Core.
Zachary Turner [Wed, 27 Feb 2019 21:53:08 +0000 (21:53 +0000)]
Remove dependency from Host -> Core.

I wasn't actually trying to eliminate this one, but looks like
it happened as a side effect of moving Symbols out of Host.

llvm-svn: 355037

5 years ago[clang][index-while-building][NFC] FileIndexRecord - Comments, replace auto with...
Jan Korous [Wed, 27 Feb 2019 21:48:02 +0000 (21:48 +0000)]
[clang][index-while-building][NFC] FileIndexRecord - Comments, replace auto with type

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

llvm-svn: 355036

5 years ago[clang][index-while-building] FileIndexRecord
Jan Korous [Wed, 27 Feb 2019 21:47:40 +0000 (21:47 +0000)]
[clang][index-while-building] FileIndexRecord

Basic data structures for index

Tests are missing from this patch - will be covered properly by tests for the whole feature.
I'm just trying to split into smaller patches to make it easier for reviewers.

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

llvm-svn: 355035

5 years agoFixup compilation/test failures after r354960 and r355013.
James Y Knight [Wed, 27 Feb 2019 21:47:35 +0000 (21:47 +0000)]
Fixup compilation/test failures after r354960 and r355013.

llvm-svn: 355034

5 years agoUse Secure PLT as default on NetBSD/PowerPC.
Joerg Sonnenberger [Wed, 27 Feb 2019 21:46:01 +0000 (21:46 +0000)]
Use Secure PLT as default on NetBSD/PowerPC.

llvm-svn: 355033

5 years agoMove Host/Symbols.cpp to Symbols/LocateSymbolFile.cpp
Zachary Turner [Wed, 27 Feb 2019 21:42:10 +0000 (21:42 +0000)]
Move Host/Symbols.cpp to Symbols/LocateSymbolFile.cpp

Given that we have a target named Symbols, one wonders why a
file named Symbols.cpp is not in this target.  To be clear,
the functions exposed from this file are really focused on
*locating* a symbol file on a given host, which is where the
ambiguity comes in.  However, it makes more sense conceptually
to be in the Symbols target. While some of the specific places
to search for symbol files might change depending on the Host,
this is not inherently true in the same way that, for example,
"accessing the file system" or "starting threads" is
fundamentally dependent on the Host.

PDBs, for example, recently became a reality on non-Windows platforms,
and it's theoretically possible that DSYMs could become a thing on non
MacOSX platforms (maybe in a remote debugging scenario). Other types of
symbol files, such as DWO, DWP, etc have never been tied to any Host
platform anyway.

After this patch, there is only one remaining dependency from
Host to Target.

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

llvm-svn: 355032

5 years ago[llvm-cxxfilt] Re-enable split and demangle stdin input on certain non-alphanumerics.
Matt Davis [Wed, 27 Feb 2019 21:39:11 +0000 (21:39 +0000)]
[llvm-cxxfilt] Re-enable split and demangle stdin input on certain non-alphanumerics.

This restores the patch that splits demangled stdin input on
non-alphanumerics.  I had reverted this patch earlier because it broke
Windows build-bots.  I have updated the test so that it passes on
Windows.

I was running the test from powershell and never saw the issue until I
switched to the mingw shell.

This reverts commit 628ab5c6820bdf3bb5a8e494b0fd9e7312ce7150.

llvm-svn: 355031

5 years ago[hwasan, asan] Intercept vfork.
Evgeniy Stepanov [Wed, 27 Feb 2019 21:11:50 +0000 (21:11 +0000)]
[hwasan, asan] Intercept vfork.

Summary:
Intercept vfork on arm, aarch64, i386 and x86_64.

Reviewers: pcc, vitalybuka

Subscribers: kubamracek, mgorny, javed.absar, krytarowski, kristof.beyls, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

llvm-svn: 355030

5 years ago[LLD][COFF] Support /threads[:no] like the ELF driver
Alexandre Ganea [Wed, 27 Feb 2019 20:53:50 +0000 (20:53 +0000)]
[LLD][COFF] Support /threads[:no] like the ELF driver

Differential review: https://reviews.llvm.org/D58594

llvm-svn: 355029

5 years ago[hwasan] Fix tests after .cc->.cpp renaming.
Evgeniy Stepanov [Wed, 27 Feb 2019 20:50:35 +0000 (20:50 +0000)]
[hwasan] Fix tests after .cc->.cpp renaming.

llvm-svn: 355028

5 years ago[OPENMP]Delay emission of the error for unsupported types.
Alexey Bataev [Wed, 27 Feb 2019 20:29:45 +0000 (20:29 +0000)]
[OPENMP]Delay emission of the error for unsupported types.

If the type is unsupported on the device side, it still must be emitted,
but we should emit errors for operations with such types.

llvm-svn: 355027

5 years agoPass arguments correctly to the objc object checker on arm64
Jim Ingham [Wed, 27 Feb 2019 20:27:25 +0000 (20:27 +0000)]
Pass arguments correctly to the objc object checker on arm64

Traditionally objc had two entry points, objc_msgSend for scalar
return methods, and objc_msgSend_stret for struct return convention
methods.  But on arm64 the second was not needed (since arm64 doesn't
use an argument register for the struct return pointer) so it was removed.

The code that dispatches to the objc object checker when it sees some
flavor of objc_msgSend was not aware of this change so was sending the
wrong arguments to the checker.

<rdar://problem/48315890>

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

llvm-svn: 355026

5 years agoSeperate volatility and atomicity/ordering in SelectionDAG
Philip Reames [Wed, 27 Feb 2019 20:20:08 +0000 (20:20 +0000)]
Seperate volatility and atomicity/ordering in SelectionDAG

At the moment, we mark every atomic memory access as being also volatile. This is unnecessarily conservative and prohibits many legal transforms (DCE, folding, etc..).

This patch removes MOVolatile from the MachineMemOperands of atomic, but not volatile, instructions. This should be strictly NFC after a series of previous patches which have gone in to ensure backend code is conservative about handling of isAtomic MMOs. Once it's in and baked for a bit, we'll start working through removing unnecessary bailouts one by one. We applied this same strategy to the middle end a few years ago, with good success.

To make sure this patch itself is NFC, it is build on top of a series of other patches which adjust code to (for the moment) be as conservative for an atomic access as for a volatile access and build up a test corpus (mostly in test/CodeGen/X86/atomics-unordered.ll)..

Previously landed

    D57593 Fix a bug in the definition of isUnordered on MachineMemOperand
    D57596 [CodeGen] Be conservative about atomic accesses as for volatile
    D57802 Be conservative about unordered accesses for the moment
    rL353959: [Tests] First batch of cornercase tests for unordered atomics.
    rL353966: [Tests] RMW folding tests w/unordered atomic operations.
    rL353972: [Tests] More unordered atomic lowering tests.
    rL353989: [SelectionDAG] Inline a single use helper function, and remove last non-MMO interface
    rL354740: [Hexagon, SystemZ] Be super conservative about atomics
    rL354800: [Lanai] Be super conservative about atomics
    rL354845: [ARM] Be super conservative about atomics

Attention Out of Tree Backend Owners: This patch may break you. If it does, you can use the TLI getMMOFlags hook to restore the MOVolatile to any instruction you need to. (See llvm-dev thread titled "PSA: Changes to how atomics are handled in backends" started Feb 27, 2019.)

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

llvm-svn: 355025

5 years ago[clang-tidy] Add the abseil-time-subtraction check
Hyrum Wright [Wed, 27 Feb 2019 20:08:50 +0000 (20:08 +0000)]
[clang-tidy] Add the abseil-time-subtraction check

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

llvm-svn: 355024

5 years agoFixed ubsan failures in r355005.
Rong Xu [Wed, 27 Feb 2019 20:01:14 +0000 (20:01 +0000)]
Fixed ubsan failures in r355005.

llvm-svn: 355023

5 years ago[NFC][Sanitizer] Hard-code fast/slow unwinder at call site
Julian Lettner [Wed, 27 Feb 2019 20:01:04 +0000 (20:01 +0000)]
[NFC][Sanitizer] Hard-code fast/slow unwinder at call site

Also assert that the caller always gets what it requested.

This purely mechanical change simplifies future refactorings and
eventual removal of BufferedStackTrace::Unwind.

Reviewers: vitalybuka

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

llvm-svn: 355022

5 years agoRevert "[llvm-cxxfilt] Split and demangle stdin input on certain non-alphanumerics."
Matt Davis [Wed, 27 Feb 2019 19:52:02 +0000 (19:52 +0000)]
Revert "[llvm-cxxfilt] Split and demangle stdin input on certain non-alphanumerics."

This reverts commit 5cd5f8f2563395f8767f94604eb4c4bea8dcbea0.
The test passes on linux, but fails on the windows build-bots.

This test failure seems to be a quoting issue between my test and
FileCheck on Windows.  I'm reverting this patch until I can replicate
and fix in my Windows environment.

llvm-svn: 355021

5 years ago[InstCombine] add tests for add+ext+add; NFC
Sanjay Patel [Wed, 27 Feb 2019 19:27:45 +0000 (19:27 +0000)]
[InstCombine] add tests for add+ext+add; NFC

llvm-svn: 355020

5 years ago[libFuzzer][Windows] Port fork mode to Windows
Jonathan Metzman [Wed, 27 Feb 2019 19:27:16 +0000 (19:27 +0000)]
[libFuzzer][Windows] Port fork mode to Windows

Summary:
Port libFuzzer's fork mode to Windows.
Implement Windows versions of MkDir, RmDir, and IterateDirRecursive to do this.
Don't print error messages under new normal uses of FileSize (on a non-existent file).
Implement portable way of piping output to /dev/null.
Fix test for Windows and comment fork-sigusr.test on why it won't be ported to Win.

Reviewers: zturner

Reviewed By: zturner

Subscribers: kcc, zturner, jdoerfert, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

llvm-svn: 355019

5 years ago[Darwin][NFC] Refactor throttling of 64bit sanitizer tests on Darwin
Julian Lettner [Wed, 27 Feb 2019 19:06:20 +0000 (19:06 +0000)]
[Darwin][NFC] Refactor throttling of 64bit sanitizer tests on Darwin

Underlying condition for throttling is "has large mmap'd regions" (i.e.,
shadow memory) and not sanitizers in general (e.g., UBSan does not need
to be throttled).

Rename parallelism group `darwin-64bit-sanitizer` to `shadow-memory` and
apply it unconditionally to all tests which require it. We can then have
all the Darwin throttling logic in one place in the commen lit config.

Throttle sanitizer_common unit tests. Configuration was previously
missing from sanitizer_common/Unit/lit.site.cfg.

Reviewed by: kubamracek

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

llvm-svn: 355018

5 years agoAdd triples to the test I committed in r355012 to fix windows bots.
Akira Hatanaka [Wed, 27 Feb 2019 18:59:52 +0000 (18:59 +0000)]
Add triples to the test I committed in r355012 to fix windows bots.

llvm-svn: 355017

5 years ago[X86][AVX] Pull out some INSERT_SUBVECTOR combines into a combineConcatVectorOps...
Simon Pilgrim [Wed, 27 Feb 2019 18:46:32 +0000 (18:46 +0000)]
[X86][AVX] Pull out some INSERT_SUBVECTOR combines into a combineConcatVectorOps helper. NFCI

A lot of the INSERT_SUBVECTOR combines can be more generally handled as if they have come from a CONCAT_VECTORS node.

I've been investigating adding a CONCAT_VECTORS combine to X86, but this is a much easier first step that avoids the issue of handling a number of pre-legalization issues that I've encountered.

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

llvm-svn: 355015

5 years ago[llvm-readobj] Print section type values for unknown sections.
Matt Davis [Wed, 27 Feb 2019 18:39:17 +0000 (18:39 +0000)]
[llvm-readobj] Print section type values for unknown sections.

Summary:
This patch displays a hexadecimal section value (Elf_Shdr::sh_type) or section-relative offset when printing unknown sections.

Here is a subset of the output (ignoring the fields following "Type" when dumping an ELF's GNU `--section-headers` table).
Section Headers:
```
  [Nr] Name              Type
  [16] android_rel       LOOS+0x1
  [17] android_rela      LOOS+0x2
  [27] unknown           0x1000: <unknown>
  [28] loos              LOOS+0
  [30] hios              VERSYM
  [31] loproc            LOPROC+0
  [33] hiproc            LOPROC+0xFFFFFFF
  [34] louser            LOUSER+0
  [36] hiuser            LOUSER+0x7FFFFFFF
```

As a comparison, the previous output looked something like the above, but with a blank "Type" field:
```
  [Nr] Name              Type
  [27] unknown
  [28] loos
  [30] hios              VERSYM
  [31] loproc
  [33] hiproc
  [34] louser
  [36] hiuser
```

This fixes PR40773

Reviewers: jhenderson, rupprecht, Bigcheese

Reviewed By: jhenderson, rupprecht, Bigcheese

Subscribers: MaskRay, Bigcheese, srhines, jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 355014