LLVM/llvm 358941llvm/branches/release_80/lib/Target/Mips MipsDSPInstrInfo.td MipsSEInstrInfo.cpp, llvm/branches/release_80/test/CodeGen/Mips micromips-pseudo-mtlohi-expand.ll

Merging r356039:

r356039 | atanasyan | 2019-03-13 04:04:38 -0700 (Wed, 13 Mar 2019) | 11 lines

[MIPS][microMIPS] Fix PseudoMTLOHI_MM matching and expansion

On micromips MipsMTLOHI is always matched to PseudoMTLOHI_DSP regardless
of +dsp argument. This patch checks is HasDSP predicate is present for
PseudoMTLOHI_DSP so PseudoMTLOHI_MM can be matched when appropriate.

Add expansion of PseudoMTLOHI_MM instruction into a mtlo/mthi pair.

Patch by Mirko Brkusanin.

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

LLVM/llvm 358940llvm/trunk/lib/CodeGen BranchRelaxation.cpp

Revert "Use const DebugLoc&"

This reverts r358910 (git commit 2b744665308fc8d30a3baecb4947f2bd81aa7d30)

While this patch *seems* trivial and safe and correct, it is not. The
copies are actually load bearing copies. You can observe this with MSan
or other ways of checking for use-after-destroy, but otherwise this may
result in ... difficult to debug inexplicable behavior.

I suspect the issue is that the debug location is used after the
original reference to it is removed. The metadata backing it gets
destroyed as its last references goes away, and then we reference it
later through these const references.

LLVM/llvm 358939lldb/trunk/source/Plugins/Platform/MacOSX PlatformDarwin.cpp

One small tweak to LocateExecutableScriptingResources - I
was still stat'ing the possibly-dSYM FileSpec before I
(more cheaply) checked the filepath for telltale dSYM

LLVM/llvm 358938lldb/trunk/source/Plugins/Platform/MacOSX PlatformDarwin.cpp

Add a small check to PlatformDarwin::LoadScriptingResourceForModule
which reads the python files in a dSYM bundle, to check that the
SymbolFile is actually a dSYM bundle filepath; delay any fetching
of the ScriptInterpreter until after we've done that check.

When debugging a binary without a dSYM on darwin systems, the
SymbolFile we fetch is actually the ObjectFile -- so we would do
an unnecessary trip into Python land and stat around the filesystem
looking for a python file to read in.  There's no reason to do any
of this unless the SymbolFile's file path includes the .dSYM bundle
telltale path components.


LLVM/llvm 358937libcxxabi/trunk/test uncaught_exception.pass.sh.cpp uncaught_exception.pass.cpp

[libc++abi] Don't use a .sh.cpp test for uncaught_exception

Otherwise, we don't seem to get the DYLD_LIBRARY_PATH set up correctly
and the tests are run against the system libc++abi dylib.

LLVM/llvm 358936llvm/branches/release_80/lib/Target/Mips MicroMipsInstrFPU.td MicroMips32r6InstrInfo.td, llvm/branches/release_80/test/CodeGen/Mips/llvm-ir fptosi.ll

Merging r355825:

r355825 | petarj | 2019-03-11 07:13:31 -0700 (Mon, 11 Mar 2019) | 10 lines

[MIPS][microMIPS] Add a pattern to match TruncIntFP

A pattern needed to match TruncIntFP was missing. This was causing multiple
tests from llvm test suite to fail during compilation for micromips.

Patch by Mirko Brkusanin.

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


LLVM/llvm 358935cfe/trunk/cmake/caches Fuchsia-stage2.cmake, llvm/trunk/runtimes CMakeLists.txt

[CMake] Replace the sanitizer support in runtimes build with multilib

This is a more generic solution; while the sanitizer support can be used
only for sanitizer instrumented builds, the multilib support can be used
to build other variants such as noexcept which is what we would like to use
in Fuchsia.

The name CMake target name uses the target name, same as for the regular
runtimes build and the name of the multilib, concatenated with '+'. The
libraries are installed in a subdirectory named after the multilib.

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

LLVM/llvm 358934llvm/branches/release_80/lib/Target/Mips MipsAsmPrinter.cpp, llvm/branches/release_80/lib/Target/Mips/MCTargetDesc MipsTargetStreamer.cpp

Merging r354882:

r354882 | atanasyan | 2019-02-26 06:45:17 -0800 (Tue, 26 Feb 2019) | 4 lines

[mips] Emit `.module softfloat` directive

This change fixes crash on an assertion in case of using
`soft float` ABI for mips32r6 target.

LLVM/llvm 358933llvm/trunk/tools/dsymutil dsymutil.cpp

Fully qualify llvm::Optional, some compilers complain otherwise.

LLVM/llvm 358932cfe/trunk/include/clang/Basic DiagnosticSemaKinds.td, cfe/trunk/lib/AST DeclBase.cpp

[c++2a] Implement semantic restrictions for 'export' declarations.

LLVM/llvm 358931llvm/trunk/lib/CodeGen/AsmPrinter DwarfCompileUnit.cpp AccelTable.cpp, llvm/trunk/test/DebugInfo/X86 gnu-names.ll accel-tables.ll

DebugInfo: Emit only one kind of accelerated access/name table

Currently to opt in to debug_names in DWARFv5, the IR must contain
'nameTableKind: Default' which also enables debug_pubnames.

Instead, only allow one of {debug_names, apple_names, debug_pubnames,

nameTableKind: Default gives debug_names in DWARFv5 and greater,
debug_pubnames in v4 and earlier - and apple_names when tuning for lldb
on MachO.
nameTableKind: GNU always gives gnu_pubnames

LLVM/llvm 358930llvm/trunk/lib/CodeGen/SelectionDAG SelectionDAG.cpp, llvm/trunk/lib/Target/X86 X86ISelLowering.cpp

[SelectionDAG] move splat util functions up from x86 lowering

This was supposed to be NFC, but the change in SDLoc
definitions causes instruction scheduling changes.

There's nothing x86-specific in this code, and it can
likely be used from DAGCombiner's simplifyVBinOp().

LLVM/llvm 358929lldb/trunk/source/Target Target.cpp

Fix a bug in my change to ModulesDidLoad in r357955.
In the process of hoisting the LoadScriptingResourceForModule
out of Target::ModuleAdded and into Target::ModulesDidLoad,
I had ModulesDidLoad fetching the Target's entire image list
and look for scripting resources in those -- instead of only
looking for scripting resources in the modules that had
been added to the target's image list.


LLVM/llvm 358928lldb/trunk/docs index.rst, lldb/trunk/docs/resources external.rst

[Docs] Move API docs to the front page

This moves the links to the C++ and Python API docs up to the main page.
As of now the links are still broken [1], but at least this will prevent
the additional frustration of searching for the links only to find out
they're broken.

[1] http://lists.llvm.org/pipermail/lldb-dev/2019-April/014992.html

LLVM/llvm 358927llvm/trunk/tools/dsymutil dsymutil.cpp

Try to work around compile errors with older versions of GCC.

LLVM/llvm 358926llvm/trunk/test/CodeGen/AArch64/GlobalISel legalizer-info-validation.mir

Relax test to check for a valid number instead of a specific number.

LLVM/llvm 358925llvm/branches/release_80/lib/Target/Mips MipsFastISel.cpp, llvm/branches/release_80/test/CodeGen/Mips/Fast-ISel pr40325.ll icmpbr1.ll

Merging r354808:

r354808 | nikic | 2019-02-25 10:54:17 -0800 (Mon, 25 Feb 2019) | 11 lines

[Mips] Fix missing masking in fast-isel of br (PR40325)

Fixes https://bugs.llvm.org/show_bug.cgi?id=40325 by zero extending
(and x, 1) the condition before branching on it.

To avoid regressing trivial cases, I'm combining emission of cmp+br
sequences for the single-use + same block case (similar to what we
do in x86). icmpbr1.ll still regresses due to the cross-bb usage
of the condition.

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

LLVM/llvm 358924lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_variables TestGlobalVariables.py TestCPPGlobalVariables.py

Rename C++ TestGlobalVariables.py to have a distinct name from C version.

LLVM/llvm 358923cfe/branches/release_80/lib/CodeGen CGStmtOpenMP.cpp, cfe/branches/release_80/lib/Sema SemaOpenMP.cpp

Merging r356198:

r356198 | abataev | 2019-03-14 13:36:00 -0700 (Thu, 14 Mar 2019) | 5 lines

[OPENMP]Fix crash for the ordered(n) clause.

If the doacross lop construct is used and the loop counter is declare
outside of the loop, the compiler might crash trying to get the address
of the loop counter. Patch fixes this problem.

LLVM/llvm 358922llvm/trunk/lib/Target/AMDGPU SIFoldOperands.cpp, llvm/trunk/test/CodeGen/AMDGPU llvm.amdgcn.fdot2.ll

[AMDGPU] Fix an issue in `op_sel_hi` skipping.

- Only apply packed literal `op_sel_hi` skipping on operands requiring
  packed literals. Even an instruction is `packed`, it may have operand
  requiring non-packed literal, such as `v_dot2_f32_f16`.

Reviewers: rampitec, arsenm, kzhuravl

Subscribers: jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, 

Tags: #llvm

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

LLVM/llvm 358921llvm/trunk/include/llvm/DebugInfo/DWARF DWARFFormValue.h, llvm/trunk/test/tools/dsymutil/Inputs swift-interface.ll

[dsymutil] Collect parseable Swift interfaces in the .dSYM bundle.

When a Swift module built with debug info imports a library without
debug info from a textual interface, the textual interface is
necessary to reconstruct types defined in the library's interface. By
recording the Swift interface files in DWARF dsymutil can collect them
and LLDB can find them.

This patch teaches dsymutil to look for DW_TAG_imported_modules and
records all references to parseable Swift ingterfrace files and copies
them to



LLVM/llvm 358920llvm/branches/release_80/lib/Target/Mips MipsDelaySlotFiller.cpp, llvm/branches/release_80/test/CodeGen/Mips pseudo-jump-fill.ll

Merging r354672:

r354672 | petarj | 2019-02-22 06:53:58 -0800 (Fri, 22 Feb 2019) | 13 lines

[mips][micromips] fix filling delay slots for PseudoIndirectBranch_MM

Filling a delay slot in 32bit jump instructions with a 16bit instruction
can cause issues. According to the documentation such an operation is
This patch adds opcode Mips::PseudoIndirectBranch_MM alongside
Mips::PseudoIndirectBranch and other instructions that are expanded to jr
instruction and do not allow a 16bit instruction in their delay slots.

Patch by Mirko Brkusanin.

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


LLVM/llvm 358919llvm/trunk/lib/Transforms/InstCombine InstCombineCalls.cpp InstCombineLoadStoreAlloca.cpp, llvm/trunk/test/Transforms/InstCombine memcpy.ll memmove.ll

[InstCombine] Eliminate stores to constant memory

If we have a store to a piece of memory which is known constant, then we know the store 
must be storing back the same value. As a result, the store (or memset, or memmove) must 
either be down a dead path, or a noop. In either case, it is valid to simply remove the 

The motivating case for this involves a memmove to a buffer which is constant down a path 
which is dynamically dead.

Note that I'm choosing to implement the less aggressive of two possible semantics here. We 
could simply say that the store *is undefined*, and prune the path. Consensus in the 
review was that the more aggressive form might be a good follow on change at a later date.

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

LLVM/llvm 358918lldb/trunk/unittests/Editline EditlineTest.cpp

[EditLineTest] Not always TERM is available, e.g. on some bots.

LLVM/llvm 358917cfe/trunk/include/clang/Frontend VerifyDiagnosticConsumer.h

[VerifyDiagnosticConsumer] Document -verify=<prefixes> in doxygen

Previously, it was only documented by `-cc1 -help`, so people weren't
aware of it, as discussed in D60732.

Reviewed By: Charusso, NoQ

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

LLVM/llvm 358916lldb/trunk/include/lldb/Utility Reproducer.h, lldb/trunk/source/Utility Reproducer.cpp

[Reproducers] Fix lifetime issue

Deallocating the data recorder in during the ::Keep() operation causes
problems down the line when exiting the debugger. The command
interpreter still holds a pointer to the now deallocated object and has
no way to know it no longer exists. This is exactly what the m_record
flag was meant for, although it wasn't hooked up properly either.

LLVM/llvm 358915libcxx/trunk/lib CMakeLists.txt, libcxx/trunk/utils gen_link_script.py

[libcxx] Update gen_link_script.py to support different input and output

This enables the use of this script from other build systems like
GN which don't support post-build actions as well as for static

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

LLVM/llvm 358914llvm/trunk/unittests/Support Path.cpp

[Support] unflake TempFileCollisions test

This test was added to verify that createUniqueEntity() does
not enter an infinite loop when all possible names are taken. However,
it also checked that all possible names are generated, which is flaky
(because the names are generated randomly). This change increases the
number of attempts we make to make flakes exceedingly
unlikely (3.88e-62).

Reviewers: fedor.sergeev, rsmith

Reviewed By: fedor.sergeev

Subscribers: llvm-commits

Tags: #llvm

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

LLVM/llvm 358913llvm/trunk/lib/Analysis InstructionSimplify.cpp, llvm/trunk/lib/Transforms/InstCombine InstCombineCalls.cpp

[InstSimplify] Move masked.gather w/no active lanes handling to InstSimplify from 

In the process, use the existing masked.load combine which is slightly stronger, and 
handles a mix of zero and undef elements in the mask.  

LLVM/llvm 358912llvm/trunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink BUILD.gn, llvm/trunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink BUILD.gn

gn build: Merge r358869

LLVM/llvm 358911openmp/trunk/runtime/src kmp_os.h

Use correct way to test for MIPS arch after rOMP355687

I ran into some issues after rOMP355687, where __atomic_fetch_add was
being used incorrectly on x86, and this turns out to be caused by the
following added conditionals:

#if defined(KMP_ARCH_MIPS)

The problem is, these macros are always defined, and are either 0 or 1
depending on the architecture.  E.g. the correct way to test for MIPS


Reviewers: petarj, jlpeyton, Hahnfeld, AndreyChurbanov

Reviewed By: petarj, AndreyChurbanov

Subscribers: AndreyChurbanov, sdardis, arichardson, atanasyan, jfb, jdoerfert, 
openmp-commits, llvm-commits

    [4 lines not shown]

LLVM/llvm 358910llvm/trunk/lib/CodeGen BranchRelaxation.cpp

Use const DebugLoc&

LLVM/llvm 358909llvm/trunk/lib/Target/AMDGPU AMDGPUMCInstLower.cpp, llvm/trunk/test/CodeGen/AMDGPU branch-relaxation-debug-info.ll

AMDGPU: Skip debug instructions in assert

These are inserted after branch relaxation, and for some reason it's
decided to put them in the long branch expansion block. It's probably
not great to rely on the source block address, so this should probably
be switched to being PC relative instead of relying on the block

LLVM/llvm 358908libcxx/trunk/test/std/localization/locales/locale.convenience/conversions/conversions.string from_bytes.pass.cpp to_bytes.pass.cpp

[libc++][test] Update some wstring_convert tests for MSVC quirks

Due to MSVC's decision to encode `wchar_t` as UTF-16, it rejects wide
character/string literals that expect a character value greater than
`\xffff`. UTF-16 `wchar_t` is clearly non-conforming, given that the
standard requires wchar_t to be capable of representing all characters
in the supported wide character execution sets, but rejecting e.g.
`\x40003` is a reasonably sane compromise given that encoding choice:
there's an expectation that `\xFOO` produces a single character in the
resulting literal. Consequently `L'\x40003'`/`L"\x40003"` are ill-formed
literals on MSVC. `L'\U00040003'` is a high surrogate (and produces a
warning about ignoring the "second character" in a multi-character
literal), and `L"\U00040003"` is a perfectly-valid `const wchar_t[3]`.

This change updates these tests to use universal-character-names instead
of raw values for the intended character values, which technically makes
them portable even to implementations that don't use a unicode
transformation format encoding for their wide character execution
character set. The two-character literal `L"\u1005e"` is awkward - the
`e` looks like part of the UCN's hex encoding - but necessary to compile
in '03 mode since '03 didn't allow UCNs to be used for members of the
basic execution character set even in character/string literals.

I've also eliminated the extraneous `\x00` "bonus null-terminator" in
some of the string literals which doesn't affect the tested behavior.

    [6 lines not shown]

LLVM/llvm 358907llvm/trunk/test/Transforms/InstCombine masked_intrinsics.ll

[Tests] Revise a test as requested by reviewer in D59703

LLVM/llvm 358906llvm/trunk/test/Transforms/InstCombine masked_intrinsics.ll

[Tests] Add a negative test for masked.gather part of D59703

LLVM/llvm 358905llvm/branches/release_80/lib/CodeGen TargetRegisterInfo.cpp, llvm/branches/release_80/test/CodeGen/X86 regalloc-copy-hints.mir

Merging r355854:

r355854 | jonpa | 2019-03-11 12:00:37 -0700 (Mon, 11 Mar 2019) | 13 lines

[RegAlloc]  Avoid compile time regression with multiple copy hints.

As a fix for https://bugs.llvm.org/show_bug.cgi?id=40986 ("excessive compile
time building opencollada"), this patch makes sure that no phys reg is hinted
more than once from getRegAllocationHints().

This handles the case were many virtual registers are assigned to the same
physreg. The previous compile time fix (r343686) in weightCalcHelper() only
made sure that physical/virtual registers are passed no more than once to

Review: Dimitry Andric, Quentin Colombet

LLVM/llvm 358904cfe/trunk/docs LibASTMatchersReference.html, cfe/trunk/include/clang/ASTMatchers ASTMatchers.h

[ASTMatchers] Introduce Objective-C matchers `isClassMessage`, `isClassMethod`, and 

isClassMessage is an equivalent to isInstanceMessage for ObjCMessageExpr, but matches 
message expressions to classes.

isClassMethod and isInstanceMethod check whether a method declaration (or definition) is 
for a class method or instance method (respectively).

Contributed by @mywman!

Reviewers: benhamilton, klimek, mwyman

Reviewed By: benhamilton, mwyman

Subscribers: cfe-commits

Tags: #clang

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

LLVM/llvm 358903llvm/trunk/lib/Transforms/IPO SCCP.cpp

[IPSCCP] Add missing `AssumptionCacheTracker` dependency

Back in August, r340525 introduced a dependency on the assumption
cache tracker in the ipsccp pass, but that commit missed a call to
INITIALIZE_PASS_DEPENDENCY, which leaves the assumption cache
improperly registered if SCCP is the only thing that pulls it in.

LLVM/llvm 358902openmp/trunk/libomptarget/deviceRTLs/nvptx/test/parallel spmd_parallel_regions.cpp

[OPENMP][NVPTX] Fix the test, NFC.

Fix the test to run it really in SPMD mode without runtime. Previously
it was run in SPMD + full runtime mode and does not allow to cehck the
functionality correctly.

LLVM/llvm 358901llvm/trunk/lib/Transforms/Utils LoopSimplify.cpp LCSSA.cpp, llvm/trunk/test/Other opt-O3-pipeline.ll opt-Os-pipeline.ll

[LPM/BPI] Preserve BPI through trivial loop pass pipeline (e.g. LCSSA, LoopSimplify)

Currently, we do not expose BPI to loop passes at all. In the old pass manager, we appear 
to have been ignoring the fact that LCSSA and/or LoopSimplify didn't preserve BPI, and 
making it available to the following loop passes anyways.  In the new one, it's 
invalidated before running any loop pass if either LCSSA or LoopSimplify actually make 
changes. If they don't make changes, then BPI is valid and available.  So, we go ahead and 
teach LCSSA and LoopSimplify how to preserve BPI for consistency between old and new pass 

This patch avoids an invalidation between the two requires in the following trivial pass 
opt -passes="requires<branch-prob>,loop(no-op-loop),requires<branch-prob>"
(when the input file is one which requires either LCSSA or LoopSimplify to canonicalize 
the loops)

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

LLVM/llvm 358900llvm/trunk/include/llvm/IR Instruction.h Instructions.h, llvm/trunk/lib/IR Instructions.cpp Instruction.cpp

[PGO/SamplePGO][NFC] Move the function updateProfWeight from Instruction
to CallInst.

The issue was raised here: https://reviews.llvm.org/D60903#1472783

The function Instruction::updateProfWeight is only used for CallInst in
profile update. From the current interface, it is very easy to think that
the function can also be used for branch instruction. However, Branch
instruction does't need the scaling the function provides for
branch_weights and VP (value profile), in addition, scaling may introduce
inaccuracy for branch probablity.

The patch moves the function updateProfWeight from Instruction class to
CallInst to remove the confusion. The patch also changes the scaling of
branch_weights from a loop to a block because we know that ProfileData
for branch_weights of CallInst will only have two operands at most.

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

LLVM/llvm 358899lld/trunk/test/wasm undefined-data.ll, lld/trunk/wasm InputFiles.cpp Writer.cpp

[WebAssembly] Error on relocations against undefined data symbols.

We can't (currently) meaningfully resolve certain types of relocations
against undefined data symbols.  Previously when `--allow-undefined` was
used we were treating such relocation much like weak data symbols and
simply inserting zeros.  This change turns such use cases in to an

This means that `--allow-undefined` is no longer effective for data

Fixes https://bugs.llvm.org/show_bug.cgi?id=40364

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

LLVM/llvm 358898cfe/trunk/lib/Sema SemaDeclObjC.cpp

[sema][objc] Minor refactor to OverrideSearch. NFCI.

* Removed a member that was only used during construction.
* Use range-based for iteration when accessing the result of the search.
* Require an `ObjCMethodDecl` reference upon construction of an
* Constify.

Reviewers: rjmccall

Reviewed By: rjmccall

Subscribers: llvm-commits

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

LLVM/llvm 358897llvm/trunk/tools/llvm-bcanalyzer llvm-bcanalyzer.cpp, llvm/trunk/tools/llvm-cov SourceCoverageView.cpp

Use llvm::stable_sort. NFC

LLVM/llvm 358896libunwind/trunk/src UnwindCursor.hpp

[NFC] Fix typo in debug log

LLVM/llvm 358895llvm/trunk/include/llvm/Support JSON.h

Remove spurious semicolons; NFC.

LLVM/llvm 358894llvm/trunk/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp, llvm/trunk/test/CodeGen/AMDGPU/GlobalISel legalize-extract.mir

AMDGPU/GlobalISel: Fix non-power-of-2 G_EXTRACT sources

LLVM/llvm 358893llvm/trunk/include/llvm/ADT STLExtras.h

STLExtras: add stable_sort wrappers

LLVM/llvm 358892llvm/trunk/lib/CodeGen/GlobalISel LegalizerHelper.cpp, llvm/trunk/test/CodeGen/AMDGPU/GlobalISel legalize-extract.mir

GlobalISel: Legalize scalar G_EXTRACT sources