platform/upstream/llvm.git
5 years ago[X86] Add 512-bit fminnum/maxnum test cases for PR40984. Also add v8f32 minnum/maxnum...
Craig Topper [Thu, 7 Mar 2019 05:56:52 +0000 (05:56 +0000)]
[X86] Add 512-bit fminnum/maxnum test cases for PR40984. Also add v8f32 minnum/maxnum tests. NFC

llvm-svn: 355581

5 years ago[WebAssembly] Fix build after rL355577
Sam Clegg [Thu, 7 Mar 2019 04:20:04 +0000 (04:20 +0000)]
[WebAssembly] Fix build after rL355577

Turns own that IsUsedInRegularObject is set for lazy (archive) symbols.

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

llvm-svn: 355580

5 years agoSkip TestGdbserverPort.test on Windows
Jan Kratochvil [Thu, 7 Mar 2019 03:41:00 +0000 (03:41 +0000)]
Skip TestGdbserverPort.test on Windows

lldb/cmake/modules/LLDBConfig.cmake does not build lldb-server on Windows:
if (CMAKE_SYSTEM_NAME MATCHES "Android|Darwin|FreeBSD|Linux|NetBSD")
    set(LLDB_CAN_USE_LLDB_SERVER 1)

Also do not append 'platform' parameter twice - although that was quietly
ignored.

llvm-svn: 355579

5 years agoWhen disassembling Aarch64 target and vendor Apple, set the cpu to
Jason Molenda [Thu, 7 Mar 2019 03:16:45 +0000 (03:16 +0000)]
When disassembling Aarch64 target and vendor Apple, set the cpu to
"apple-latest" which llvm uses to indicate the newest supported ISA.
Add a unit test; I'm only testing an armv8.1 instruction in this
unit test which would already be disassembled correctly because we
set the disassembler to ARM v8.2 mode, but it ensures that nothing
has been broken by adding this cpu spec.

<rdar://problem/38714781>

llvm-svn: 355578

5 years ago[WebAssembly] LTO: Don't include bitcode-only symbols in the symtab
Sam Clegg [Thu, 7 Mar 2019 02:43:19 +0000 (02:43 +0000)]
[WebAssembly] LTO: Don't include bitcode-only symbols in the symtab

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

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

llvm-svn: 355577

5 years ago[InterleavedAccessAnalysis] Use fixed size integers for InterleaveGroup.
Florian Hahn [Thu, 7 Mar 2019 02:19:11 +0000 (02:19 +0000)]
[InterleavedAccessAnalysis] Use fixed size integers for InterleaveGroup.

Reviewers: Ayal, hsaito, anna, efriedma, dorit

Reviewed By: efriedma

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 355576

5 years agoRepair the build when LLDB_DISABLE_PYTHON is set
Alex Langford [Thu, 7 Mar 2019 01:02:55 +0000 (01:02 +0000)]
Repair the build when LLDB_DISABLE_PYTHON is set

Summary:
If LLDB_DISABLE_PYTHON is set, some functions are unavailable but
SBReproducer assumes they are. Let's conditionally register those functions
since they are conditionally declared.

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

llvm-svn: 355575

5 years agoAMDGPU: Handle "uniform-work-group-size" attribute (fix for RADV)
Aakanksha Patil [Thu, 7 Mar 2019 00:54:04 +0000 (00:54 +0000)]
AMDGPU: Handle "uniform-work-group-size" attribute (fix for RADV)

A previous patch for "uniform-work-group-size" attribute was found to break
some RADV and possibly radeon SI tests and had to be retracted.
This patch fixes that.

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

llvm-svn: 355574

5 years agoAvoid using -S in combination with "script"; it's unreliable.
Adrian Prantl [Thu, 7 Mar 2019 00:46:56 +0000 (00:46 +0000)]
Avoid using -S in combination with "script"; it's unreliable.

llvm-svn: 355573

5 years agocrashlog.py: Catch exception from subprocess.
Adrian Prantl [Thu, 7 Mar 2019 00:41:51 +0000 (00:41 +0000)]
crashlog.py: Catch exception from subprocess.

llvm-svn: 355572

5 years agoRelax testcase.
Adrian Prantl [Thu, 7 Mar 2019 00:34:13 +0000 (00:34 +0000)]
Relax testcase.

Recent versions of llvm monorepo builds build libc++abi.dylib as libc++abi.1.dylib.
This accespts both variants.

llvm-svn: 355571

5 years ago[Reproducers] Add tests for different types of functionality
Jonas Devlieghere [Thu, 7 Mar 2019 00:24:44 +0000 (00:24 +0000)]
[Reproducers] Add tests for different types of functionality

This patch adds test that check that functionality in lldb continues to
work when replaying a reproducer.

 - Entries in image list are identical.
 - That stepping behaves the same.
 - That the data formatters behave the same.

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

llvm-svn: 355570

5 years agoPromote more debug-only assertions to regular assertions.
Adrian Prantl [Thu, 7 Mar 2019 00:14:20 +0000 (00:14 +0000)]
Promote more debug-only assertions to regular assertions.

llvm-svn: 355569

5 years agoPromote more debug-only assertions to regular assertions.
Adrian Prantl [Thu, 7 Mar 2019 00:10:11 +0000 (00:10 +0000)]
Promote more debug-only assertions to regular assertions.

llvm-svn: 355568

5 years ago[Python] Unbreak the recently modified tests for python 2.
Davide Italiano [Wed, 6 Mar 2019 23:50:36 +0000 (23:50 +0000)]
[Python] Unbreak the recently modified tests for python 2.

llvm-svn: 355566

5 years agoRemove the warning in
Jason Molenda [Wed, 6 Mar 2019 23:47:52 +0000 (23:47 +0000)]
Remove the warning in
DynamicLoaderDarwinKernel::KextImageInfo::LoadImageUsingMemoryModule
which would list every kext that failed to load when doing kernel
debugging.  Instead, in DynamicLoaderDarwinKernel::ParseKextSummaries,
print a summary of how many kexts lldb was unable to load at the end.

I want to reduce the amount of output at the start of kernel debug
sessions a bit; we'll see if anyone really wanted to see the list of
which kexts specifically were unable to be loaded.

No functional change, only changing lldb's output at the start of
a kernel debug session.

<rdar://problem/48654569>

llvm-svn: 355565

5 years ago[LoopRotate] fix crash encountered with callbr
Nick Desaulniers [Wed, 6 Mar 2019 23:04:40 +0000 (23:04 +0000)]
[LoopRotate] fix crash encountered with callbr

Summary:
While implementing inlining support for callbr
(https://bugs.llvm.org/show_bug.cgi?id=40722), I hit a crash in Loop
Rotation when trying to build the entire x86 Linux kernel
(drivers/char/random.c). This is a small fix up to r353563.

Test case is drivers/char/random.c (with callbr's inlined), then ran
through creduce, then `opt -opt-bisect-limit=<limit>`, then bugpoint.

Thanks to Craig Topper for immediately spotting the fix, and teaching me
how to fish.

Reviewers: craig.topper, jyknight

Reviewed By: craig.topper

Subscribers: hiraditya, llvm-commits, srhines

Tags: #llvm

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

llvm-svn: 355564

5 years ago[PGO] Re-submit: Clang part of change for context-sensitive PGO (part2)
Rong Xu [Wed, 6 Mar 2019 23:00:38 +0000 (23:00 +0000)]
[PGO] Re-submit: Clang part of change for context-sensitive PGO (part2)

Part 2 of CSPGO change in Clang: Add test cases.

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

llvm-svn: 355563

5 years ago[testsuite] Port crashlog to python 3, second attempt.
Davide Italiano [Wed, 6 Mar 2019 22:54:11 +0000 (22:54 +0000)]
[testsuite] Port crashlog to python 3, second attempt.

llvm-svn: 355562

5 years agoFix Cmake files for ExpressionSourceCode.cpp -> ClangExpressionSourceCode.cpp.
Jim Ingham [Wed, 6 Mar 2019 22:53:38 +0000 (22:53 +0000)]
Fix Cmake files for ExpressionSourceCode.cpp -> ClangExpressionSourceCode.cpp.

llvm-svn: 355561

5 years agoFactor the clang specific parts of ExpressionSourceCode.{h,cpp} into the clang plugin.
Jim Ingham [Wed, 6 Mar 2019 22:43:25 +0000 (22:43 +0000)]
Factor the clang specific parts of ExpressionSourceCode.{h,cpp} into the clang plugin.

NFC

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

llvm-svn: 355560

5 years agoPass /bigobj for SBReproducer.cpp with MSVC
Zachary Turner [Wed, 6 Mar 2019 22:42:34 +0000 (22:42 +0000)]
Pass /bigobj for SBReproducer.cpp with MSVC

/BIGOBJ is used to bypass certain COFF file format
limitations and is used with, unsurprisingly, very big
object files.  This file has grown large enough that it
needs this flag in order to compile successfully.

llvm-svn: 355559

5 years ago[mips] Replace assertion by error message while lowering `RETURNADDR` and `FRAMEADDR`
Simon Atanasyan [Wed, 6 Mar 2019 22:40:28 +0000 (22:40 +0000)]
[mips] Replace assertion by error message while lowering `RETURNADDR` and `FRAMEADDR`

MIPS target supports lowering `RETURNADDR` and `FRAMEADDR` for a current
frame only. It's better to show an error message then crash on assertion
if `__builtin_return_address` is invoked with non-zero argument.

llvm-svn: 355558

5 years ago[lldb-vscode] Correctly propagate errors back to VS Code.
Zachary Turner [Wed, 6 Mar 2019 22:30:06 +0000 (22:30 +0000)]
[lldb-vscode] Correctly propagate errors back to VS Code.

llvm-svn: 355557

5 years ago[PGO] Fix hexagon buildbot errors in r355541
Rong Xu [Wed, 6 Mar 2019 22:16:47 +0000 (22:16 +0000)]
[PGO] Fix hexagon buildbot errors in r355541

Add "REQUIRES: x86-registered-target" to thinlto test cases.

llvm-svn: 355556

5 years ago[debugserver] Fix IsUserReady thread filtering
Frederic Riss [Wed, 6 Mar 2019 21:56:14 +0000 (21:56 +0000)]
[debugserver] Fix IsUserReady thread filtering

Summary:
In 2010 (r118866), filtering code was added to debugserver to avoid reporting threads
that were "not ready to be displayed to the user". This code inspects the thread's
state and discards threads marked 'uninterruptible'. Turns out, this state is pretty
common and not only a characterisitic of 'user-readiness'. This filtering was tracked
down as the source of the flakiness of TestQueues and TestConcurrent* with the symptom
of missing threads.

We discussed with the kernel team and there should be no need for us to filter the
restult of task_threads(). Everything that is returned from there can be examined.
So I went on and tried to remove the filtering completely. This produces other test
failures, where we were reporting more theads than expected. Always threads that had
been terminated, but weren't removed from the task bookkeeping structures yet. Those
threads always had a PC of 0.

This patch changes the heuristic to make the filtering a little less strict and only
rejects threads that are 'uninteruptible' *and* have a PC of 0. This has proven to be
solid in my testing.

Reviewers: jasonmolenda, clayborg, jingham

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 355555

5 years agoSanity check --max-gdbserver-port
Jan Kratochvil [Wed, 6 Mar 2019 21:52:19 +0000 (21:52 +0000)]
Sanity check --max-gdbserver-port

In mail
[lldb-dev] Remote debugging a docker process
https://lists.llvm.org/pipermail/lldb-dev/2019-March/014795.html
user was confused by --min-gdbserver-port and --max-gdbserver-port options
being ignored. I think there is even a bug that --max-gdbserver-port is upper
exclusive limit (and not upper inclusive limit appropriate for max).

At least this patch should catch such mistake by an error message. The question
is whether --max-gdbserver-port should not be changed to really be max and not
max+1 but that would break backward compatibility.

Now the mail example does produce:
error: --min-gdbserver-port (5001) is not lower than --max-gdbserver-port (5001)

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

llvm-svn: 355554

5 years agoPass ConstString by value (NFC)
Adrian Prantl [Wed, 6 Mar 2019 21:22:25 +0000 (21:22 +0000)]
Pass ConstString by value (NFC)

My apologies for the large patch. With the exception of ConstString.h
itself it was entirely produced by sed.

ConstString has exactly one const char * data member, so passing a
ConstString by reference is not any more efficient than copying it by
value. In both cases a single pointer is passed. But passing it by
value makes it harder to accidentally return the address of a local
object.

(This fixes rdar://problem/48640859 for the Apple folks)

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

llvm-svn: 355553

5 years agogn build: Merge r355514.
Peter Collingbourne [Wed, 6 Mar 2019 21:21:45 +0000 (21:21 +0000)]
gn build: Merge r355514.

llvm-svn: 355552

5 years ago[CUDA][HIP][DebugInfo] Skip reference device function
Michael Liao [Wed, 6 Mar 2019 21:16:27 +0000 (21:16 +0000)]
[CUDA][HIP][DebugInfo] Skip reference device function

Summary:
- A device functions could be used as a non-type template parameter in a
  global/host function template. However, we should not try to retrieve that
  device function and reference it in the host-side debug info as it's
  only valid at device side.

Subscribers: aprantl, jdoerfert, cfe-commits

Tags: #clang

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

llvm-svn: 355551

5 years ago[libc++] Fix use-after-free when building with _LIBCPP_DEBUG=1
Thomas Anderson [Wed, 6 Mar 2019 21:10:08 +0000 (21:10 +0000)]
[libc++] Fix use-after-free when building with _LIBCPP_DEBUG=1

The issue is the following code:

    __cn1->__add(*__ip);
    (*__ip)->__c_ = __cn1;

`__ip` points into the array of iterators for container `__cn2`.  This code adds
the iterator to the array of iterators for `__cn1`, and updates the iterator to
point to the new container.

This code works fine, except when `__cn1` and `__cn2` are the same container.
`__cn1->__add()` might need to grow the array of iterators, and when it does,
`__ip` becomes invalid, so the second line becomes a use-after-free error.

Simply swapping the order of the above two lines is not sufficient, because of
the memmove() below.  The easiest and most performant solution is just to skip
touching any iterators if the containers are the same.

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

llvm-svn: 355550

5 years agoAMDGPU: Fix the mapping of sub group sync scope
Konstantin Zhuravlyov [Wed, 6 Mar 2019 20:54:48 +0000 (20:54 +0000)]
AMDGPU: Fix the mapping of sub group sync scope

Map memory_scope_sub_group to "wavefront" sync scope

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

llvm-svn: 355549

5 years agoRemove redundant second os.path.join call [NFC]
Raphael Isemann [Wed, 6 Mar 2019 20:51:28 +0000 (20:51 +0000)]
Remove redundant second os.path.join call [NFC]

llvm-svn: 355548

5 years agoPassthrough compiler launcher
JF Bastien [Wed, 6 Mar 2019 20:36:00 +0000 (20:36 +0000)]
Passthrough compiler launcher

Summary: Not having this seems like an oversight, and makes stage2 builds odd.

Reviewers: ddunbar, dexonsmith

Subscribers: mgorny, jkorous, jdoerfert, cfe-commits

Tags: #clang

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

llvm-svn: 355547

5 years agoFix ABI compatibility of `<stdexcept>` with VCRuntime.
Eric Fiselier [Wed, 6 Mar 2019 20:31:57 +0000 (20:31 +0000)]
Fix ABI compatibility of `<stdexcept>` with VCRuntime.

Summary:
Currently, libc++'s `<stdexcept>` doesn't play nice with `vcruntime`. Specifically:

* `logic_error` and `runtime_error` have a different layout.
* libc++'s `logic_error` and `runtime_error` override `what()` but `vcruntime` does not.
*  `vcruntime` uses weak vtables for `<stdexcept>` types.
* libc++'s `<stdexcept>` constructors and assignment operators may have different manglings than `vcruntimes`.

This patch makes libc++'s declarations in `<stdexcept>` match those provided by MSVC's STL as closely as possible.
If MSVC doesn't declare a special member, then neither do we. This ensures that the implicit definitions have the same linkage, visibility, triviality, and noexcept-ness.

Reviewers: thomasanderson, ldionne, smeenai

Reviewed By: thomasanderson

Subscribers: jdoerfert, libcxx-commits

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

llvm-svn: 355546

5 years ago[AArch64] Improve FP16 instruction selection for vector round and vector conver from...
Abderrazek Zaafrani [Wed, 6 Mar 2019 20:30:06 +0000 (20:30 +0000)]
[AArch64] Improve FP16 instruction selection for vector round and vector conver from half instructions
https://reviews.llvm.org/D58855

llvm-svn: 355545

5 years ago[X86] Add vector mulo with power of two operand tests; NFC
Nikita Popov [Wed, 6 Mar 2019 20:25:49 +0000 (20:25 +0000)]
[X86] Add vector mulo with power of two operand tests; NFC

llvm-svn: 355544

5 years ago[LLD][COFF] More detailed information for /failifmismatch
Alexandre Ganea [Wed, 6 Mar 2019 20:18:38 +0000 (20:18 +0000)]
[LLD][COFF] More detailed information for /failifmismatch

When mismatched #pragma detect_mismatch declarations occur, now print the conflicting OBJs.

  lld-link: error: /failifmismatch: mismatch detected for 'TEST':
  >>> test.obj has value 1
  >>> test2.obj has value 2

Fixes PR38579

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

llvm-svn: 355543

5 years ago[PS4] Emit a trap after a stack-protector fail call.
Paul Robinson [Wed, 6 Mar 2019 19:57:43 +0000 (19:57 +0000)]
[PS4] Emit a trap after a stack-protector fail call.

llvm-svn: 355542

5 years ago[PGO] Context sensitive PGO (part 4)
Rong Xu [Wed, 6 Mar 2019 19:31:37 +0000 (19:31 +0000)]
[PGO] Context sensitive PGO (part 4)

Part 4 of CSPGO changes:
(1) add support in cmake for cspgo build.
(2) fix an issue in big endian.
(3) test cases.

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

llvm-svn: 355541

5 years ago[AtomicExpand] Allow libcall expansion for non-zero address spaces (try 2)
Philip Reames [Wed, 6 Mar 2019 19:27:13 +0000 (19:27 +0000)]
[AtomicExpand] Allow libcall expansion for non-zero address spaces (try 2)

Restore a reverted commit, with the silly mistake fixed.  Sorry for the previous breakage.

Be consistent about how we treat atomics in non-zero address spaces.  If we get to the backend, we tend to lower them as if in address space 0.  Do the same if we need to insert a libcall instead.

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

llvm-svn: 355540

5 years ago[NFC][TSan][libdispatch] Rename tsan_block_context_t -> block_context_t
Julian Lettner [Wed, 6 Mar 2019 19:27:10 +0000 (19:27 +0000)]
[NFC][TSan][libdispatch] Rename tsan_block_context_t -> block_context_t

'tsan_' part of the struct name is redundant since we are already inside
the __tsan namespace.

llvm-svn: 355539

5 years ago[tsan] Support interception of libdispatch on Linux
Julian Lettner [Wed, 6 Mar 2019 19:25:09 +0000 (19:25 +0000)]
[tsan] Support interception of libdispatch on Linux

This is a new attempt for bringing TSan libdispatch support to Linux.
The main issue with the last patch (https://reviews.llvm.org/D53171) was
that we want to avoid building a separate library.

The updated plan is as follows:
1) Hide libdispatch support behind a flag: true on Darwin, false
   elsewhere. If flag is specified, assume that libdispatch header and
   -flbocks is available for building. This way we can directly include
   the libdispatch header and rely on blocks runtime for our
   implementation.
2) Optionally/weakly intercept libdispatch API functions.

This patch accomplishes 1). It compiles (without the flag enabled) on
Linux. Follow-up patches will provide 2) and enabling of tests on Linux.

Reviewed By: dvyukov

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

llvm-svn: 355538

5 years agoRevert "[IR][ARM] Add function pointer alignment to datalayout"
Mitch Phillips [Wed, 6 Mar 2019 19:17:18 +0000 (19:17 +0000)]
Revert "[IR][ARM] Add function pointer alignment to datalayout"

This reverts commit 2391bfca97290181ae65796ea6da135d1b6d037b.

This reverts rL355522 (https://reviews.llvm.org/D57335).

Kills buildbots that use '-Werror' with the following error:
/var/lib/buildbot/sanitizer-buildbot6/sanitizer-x86_64-linux-android/build/llvm/lib/IR/Value.cpp:657:7: error: default label in switch which covers all enumeration values [-Werror,-Wcovered-switch-default]

See buildbots http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/30200/steps/check-llvm%20asan/logs/stdio for more information.

llvm-svn: 355537

5 years agoTry again to fix OSX compilation failure.
Zachary Turner [Wed, 6 Mar 2019 19:14:41 +0000 (19:14 +0000)]
Try again to fix OSX compilation failure.

llvm-svn: 355536

5 years ago[AArch64] add tests for uaddsat/usubsat; NFC
Sanjay Patel [Wed, 6 Mar 2019 19:02:01 +0000 (19:02 +0000)]
[AArch64] add tests for uaddsat/usubsat; NFC

The tests are copied from the sibling x86 test files.

llvm-svn: 355535

5 years ago[AArch64] Remove a stray test from the AArch64 directory.
Amara Emerson [Wed, 6 Mar 2019 18:54:07 +0000 (18:54 +0000)]
[AArch64] Remove a stray test from the AArch64 directory.

llvm-svn: 355534

5 years ago[DAGCombine] Improve select (not Cond), N1, N2 -> select Cond, N2, N1 fold
Simon Pilgrim [Wed, 6 Mar 2019 18:52:52 +0000 (18:52 +0000)]
[DAGCombine] Improve select (not Cond), N1, N2 -> select Cond, N2, N1 fold

Move the x86 combine from D58974 into the DAGCombine VSELECT code and update the SELECT version to use the isBooleanFlip helper as well.

Requested by @spatel on D59006

llvm-svn: 355533

5 years ago[PowerPC] Use real pointers instead of undef
Simon Pilgrim [Wed, 6 Mar 2019 18:49:39 +0000 (18:49 +0000)]
[PowerPC] Use real pointers instead of undef

The reduced test removed the pointer arguments, but to better survive D58017 and D58070 we need them back.

llvm-svn: 355532

5 years agoTry to fix OSX compilation failure.
Zachary Turner [Wed, 6 Mar 2019 18:44:27 +0000 (18:44 +0000)]
Try to fix OSX compilation failure.

llvm-svn: 355531

5 years ago[InstCombine] Fold add nsw + sadd.with.overflow
Nikita Popov [Wed, 6 Mar 2019 18:30:00 +0000 (18:30 +0000)]
[InstCombine] Fold add nsw + sadd.with.overflow

Fold `add nsw` and `sadd.with.overflow` with constants if the addition
does not overflow.

Part of https://bugs.llvm.org/show_bug.cgi?id=38146.

Patch by Dan Robertson.

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

llvm-svn: 355530

5 years ago[PPC] Adjust the computed branch offset for the possible shorter distance
Guozhi Wei [Wed, 6 Mar 2019 18:22:22 +0000 (18:22 +0000)]
[PPC] Adjust the computed branch offset for the possible shorter distance

In file PPCBranchSelector.cpp we tend to over estimate code size due to large
alignment and inline assembly. Usually it causes larger computed branch offset,
it is not big problem. But sometimes it may also causes smaller computed branch
offset than actual branch offset. If the offset is close to the limit of
encoding, it may cause problem at run time.
Following is a simplified example.

           actual        estimated
           address        address
 ...
bne Far      100            10c
.p2align 4
Near:        110            110
 ...
Far:        8108           8108

Actual offset:    0x8108 - 0x100 = 0x8008
Computed offset:  0x8108 - 0x10c = 0x7ffc

The computed offset is at most ((1 << alignment) - 4) bytes smaller than actual
offset. So we add this number to the offset for safety.

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

llvm-svn: 355529

5 years agoResubmit "Don't include UnixSignals.h from Host."
Zachary Turner [Wed, 6 Mar 2019 18:20:23 +0000 (18:20 +0000)]
Resubmit "Don't include UnixSignals.h from Host."

This was reverted because it breaks the GreenDragon bot, but
the reason for the breakage is lost, so I'm resubmitting this
now so we can find out what the problem is.

llvm-svn: 355528

5 years ago[MC][MachO] Emit an error for emitting relocations of the form -SYM + cst
Francis Visoiu Mistrih [Wed, 6 Mar 2019 18:10:41 +0000 (18:10 +0000)]
[MC][MachO] Emit an error for emitting relocations of the form -SYM + cst

Emit an error for an unsupported relocation. mach-o relocations can't
encode the form -SYM + cst.

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

llvm-svn: 355527

5 years agoFix core files for 32 bit architectures that are supported in ProcessELFCore.cpp
Greg Clayton [Wed, 6 Mar 2019 18:04:10 +0000 (18:04 +0000)]
Fix core files for 32 bit architectures that are supported in ProcessELFCore.cpp

Core files need to know the size of the PRSTATUS header so that we can grab the register values that follow it. The code that figure out this size was using a hard coded list of architecture cores instead of relying on 32 or 64 bit for most cores.

The fix here fixes core files for 32 bit ARM. Prior to this the PRSTATUS header size was being returned as zero and the register values were being taken from the first bytes of the PRSTATUS struct (signo, etc).

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

llvm-svn: 355526

5 years agoAdding test to cover the correct import of SourceLocation pertaining to a built-in...
Shafik Yaghmour [Wed, 6 Mar 2019 18:03:54 +0000 (18:03 +0000)]
Adding test to cover the correct import of SourceLocation pertaining to a built-in during expression parsing

Summary: This tests a fix in the ASTImpoter.cpp to ensure that we import built-in correctly,
see differential: https://reviews.llvm.org/D58743
Once this change is merged this test should pass and should catch regressions in this feature.

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

llvm-svn: 355525

5 years ago[Hexagon] Avoid creating 5-instruction packets with vgather pseudos
Krzysztof Parzyszek [Wed, 6 Mar 2019 17:43:50 +0000 (17:43 +0000)]
[Hexagon] Avoid creating 5-instruction packets with vgather pseudos

Change the resource usage of the vgather pseudos from SLOT0+LD to
SLOT0+SLOT1.

llvm-svn: 355524

5 years agoRe-apply "Fix embedded Python initialization according to changes in version 3.7"
Tatyana Krasnukha [Wed, 6 Mar 2019 17:27:40 +0000 (17:27 +0000)]
Re-apply "Fix embedded Python initialization according to changes in version 3.7"

llvm-svn: 355523

5 years ago[IR][ARM] Add function pointer alignment to datalayout
Michael Platings [Wed, 6 Mar 2019 17:24:11 +0000 (17:24 +0000)]
[IR][ARM] Add function pointer alignment to datalayout

Use this feature to fix a bug on ARM where 4 byte alignment is
incorrectly assumed.

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

llvm-svn: 355522

5 years ago[libc++] Do not specify the underlying type of memory_order
Louis Dionne [Wed, 6 Mar 2019 17:07:24 +0000 (17:07 +0000)]
[libc++] Do not specify the underlying type of memory_order

Summary:
This breaks ABI for folks using -fshort-enums, and does not really buy
us anything.

http://llvm.org/PR40977

Reviewers: mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits, zoecarver

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

llvm-svn: 355521

5 years ago[AMDGPU] Add support for 64 bit buffer atomic artihmetic instructions
Ryan Taylor [Wed, 6 Mar 2019 17:02:06 +0000 (17:02 +0000)]
[AMDGPU] Add support for 64 bit buffer atomic artihmetic instructions

Summary:
This adds support for 64 bit buffer atomic arithmetic instructions but does not include
cmpswap as that depends on a fix to the way the register pairs are handled

Change-Id: Ib207ea65fb69487ccad5066ea647ae8ddfe2ce61

Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, jfb, llvm-commits

Tags: #llvm

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

llvm-svn: 355520

5 years ago[Reproducers] Guard register macros that take lldb::thread_t on Windows
Jonas Devlieghere [Wed, 6 Mar 2019 16:42:33 +0000 (16:42 +0000)]
[Reproducers] Guard register macros that take lldb::thread_t on Windows

On Windows, lldb::thread_t is just a void*, so the we will try to
allocate an object of type void when deserializing. Undef this for now
until we support void* arguments.

llvm-svn: 355519

5 years ago[Reproducers] Don't use VLA in SBReproducer redirect
Jonas Devlieghere [Wed, 6 Mar 2019 16:33:48 +0000 (16:33 +0000)]
[Reproducers] Don't use VLA in SBReproducer redirect

This should unbreak the Windows bot.

llvm-svn: 355518

5 years ago[DAGCombiner] Enable UADDO/USUBO vector combine support
Simon Pilgrim [Wed, 6 Mar 2019 16:11:03 +0000 (16:11 +0000)]
[DAGCombiner] Enable UADDO/USUBO vector combine support

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

llvm-svn: 355517

5 years ago[TargetLowering] simplify code for uaddsat/usubsat expansion; NFC
Sanjay Patel [Wed, 6 Mar 2019 16:06:27 +0000 (16:06 +0000)]
[TargetLowering] simplify code for uaddsat/usubsat expansion; NFC

We had 2 local variable names for the same type.

llvm-svn: 355516

5 years agoRevert "[CodeGen] Omit range checks from jump tables when lowering switches with...
Alexander Kornienko [Wed, 6 Mar 2019 15:23:50 +0000 (15:23 +0000)]
Revert "[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default"

This reverts commit 2a0f2c5ef3330846149598220467d9f3c6e8b99c (r355490).

The commit causes an assertion failure when compiling LLVM code:
$ cat repro.cpp
class QQQ {
public:
  bool x() const;
  bool y() const;
  unsigned getSizeInBits() const {
    if (y() || x())
      return getScalarSizeInBits();
    return getScalarSizeInBits() * 2;
  }
  unsigned getScalarSizeInBits() const;
};
int f(const QQQ &Ty) {
  switch (Ty.getSizeInBits()) {
    case 1:
    case 8:
      return 0;
    case 16:
      return 1;
    case 32:
      return 2;
    case 64:
      return 3;
    default:
      __builtin_unreachable();
  }
}
$ clang -O2 -o repro.o repro.cpp
assert.h assertion failed at llvm/include/llvm/ADT/ilist_iterator.h:139 in llvm::ilist_iterator::reference llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, true, false>::operator*() const [OptionsT = llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, IsReverse = true, IsConst = false]: !NodePtr->isKnownSentinel()
*** Check failure stack trace: ***
    @     0x558aab4afc10  __assert_fail
    @     0x558aa885479b  llvm::ilist_iterator<>::operator*()
    @     0x558aa8854715  llvm::MachineInstrBundleIterator<>::operator*()
    @     0x558aa92c33c3  llvm::X86InstrInfo::optimizeCompareInstr()
    @     0x558aa9a9c251  (anonymous namespace)::PeepholeOptimizer::optimizeCmpInstr()
    @     0x558aa9a9b371  (anonymous namespace)::PeepholeOptimizer::runOnMachineFunction()
    @     0x558aa99a4fc8  llvm::MachineFunctionPass::runOnFunction()
    @     0x558aab019fc4  llvm::FPPassManager::runOnFunction()
    @     0x558aab01a3a5  llvm::FPPassManager::runOnModule()
    @     0x558aab01aa9b  (anonymous namespace)::MPPassManager::runOnModule()
    @     0x558aab01a635  llvm::legacy::PassManagerImpl::run()
    @     0x558aab01afe1  llvm::legacy::PassManager::run()
    @     0x558aa5914769  (anonymous namespace)::EmitAssemblyHelper::EmitAssembly()
    @     0x558aa5910f44  clang::EmitBackendOutput()
    @     0x558aa5906135  clang::BackendConsumer::HandleTranslationUnit()
    @     0x558aa6d165ad  clang::ParseAST()
    @     0x558aa6a94e22  clang::ASTFrontendAction::ExecuteAction()
    @     0x558aa590255d  clang::CodeGenAction::ExecuteAction()
    @     0x558aa6a94840  clang::FrontendAction::Execute()
    @     0x558aa6a38cca  clang::CompilerInstance::ExecuteAction()
    @     0x558aa4e2294b  clang::ExecuteCompilerInvocation()
    @     0x558aa4df6200  cc1_main()
    @     0x558aa4e1b37f  ExecuteCC1Tool()
    @     0x558aa4e1a725  main
    @     0x7ff20d56abbd  __libc_start_main
    @     0x558aa4df51c9  _start

llvm-svn: 355515

5 years agoReland "[Remarks] Refactor remark diagnostic emission in a RemarkStreamer"
Francis Visoiu Mistrih [Wed, 6 Mar 2019 15:20:13 +0000 (15:20 +0000)]
Reland "[Remarks] Refactor remark diagnostic emission in a RemarkStreamer"

This allows us to store more info about where we're emitting the remarks
without cluttering LLVMContext. This is needed for future support for
the remark section.

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

Original llvm-svn: 355507

llvm-svn: 355514

5 years ago[PowerPC] Add secure plt support for TLS symbols
Strahinja Petrovic [Wed, 6 Mar 2019 15:00:10 +0000 (15:00 +0000)]
[PowerPC] Add secure plt support for TLS symbols

This patch supports secure plt mode for TLS symbols.

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

llvm-svn: 355513

5 years ago[CGP] Avoid repeatedly building DominatorTree causing long compile-time (NFC)
Teresa Johnson [Wed, 6 Mar 2019 14:57:40 +0000 (14:57 +0000)]
[CGP] Avoid repeatedly building DominatorTree causing long compile-time (NFC)

Summary:
In r354298 a DominatorTree construction was added via new function
combineToUSubWithOverflow, which was subsequently restructured into
replaceMathCmpWithIntrinsic in r354689. We are hitting a very long
compile time due to this repeated construction, once per math cmp in
the function.

We shouldn't need to build the DominatorTree more than once per
function, except when a transformation invalidates it. There is already
a boolean flag that is returned from these methods indicating whether
the DT has been modified. We can simply build the DT once per
Function walk in CodeGenPrepare::runOnFunction, since any time a change
is made we break out of the Function walk and restart it.

I modified the code so that both replaceMathCmpWithIntrinsic as well as
mergeSExts (which was also building a DT) use the DT constructed by the
run method.

From -mllvm -time-passes:
Before this patch: CodeGen Prepare user time is 328s
With this patch: CodeGen Prepare user time is 21s

Reviewers: spatel

Subscribers: jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 355512

5 years agoRevert "[Remarks] Refactor remark diagnostic emission in a RemarkStreamer"
Francis Visoiu Mistrih [Wed, 6 Mar 2019 14:52:37 +0000 (14:52 +0000)]
Revert "[Remarks] Refactor remark diagnostic emission in a RemarkStreamer"

This reverts commit 2e8c4997a2089f8228c843fd81b148d903472e02.

Breaks bots.

llvm-svn: 355511

5 years ago[lldb] [lit] Attempt to fix regex in toolchain-clang.test
Michal Gorny [Wed, 6 Mar 2019 14:49:48 +0000 (14:49 +0000)]
[lldb] [lit] Attempt to fix regex in toolchain-clang.test

llvm-svn: 355510

5 years agoMove RangeMap.h into Utility
Pavel Labath [Wed, 6 Mar 2019 14:41:43 +0000 (14:41 +0000)]
Move RangeMap.h into Utility

Summary:
This file implements some general purpose data structures, and so it
belongs to the Utility module.

Reviewers: zturner, jingham, JDevlieghere, clayborg, espindola

Subscribers: emaste, mgorny, javed.absar, arichardson, MaskRay, lldb-commits

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

llvm-svn: 355509

5 years ago[TargetLowering] simplify code for uaddsat/usubsat expansion; NFC
Sanjay Patel [Wed, 6 Mar 2019 14:34:59 +0000 (14:34 +0000)]
[TargetLowering] simplify code for uaddsat/usubsat expansion; NFC

llvm-svn: 355508

5 years ago[Remarks] Refactor remark diagnostic emission in a RemarkStreamer
Francis Visoiu Mistrih [Wed, 6 Mar 2019 14:32:08 +0000 (14:32 +0000)]
[Remarks] Refactor remark diagnostic emission in a RemarkStreamer

This allows us to store more info about where we're emitting the remarks
without cluttering LLVMContext. This is needed for future support for
the remark section.

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

llvm-svn: 355507

5 years ago[DAGCombiner] Add SADDO/SSUBO combine support
Simon Pilgrim [Wed, 6 Mar 2019 14:22:21 +0000 (14:22 +0000)]
[DAGCombiner] Add SADDO/SSUBO combine support

Basic constant handling folds, for both scalars and vectors

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

llvm-svn: 355506

5 years ago[llvm-objcopy] - Remove dead code. NFCI.
George Rimar [Wed, 6 Mar 2019 14:12:18 +0000 (14:12 +0000)]
[llvm-objcopy] - Remove dead code. NFCI.

DecompressedSection can only be created if --decompress-debug-sections is specified.
https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-objcopy/ELF/ELFObjcopy.cpp#L492

If it is specified when !zlib::isAvailable(), we error out early when parsing the options:
https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-objcopy/CopyConfig.cpp#L657

What means the code I am removing in this patch is dead.

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

llvm-svn: 355505

5 years agoExpose template parameters of endian specific types as class members
Pavel Labath [Wed, 6 Mar 2019 14:09:02 +0000 (14:09 +0000)]
Expose template parameters of endian specific types as class members

Summary:
This allows generic code to query these parameters, and is a common
practice in a lot of other template classes.

Reviewers: zturner, Bigcheese

Subscribers: kristina, llvm-commits

Tags: #llvm

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

llvm-svn: 355504

5 years ago[llvm-objcopy] - Remove an excessive zlib::isAvailable() check and dead code.
George Rimar [Wed, 6 Mar 2019 14:08:27 +0000 (14:08 +0000)]
[llvm-objcopy] - Remove an excessive zlib::isAvailable() check and dead code.

There are 2 places where llvm-objcopy creates CompressedSection:

For --compress-debug-sections. It might create the compressed section from
regular here:
https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-objcopy/ELF/ELFObjcopy.cpp#L486

All initially compressed sections are created as CompressedSection during reading the sections
from an object:
https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-objcopy/ELF/Object.cpp#L1118
Those have DebugCompressionType::None type and a different constructor.

Case 1 has the following code in its constructor:

if (!zlib::isAvailable()) {
  CompressionType = DebugCompressionType::None;
  return;
}
(https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-objcopy/ELF/Object.cpp#L267)

We can never reach that code with because would report an error much earlier:
https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-objcopy/CopyConfig.cpp#L480

So the code I am removing is dead. Landing this will address the issue mentioned in https://bugs.llvm.org/show_bug.cgi?id=40886.

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

llvm-svn: 355503

5 years ago[lldb] [test] Pass appropriate -L&-Wl,-rpath for libc++ on NetBSD
Michal Gorny [Wed, 6 Mar 2019 14:03:18 +0000 (14:03 +0000)]
[lldb] [test] Pass appropriate -L&-Wl,-rpath for libc++ on NetBSD

Pass appropriate -L and -Wl,-rpath flags pointing out to the LLVM
library directory on NetBSD.  This is necessary since clang on NetBSD
requires libc++ but it is not installed as part of the system
by default.  For the purpose of running buildbot, we want LLDB to use
just-built libc++.

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

llvm-svn: 355502

5 years ago[llvm-objcopy] - Fix incorrect CompressedSection creation.
George Rimar [Wed, 6 Mar 2019 14:01:54 +0000 (14:01 +0000)]
[llvm-objcopy] - Fix incorrect CompressedSection creation.

We should create CompressedSection only if the section has SHF_COMPRESSED flag
or it's name starts from '.zdebug'.
Currently, we create it if section's data starts from ZLIB signature.

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

llvm-svn: 355501

5 years ago[LLD][ELF] - Convert common-symbol-alignment.s test to yaml.
George Rimar [Wed, 6 Mar 2019 13:49:41 +0000 (13:49 +0000)]
[LLD][ELF] - Convert common-symbol-alignment.s test to yaml.

This removes 2 precompiled binaries from the inputs.

llvm-svn: 355500

5 years ago[PR40778] Add addr space conversion when binding reference to a temporary.
Anastasia Stulova [Wed, 6 Mar 2019 13:02:41 +0000 (13:02 +0000)]
[PR40778] Add addr space conversion when binding reference to a temporary.

This change fixes temporary materialization to happen in the right
(default) address space when binding to it a reference of different type.

It adds address space conversion afterwards to match the addr space
of a reference.

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

llvm-svn: 355499

5 years ago[llvm-mca][X86] Add ADC/SBB with zero test cases
Simon Pilgrim [Wed, 6 Mar 2019 12:51:16 +0000 (12:51 +0000)]
[llvm-mca][X86] Add ADC/SBB with zero test cases

Some targets have fast-path handling for these patterns that we should model.

llvm-svn: 355498

5 years ago[LLD][ELF] - Remove unused invalid input object. NFC.
George Rimar [Wed, 6 Mar 2019 12:37:46 +0000 (12:37 +0000)]
[LLD][ELF] - Remove unused invalid input object. NFC.

It was introduced by me in 2016: r290335,
but the test did contain the YAML from start,
I think it was committed by mistake.

llvm-svn: 355497

5 years ago[X86][NFC] Autogenerate check lines in cmovcmov.ll test
Roman Lebedev [Wed, 6 Mar 2019 11:47:43 +0000 (11:47 +0000)]
[X86][NFC] Autogenerate check lines in cmovcmov.ll test

Investigating 8-bit cmov promotion, this test comes up.

llvm-svn: 355496

5 years ago[DAGCombiner] Enable SMULO/UMULO vector combine support (PR40442)
Simon Pilgrim [Wed, 6 Mar 2019 11:04:21 +0000 (11:04 +0000)]
[DAGCombiner] Enable SMULO/UMULO vector combine support (PR40442)

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

llvm-svn: 355495

5 years ago[X86][SSE] VSELECT(XOR(Cond,-1), LHS, RHS) --> VSELECT(Cond, RHS, LHS)
Simon Pilgrim [Wed, 6 Mar 2019 10:54:43 +0000 (10:54 +0000)]
[X86][SSE] VSELECT(XOR(Cond,-1), LHS, RHS) --> VSELECT(Cond, RHS, LHS)

As noticed on D58965

DAGCombiner::visitSELECT has something similar, so we should be able to move this to DAGCombiner and support VSELECT as well at some point.

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

llvm-svn: 355494

5 years ago[clangd] Add Source to clangd::Diagnostic.
Haojian Wu [Wed, 6 Mar 2019 10:51:38 +0000 (10:51 +0000)]
[clangd] Add Source to clangd::Diagnostic.

Summary:
clangd embedder can distinguish diagnostics from clang or clang-tidy.

Reviewers: ilya-biryukov

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

Tags: #clang

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

llvm-svn: 355493

5 years agoInline asm constraints: allow ICE-like pointers for the "n" constraint (PR40890)
Hans Wennborg [Wed, 6 Mar 2019 10:26:19 +0000 (10:26 +0000)]
Inline asm constraints: allow ICE-like pointers for the "n" constraint (PR40890)

Apparently GCC allows this, and there's code relying on it (see bug).

The idea is to allow expression that would have been allowed if they
were cast to int. So I based the code on how such a cast would be done
(the CK_PointerToIntegral case in IntExprEvaluator::VisitCastExpr()).

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

llvm-svn: 355491

5 years ago[CodeGen] Omit range checks from jump tables when lowering switches with unreachable...
Ayonam Ray [Wed, 6 Mar 2019 10:01:02 +0000 (10:01 +0000)]
[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default

During the lowering of a switch that would result in the generation of a
jump table, a range check is performed before indexing into the jump
table, for the switch value being outside the jump table range and a
conditional branch is inserted to jump to the default block. In case the
default block is unreachable, this conditional jump can be omitted. This
patch implements omitting this conditional branch for unreachable
defaults.

Differential Revision: https://reviews.llvm.org/D52002
Reviewers: Hans Wennborg, Eli Freidman, Roman Lebedev

llvm-svn: 355490

5 years agoclang-cl: Parse /Qspectre and a few other missing options (PR40964)
Hans Wennborg [Wed, 6 Mar 2019 09:38:04 +0000 (09:38 +0000)]
clang-cl: Parse /Qspectre and a few other missing options (PR40964)

llvm-svn: 355489

5 years agoAlways compare C++ typeinfo (based on libstdc++ implementation).
Martin Liska [Wed, 6 Mar 2019 08:36:50 +0000 (08:36 +0000)]
Always compare C++ typeinfo (based on libstdc++ implementation).

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

llvm-svn: 355488

5 years agoReversing the commit of revision 355483 since it is giving a regression on a newly...
Ayonam Ray [Wed, 6 Mar 2019 07:51:28 +0000 (07:51 +0000)]
Reversing the commit of revision 355483 since it is giving a regression on a newly added test.

llvm-svn: 355487

5 years ago[clang][OpenMP] Revert "OMPFlushClause is synthetic, no such clause exists"
Roman Lebedev [Wed, 6 Mar 2019 07:45:10 +0000 (07:45 +0000)]
[clang][OpenMP] Revert "OMPFlushClause is synthetic, no such clause exists"

Summary:
This reverts rL352390 / D57280.

As discussed in https://reviews.llvm.org/D57112#inline-506781,
'flush' clause does not exist in the OpenMP spec, it can not be
specified, and `OMPFlushClause` class is just a helper class.

Now, here's the caveat. I have read @ABataev's
> Well, I think it would be good to filter out OMPC_flush somehow
> because there is no such clause actually, it is a pseudo clause
> for better handling of the flush directive.
as if that clause is pseudo clause that only exists for the sole
purpose of simplifying the parser. As in, it never reaches AST.

I did not however try to verify that. Too bad, i was wrong.
It absolutely *does* reach AST. Therefore my understanding/justification
for the change was flawed, which makes the patch a regression which **must** be reverted.

@gribozavr has brought that up again in https://reviews.llvm.org/D57112#inline-521238

> > ...
> Sorry to be late for this discussion, but I don't think this conclusion
> follows. ASTMatchers are supposed to match the AST as it is.
> Even if OMPC_flush is synthetic, it exists in the AST, and users might
> want to match it. I think users would find anything else (trying to filter
> out AST nodes that are not in the source code) to be surprising. For example,
> there's a matcher materializeTemporaryExpr even though this AST node is a
> Clang invention and is not a part of the C++ spec.
>
> Matching only constructs that appear in the source code is not feasible with
> ASTMatchers, because they are based on Clang's AST that exposes tons of semantic
> information, and its design is dictated by the structure of the semantic information.
> See "RFC: Tree-based refactorings with Clang" in cfe-dev for a library that will
> focus on representing source code as faithfully as possible.
>
> Not to even mention that this code is in ASTTypeTraits, a general library for
> handling AST nodes, not specifically for AST Matchers...

Reviewers: gribozavr, ABataev, rjmccall, aaron.ballman

Reviewed By: gribozavr, ABataev

Subscribers: dylanmckay, guansong, arphaman, jdoerfert, cfe-commits, gribozavr, ABataev

Tags: #clang, #openmp

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

llvm-svn: 355486

5 years ago[X86] Enable the add with 128 -> sub with -128 encoding trick with X86ISD::ADD when...
Craig Topper [Wed, 6 Mar 2019 07:36:38 +0000 (07:36 +0000)]
[X86] Enable the add with 128 -> sub with -128 encoding trick with X86ISD::ADD when the carry flag isn't used.

This allows us to use an 8-bit sign extended immediate instead of a 16 or 32 bit immediate.

Also do similar for 0x80000000 with 64-bit adds to avoid having to use a movabsq.

llvm-svn: 355485

5 years ago[X86] Suppress load folding for add/sub with 128 immediate.
Craig Topper [Wed, 6 Mar 2019 07:36:36 +0000 (07:36 +0000)]
[X86] Suppress load folding for add/sub with 128 immediate.

128 won't fit in a sign extended 8-bit immediate, but we can negate it to -128 and use the other operation. This results in a shorter encoding since the move would have used 16 or 32 bits for the immediate.

llvm-svn: 355484

5 years ago[CodeGen] Omit range checks from jump tables when lowering switches with unreachable...
Ayonam Ray [Wed, 6 Mar 2019 07:27:45 +0000 (07:27 +0000)]
[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default

During the lowering of a switch that would result in the generation of a
jump table, a range check is performed before indexing into the jump
table, for the switch value being outside the jump table range and a
conditional branch is inserted to jump to the default block. In case the
default block is unreachable, this conditional jump can be omitted. This
patch implements omitting this conditional branch for unreachable
defaults.

Differential Revision: https://reviews.llvm.org/D52002
Reviewers: Hans Wennborg, Eli Freidman, Roman Lebedev

llvm-svn: 355483

5 years agoFix slashes in path references in -Rmodule-import test from r355477
Duncan P. N. Exon Smith [Wed, 6 Mar 2019 05:42:56 +0000 (05:42 +0000)]
Fix slashes in path references in -Rmodule-import test from r355477

Fixup for r355477 to fix the Windows bot:
  http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/16217

llvm-svn: 355482

5 years agoEradicate all the ptrdiff_ts in span left over from applying P1227. A couple of other...
Marshall Clow [Wed, 6 Mar 2019 03:59:44 +0000 (03:59 +0000)]
Eradicate all the ptrdiff_ts in span left over from applying P1227. A couple of other minor cleanups. NFC

llvm-svn: 355481

5 years agogn build: Merge r355439.
Peter Collingbourne [Wed, 6 Mar 2019 03:08:06 +0000 (03:08 +0000)]
gn build: Merge r355439.

llvm-svn: 355480