Richard Smith [Fri, 13 Sep 2019 02:20:00 +0000 (02:20 +0000)]
For PR17164: split -fno-lax-vector-conversion into three different
levels:
-- none: no lax vector conversions [new GCC default]
-- integer: only conversions between integer vectors [old GCC default]
-- all: all conversions between same-size vectors [Clang default]
For now, Clang still defaults to "all" mode, but per my proposal on
cfe-dev (2019-04-10) the default will be changed to "integer" as soon as
that doesn't break lots of testcases. (Eventually I'd like to change the
default to "none" to match GCC and general sanity.)
Following GCC's behavior, the driver flag -flax-vector-conversions is
translated to -flax-vector-conversions=integer.
llvm-svn: 371805
Fangrui Song [Fri, 13 Sep 2019 02:18:04 +0000 (02:18 +0000)]
[ELF] Delete a redundant assignment to SectionBase::assigned. NFC
LinkerScript::discard marks a section dead. It is unnecessary to set the
`assigned` bit.
llvm-svn: 371804
Matt Arsenault [Fri, 13 Sep 2019 01:48:15 +0000 (01:48 +0000)]
AMDGPU/GlobalISel: Legalize G_FFLOOR
llvm-svn: 371803
Tim Shen [Fri, 13 Sep 2019 01:34:25 +0000 (01:34 +0000)]
Temporarily revert r371640 "LiveIntervals: Split live intervals on multiple dead defs".
It reveals a miscompile on Hexagon. See PR43302 for details.
llvm-svn: 371802
Michael Kruse [Fri, 13 Sep 2019 01:04:38 +0000 (01:04 +0000)]
[ScopBuilder] Skip getting leader when merging statements to close holes.
Function joinOrderedInstructions merges instructions when a leader is encountered twice.
It also notices that leaders in SeenLeaders may lose their leadership in previous merging,
and tries to handle the case using following code:
Instruction *PrevLeader = UnionFind.getLeaderValue(SeenLeaders.back());
However, this is wrong because it always gets leader for the last element of SeenLeaders,
and I believe it's wrong even we get leader for Prev here. As a result, Statements in cases
like the one in patch aren't merged as expected. After investigation, I believe it's
unnecessary to get leader instruction at all. This is based on fact: Although leaders in
SeenLeaders could lose leadership, they only lose to others in SeenLeaders, in other words,
one existing leader will be chosen as new leader of merged equivalent statements. We can
take advantage of this and simply check if current leader equals to Prev and break merging
if it does.
The patch also adds a new test.
Patch by bin.narwal <bin.narwal@gmail.com>
Differential Revision: https://reviews.llvm.org/D67007
llvm-svn: 371801
Matt Arsenault [Fri, 13 Sep 2019 00:44:35 +0000 (00:44 +0000)]
AMDGPU/GlobalISel: Legalize G_FMAD
Unlike SelectionDAG, treat this as a normally legalizable operation.
In SelectionDAG this is supposed to only ever formed if it's legal,
but I've found that to be restricting. For AMDGPU this is contextually
legal depending on whether denormal flushing is allowed in the use
function.
Technically we currently treat the denormal mode as a subtarget
feature, so custom lowering could be avoided. However I consider this
to be a defect, and this should be contextually dependent on the
controllable rounding mode of the parent function.
llvm-svn: 371800
Manoj Gupta [Fri, 13 Sep 2019 00:28:37 +0000 (00:28 +0000)]
Revert r371785.
r371785 is causing fails on clang-hexagon-elf buildbots.
llvm-svn: 371799
Matt Arsenault [Fri, 13 Sep 2019 00:11:20 +0000 (00:11 +0000)]
AMDGPU/GlobalISel: Select G_CTPOP
llvm-svn: 371798
Matt Arsenault [Fri, 13 Sep 2019 00:11:14 +0000 (00:11 +0000)]
DAG/GlobalISel: Correct type profile of bitcount ops
The result integer does not need to be the same width as the input.
AMDGPU, NVPTX, and Hexagon all have patterns working around the types
matching. GlobalISel defines these as being different type indexes.
llvm-svn: 371797
Alex Langford [Fri, 13 Sep 2019 00:02:05 +0000 (00:02 +0000)]
[Target] Move InferiorCall to Process
Summary:
InferiorCall is only ever used in Process, and it is not specific to
POSIX. By moving it to Process, we can remove all dependencies on plugins from
Process. Moving InferiorCall to Process seems to achieve this quite well.
Additionally, the name InferiorCall is a little vague now, so we rename
it something a bit more specific.
Reviewers: JDevlieghere, clayborg, compnerd, labath
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D67472
llvm-svn: 371796
Jason Molenda [Fri, 13 Sep 2019 00:01:49 +0000 (00:01 +0000)]
The setUp/tearDown methods I added mssed up the test function; reorder.
Thanks to Ted Woodward for catching this one.
llvm-svn: 371795
Jan Korous [Thu, 12 Sep 2019 23:51:48 +0000 (23:51 +0000)]
[libclang] Fix UninstallAbortingLLVMFatalErrorHandler test
llvm-svn: 371794
Matt Arsenault [Thu, 12 Sep 2019 23:46:54 +0000 (23:46 +0000)]
AMDGPU: Add immarg to llvm.amdgcn.init.exec.from.input
As far as I can tell this has to be a constant.
llvm-svn: 371793
Matt Arsenault [Thu, 12 Sep 2019 23:46:51 +0000 (23:46 +0000)]
LiveIntervals: Remove assertion
This testcase is invalid, and caught by the verifier. For the verifier
to catch it, the live interval computation needs to complete. Remove
the assert so the verifier catches this, which is less confusing.
In this testcase there is an undefined use of a subregister, and lanes
which aren't used or defined. An equivalent testcase with the
super-register shrunk to have no untouched lanes already hit this
verifier error.
llvm-svn: 371792
Matt Arsenault [Thu, 12 Sep 2019 23:46:46 +0000 (23:46 +0000)]
AMDGPU: Inline constant when materalizing FI with add on gfx9
This was relying on the SGPR usable for the carry out clobber to also
be used for the input. There was no carry out on gfx9. With no carry
out clobber to worry about, so the literal can just be directly used
with a VOP2 add.
llvm-svn: 371791
Philip Reames [Thu, 12 Sep 2019 23:22:37 +0000 (23:22 +0000)]
[Test] Restructure check lines to show differences between modes more clearly
With the landing of the previous patch (in particular D66318) there are a lot fewer diffs now. I added an experimental O0 line, and updated all the tests to group experimental and non-experimental O0/O3 together.
Skimming the remaining diffs, there's only a few which are obviously incorrect. There's a large number which are questionable, so more todo.
llvm-svn: 371790
Philip Reames [Thu, 12 Sep 2019 23:03:39 +0000 (23:03 +0000)]
Rename nonvolatile_load/store to simple_load/store [NFC]
Implement the TODO from D66318.
llvm-svn: 371789
Jessica Paquette [Thu, 12 Sep 2019 23:00:59 +0000 (23:00 +0000)]
[AArch64][GlobalISel] Support tail calling with swiftself parameters
Swiftself uses a callee-saved register. We can tail call when the register used
in the caller and callee is the same.
This behaviour is equivalent to that in `TargetLowering::parametersInCSRMatch`.
Update call-translator-tail-call.ll to verify that we can do this. When we
support inline assembly, we can write a check similar to the one in the
general swiftself.ll. For now, we need to verify that we get the correct COPY
instruction after call lowering.
Differential Revision: https://reviews.llvm.org/D67511
llvm-svn: 371788
Jan Korous [Thu, 12 Sep 2019 22:55:55 +0000 (22:55 +0000)]
[libclang] Expose abort()-ing LLVM fatal error handler
Differential Revision: https://reviews.llvm.org/D66775
llvm-svn: 371787
Philip Reames [Thu, 12 Sep 2019 22:49:17 +0000 (22:49 +0000)]
[SDAG] Update generic code to conservatively check for isAtomic in addition to isVolatile
This is the first sweep of generic code to add isAtomic bailouts where appropriate. The intention here is to have the switch from AtomicSDNode to LoadSDNode/StoreSDNode be close to NFC; that is, I'm not looking to allow additional optimizations at this time. That will come later. See D66309 for context.
Differential Revision: https://reviews.llvm.org/D66318
llvm-svn: 371786
Manoj Gupta [Thu, 12 Sep 2019 22:36:13 +0000 (22:36 +0000)]
Add -Wpoison-system-directories warning
When using clang as a cross-compiler, we should not use system
headers to do the compilation.
This CL adds support of a new warning flag -Wpoison-system-directories which
emits warnings if --sysroot is set and headers from common host system location
are used.
By default the warning is disabled.
The intention of the warning is to catch bad includes which are usually
generated by third party build system not targeting cross-compilation.
Such cases happen in Chrome OS when someone imports a new package or upgrade
one to a newer version from upstream.
Patch by: denik (Denis Nikitin)
llvm-svn: 371785
Jonas Devlieghere [Thu, 12 Sep 2019 22:34:59 +0000 (22:34 +0000)]
[NFC] Sort source files in Utility/CMakeLists.txt
llvm-svn: 371784
Greg Clayton [Thu, 12 Sep 2019 22:23:03 +0000 (22:23 +0000)]
[NFC] Fix file header filename to be Range.h
llvm-svn: 371783
DeForest Richards [Thu, 12 Sep 2019 22:17:04 +0000 (22:17 +0000)]
[Docs] Adds page for reference docs
Adds a Reference Documentation page for LLVM and API reference documentation.
llvm-svn: 371782
Artem Dergachev [Thu, 12 Sep 2019 22:11:15 +0000 (22:11 +0000)]
[analyzer] Fix the 'analyzer-enabled-checkers.c' test on non-linux machines.
'-Xclang -triple' doesn't seem to override the default target triple
as reliably as '--target'. This leads to test failing due to
platform-specific checks getting unexpectedly enabled.
llvm-svn: 371781
Jessica Paquette [Thu, 12 Sep 2019 22:10:36 +0000 (22:10 +0000)]
[AArch64][GlobalISel] Support sibling calls with outgoing arguments
This adds support for lowering sibling calls with outgoing arguments.
e.g
```
define void @foo(i32 %a)
```
Support is ported from AArch64ISelLowering's `isEligibleForTailCallOptimization`.
The only thing that is missing is a full port of
`TargetLowering::parametersInCSRMatch`. So, if we're using swiftself,
we'll never tail call.
- Rename `analyzeCallResult` to `analyzeArgInfo`, since the function is now used
for both outgoing and incoming arguments
- Teach `OutgoingArgHandler` about tail calls. Tail calls use frame indices for
stack arguments.
- Teach `lowerFormalArguments` to set the bytes in the caller's stack argument
area. This is used later to check if the tail call's parameters will fit on
the caller's stack.
- Add `areCalleeOutgoingArgsTailCallable` to perform the eligibility check on
the callee's outgoing arguments.
For testing:
- Update call-translator-tail-call to verify that we can now tail call with
outgoing arguments, use G_FRAME_INDEX for stack arguments, and respect the
size of the caller's stack
- Remove GISel-specific check lines from speculation-hardening.ll, since GISel
now tail calls like the other selectors
- Add a GISel test line to tailcall-string-rvo.ll since we can tail call in that
test now
- Add a GISel test line to tailcall_misched_graph.ll since we tail call there
now. Add specific check lines for GISel, since the debug output from the
machine-scheduler differs with GlobalISel. The dependency still holds, but
the output comes out in a different order.
Differential Revision: https://reviews.llvm.org/D67471
llvm-svn: 371780
Craig Topper [Thu, 12 Sep 2019 22:07:35 +0000 (22:07 +0000)]
[PowerPC] Remove the SPE4RC register class and instead add f32 to the GPRC register class.
Summary:
Since the SPE4RC register class contains an identical set of registers
and an identical spill size to the GPRC class its slightly confusing
the tablegen emitter. It's preventing the GPRC_and_GPRC_NOR0 synthesized
register class from inheriting VTs and AltOrders from GPRC or GPRC_NOR0.
This is because SPE4C is found first in the super register class list
when inheriting these properties and it doesn't set the VTs or
AltOrders the same way as GPRC or GPRC_NOR0.
This patch replaces all uses of GPE4RC with GPRC and allows GPRC and
GPRC_NOR0 to contain f32.
The test changes here are because the AltOrders are being inherited
to GPRC_NOR0 now.
Found while trying to determine if getCommonSubClass needs to take
a VT argument. It was originally added to support fp128 on x86-64,
I've changed some things about that so that it might be needed
anymore. But a PowerPC test crashed without it and I think its
due to this subclass issue.
Reviewers: jhibbits, nemanjai, kbarton, hfinkel
Subscribers: wuzish, nemanjai, mehdi_amini, hiraditya, kbarton, MaskRay, dexonsmith, jsji, shchenz, steven.zhang, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67513
llvm-svn: 371779
Amy Huang [Thu, 12 Sep 2019 22:04:56 +0000 (22:04 +0000)]
[COFF] Fix to not add archive name to buffer identifiers when they come
from thin archives.
Currently lld adds the archive name to MemoryBufferRef identifiers in order to
ensure they are unique. For thin archives, since the file name is already unique and we
want to keep the original path to the file, don't add the archive name.
Differential Revision: https://reviews.llvm.org/D67295
llvm-svn: 371778
Philip Reames [Thu, 12 Sep 2019 21:40:15 +0000 (21:40 +0000)]
Remove a duplicate test
Turns out I'd already added exactly the same test under the name non_unit_stride.
llvm-svn: 371777
Philip Reames [Thu, 12 Sep 2019 21:32:27 +0000 (21:32 +0000)]
[SCEV] Add smin support to getRangeRef
We were failing to compute trip counts (both exact and maximum) for any loop which involved a comparison against either an umin or smin. It looks like this simply got missed when we added smin/umin to SCEV. (Note: umin was submitted separately earlier today. Turned out two folks hit this at the same time.)
Differential Revision: https://reviews.llvm.org/D67514
llvm-svn: 371776
Craig Topper [Thu, 12 Sep 2019 21:30:18 +0000 (21:30 +0000)]
[DAGCombiner][X86] Pass the CmpOpVT to reduceSelectOfFPConstantLoads so X86 can exclude fp128 compares.
The X86 decision assumes the compare will produce a result in an XMM
register, but that can't happen for an fp128 compare since those
go to a libcall the returns an i32. Pass the VT so X86 can check
the type.
llvm-svn: 371775
Evandro Menezes [Thu, 12 Sep 2019 21:23:22 +0000 (21:23 +0000)]
[ConstantFolding] Expand folding of some library functions
Expanding the folding of `nearbyint()`, `rint()` and `trunc()` to library
functions, in addition to the current support for intrinsics.
Differential revision: https://reviews.llvm.org/D67468
llvm-svn: 371774
Tim Shen [Thu, 12 Sep 2019 21:18:44 +0000 (21:18 +0000)]
[ClangTidy] Adjust the name getCheckName to getCheckerName due to API change.
llvm-svn: 371773
Tim Shen [Thu, 12 Sep 2019 21:03:49 +0000 (21:03 +0000)]
Fix llvm-reduce tests so that they don't assume the source code is
writable.
Instead of copying over the original file permissions, just create
a new file and add the executable bit.
llvm-svn: 371772
Craig Topper [Thu, 12 Sep 2019 21:00:32 +0000 (21:00 +0000)]
[SelectionDAGBuilder] Simplify loop in visitSelect back to how it was before r255558.
This code was changed to accomodate fp128 being softened to itself
during type legalization on x86-64. This was done in order to create
libcalls while having fp128 as a legal type. We're now doing the
libcall creation during LegalizeDAG and the type legalization changes
to enable the old behavior have been removed. So this change to
SelectionDAGBuilder is no longer needed.
llvm-svn: 371771
Simon Pilgrim [Thu, 12 Sep 2019 20:39:56 +0000 (20:39 +0000)]
[X86] Move negateFMAOpcode helper earlier to help future patch. NFCI.
llvm-svn: 371770
Florian Hahn [Thu, 12 Sep 2019 20:07:17 +0000 (20:07 +0000)]
[LV] Update test case after r371768.
llvm-svn: 371769
Florian Hahn [Thu, 12 Sep 2019 20:03:32 +0000 (20:03 +0000)]
[SCEV] Support SCEVUMinExpr in getRangeRef.
This patch adds support for SCEVUMinExpr to getRangeRef,
similar to the support for SCEVUMaxExpr.
Reviewers: sanjoy.google, efriedma, reames, nikic
Reviewed By: sanjoy.google
Differential Revision: https://reviews.llvm.org/D67177
llvm-svn: 371768
Richard Smith [Thu, 12 Sep 2019 20:00:24 +0000 (20:00 +0000)]
Improve code generation for thread_local variables:
Summary:
* Don't bother using a thread wrapper when the variable is known to
have constant initialization.
* Emit the thread wrapper as discardable-if-unused in TUs that don't
contain a definition of the thread_local variable.
* Don't emit the thread wrapper at all if the thread_local variable
is unused and discardable; it will be emitted by all TUs that need
it.
Reviewers: rjmccall, jdoerfert
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67429
llvm-svn: 371767
Nick Desaulniers [Thu, 12 Sep 2019 19:53:35 +0000 (19:53 +0000)]
[Clang][CodeGen] support alias attribute w/ gnu_inline
Summary:
r369705 did not consider the addition of gnu_inline on function
declarations of alias attributed functions. This resulted in a reported
regression in the clang-9-rc4 release from the Zig developers building
glibc, which was observable as a failed assertion:
llvm-project/clang/lib/AST/Decl.cpp:3336: bool
clang::FunctionDecl::isInlineDefinitionExternallyVisible() const:
Assertion `(doesThisDeclarationHaveABody() || willHaveBody()) && "Must
be a function definition"' failed.
Alias function declarations do not have bodies, so allow us to proceed
if we have the alias function attribute but no body/definition, and add
a test case. The emitted symbols and their linkage matches GCC for the
added test case.
Link: https://bugs.llvm.org/show_bug.cgi?id=43268
Reviewers: aaron.ballman, rsmith, erichkeane, andrewrk
Reviewed By: andrewrk
Subscribers: cfe-commits, andrewrk, hans, srhines
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67455
llvm-svn: 371766
Kristof Umann [Thu, 12 Sep 2019 19:52:34 +0000 (19:52 +0000)]
[CFG] Add dumps for CFGElement and CFGElementRef
Seems like we never had these, so here we go! I also did some refactoring as I
was chasing a bug unrelated to this revision.
Differential Revision: https://reviews.llvm.org/D66715
llvm-svn: 371765
David Blaikie [Thu, 12 Sep 2019 19:50:54 +0000 (19:50 +0000)]
llvm-reduce: For now, mark these tests as requiring a shell
(since they execute shell scripts/that's the only entry point at the
moment)
llvm-svn: 371764
Zoe Carver [Thu, 12 Sep 2019 19:50:06 +0000 (19:50 +0000)]
[libc++] Mark issue 2587 resolved by issue 2567
Updates status. NFC.
llvm-svn: 371763
Philip Reames [Thu, 12 Sep 2019 19:34:27 +0000 (19:34 +0000)]
Precommit tests for D67514
llvm-svn: 371762
Austin Kerbow [Thu, 12 Sep 2019 19:12:21 +0000 (19:12 +0000)]
AMDGPU: Fix bug in r371671 on some builds.
llvm-svn: 371761
Kristof Umann [Thu, 12 Sep 2019 19:09:24 +0000 (19:09 +0000)]
[analyzer][NFC] Fix inconsistent references to checkers as "checks"
Traditionally, clang-tidy uses the term check, and the analyzer uses checker,
but in the very early years, this wasn't the case, and code originating from the
early 2010's still incorrectly refer to checkers as checks.
This patch attempts to hunt down most of these, aiming to refer to checkers as
checkers, but preserve references to callback functions (like checkPreCall) as
checks.
Differential Revision: https://reviews.llvm.org/D67140
llvm-svn: 371760
Alex Lorenz [Thu, 12 Sep 2019 19:00:32 +0000 (19:00 +0000)]
NFC, add missing cl::cat option category to clang-scan-deps options to ensure they show up in -help
llvm-svn: 371759
Kamil Rytarowski [Thu, 12 Sep 2019 18:57:58 +0000 (18:57 +0000)]
Add getauxval() compat for NetBSD
Summary:
getauxval() is not available on NetBSD and there is no a direct equivalent.
Add a function that implements the same semantics with NetBSD internals.
Reorder the GetPageSize() functions to prefer the sysctl approach for NetBSD.
It no longer makes a difference which approach is better. Avoid changing
conditional code path.
Reviewers: vitalybuka, dvyukov, mgorny, joerg
Reviewed By: vitalybuka
Subscribers: llvm-commits, #sanitizers
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D67329
llvm-svn: 371758
Kamil Rytarowski [Thu, 12 Sep 2019 18:55:18 +0000 (18:55 +0000)]
Split many_tls_keys.cpp into two tests
Summary:
many_tls_keys_pthread.cpp for TSD
many_tls_keys_thread.cpp for TLS
The TSD test is unsupported on NetBSD as it assumes TLS used internally.
TSD on NetBSD does not use TLS.
Reviewers: joerg, vitalybuka, mgorny, dvyukov, kcc
Reviewed By: vitalybuka
Subscribers: jfb, llvm-commits, #sanitizers
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D67428
llvm-svn: 371757
Kristof Umann [Thu, 12 Sep 2019 18:53:48 +0000 (18:53 +0000)]
[analyzer] Don't run the analyzer for -analyzer-list-enabled-checkers
Short and sweet. Whenever I use -analyzer-list-enabled-checkers, I'm only
interested about the configuration, not about the analysis.
Differential Revision: https://reviews.llvm.org/D66714
llvm-svn: 371756
David Blaikie [Thu, 12 Sep 2019 18:52:31 +0000 (18:52 +0000)]
llvm-reduce: Remove unused plugin support/requirements
llvm-svn: 371755
Reid Kleckner [Thu, 12 Sep 2019 18:44:47 +0000 (18:44 +0000)]
Use host's executable suffix for clang when cross-compiling compiler-rt
When cross-compiling compiler-rt as part of LLVM e. g. for Linux on
a Windows host and using the just-built clang as cross-compiler, we set
the -DBUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux" flag in top-level
cmake invocation, which causes CMAKE_EXECUTABLE_SUFFIX to be an empty
string in the nested cmake invocation for building builtins.
But the compiler for compiling test cases is meant to be run on host,
therefore it may have the '.exe' suffix.
Handle this by asking cmake about the host system.
Patch by Sergej Jaskiewicz <jaskiewiczs@icloud.com>
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D67401
llvm-svn: 371754
Reid Kleckner [Thu, 12 Sep 2019 18:26:34 +0000 (18:26 +0000)]
[MS] Warn when shadowing template parameters under -fms-compatibility
Summary:
C++ does not allow shadowing template parameters, but previously we
allowed it under -fms-extensions. Now this behavior is controlled by
-fms-compatibility, and we emit a -Wmicrosoft-template warning when it
happens.
Fixes PR43265
Reviewers: thakis, hans
Subscribers: amccarth, rsmith, STL_MSFT, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67463
llvm-svn: 371753
Alina Sbirlea [Thu, 12 Sep 2019 18:09:47 +0000 (18:09 +0000)]
[LICM/AST] Check if the AliasAny set is removed from the tracker.
Summary:
Resolves PR38513.
Credit to @bjope for debugging this.
Reviewers: hfinkel, uabelho, bjope
Subscribers: sanjoy.google, bjope, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67417
llvm-svn: 371752
Alex Lorenz [Thu, 12 Sep 2019 18:03:24 +0000 (18:03 +0000)]
[clang-scan-deps] remove dots and dots dots from the reported file dependency paths
This resolves differences observed on LLVM + Clang when running the comparison between canonical
dependencies (full preprocessing, no file manager reused), and dependencies obtained
when the file manager was reused between the full preprocessing invocations.
llvm-svn: 371751
Sanjay Patel [Thu, 12 Sep 2019 18:00:11 +0000 (18:00 +0000)]
[InstCombine] add tests for fptrunc; NFC
llvm-svn: 371750
Reid Kleckner [Thu, 12 Sep 2019 17:55:48 +0000 (17:55 +0000)]
Don't warn about selectany on implicitly inline variables
Summary:
This avoids a -Wignored-attribute warning on the code pattern Microsoft
recommends for integral const static data members defined in headers
here:
https://docs.microsoft.com/en-us/cpp/build/reference/microsoft-extensions-to-c-and-cpp?view=vs-2019
The attribute is redundant, but it is necessary when compiling in C++14
modes with /Za, which disables MSVC's extension that treats such
variables as implicitly inline.
Fixes PR43270
Reviewers: epastor, thakis, hans
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67426
llvm-svn: 371749
Alina Sbirlea [Thu, 12 Sep 2019 17:12:51 +0000 (17:12 +0000)]
[MemorySSA] Pass (for update) MSSAU when hoisting instructions.
Summary: Pass MSSAU to makeLoopInvariant in order to properly update MSSA.
Reviewers: george.burgess.iv
Subscribers: Prazek, sanjoy.google, uabelho, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67470
llvm-svn: 371748
Philip Reames [Thu, 12 Sep 2019 17:09:01 +0000 (17:09 +0000)]
Precommit tests for generalization of load dereferenceability in loop
llvm-svn: 371747
Sanjay Patel [Thu, 12 Sep 2019 17:07:01 +0000 (17:07 +0000)]
[InstCombine] reduce test noise and regenerate CHECK lines; NFC
llvm-svn: 371746
Philip Reames [Thu, 12 Sep 2019 16:49:10 +0000 (16:49 +0000)]
[LV] Support invariant addresses in speculation logic
Implement a TODO from rL371452, and handle loop invariant addresses in predicated blocks. If we can prove that the load is safe to speculate into the header, then we can avoid using a masked.load in favour of a normal load.
This is mostly about vectorization robustness. In the common case, it's generally expected that LICM/LoadStorePromotion would have eliminated such loads entirely.
Differential Revision: https://reviews.llvm.org/D67372
llvm-svn: 371745
Fangrui Song [Thu, 12 Sep 2019 16:46:19 +0000 (16:46 +0000)]
[ELF] ICF: change a dyn_cast<InputSection> to cast
ICF is performed after EhInputSections and MergeInputSections were
eliminated from inputSections. Every element of inputSections is an
InputSection.
llvm-svn: 371744
David Green [Thu, 12 Sep 2019 16:00:07 +0000 (16:00 +0000)]
[CGP] Ensure sinking multiple instructions does not invalidate dominance checks
In MVE, as of rL371218, we are attempting to sink chains of instructions such as:
%l1 = insertelement <8 x i8> undef, i8 %l0, i32 0
%broadcast.splat26 = shufflevector <8 x i8> %l1, <8 x i8> undef, <8 x i32> zeroinitializer
In certain situations though, we can end up breaking the dominance relations of
instructions. This happens when we sink the instruction into a loop, but cannot
remove the originals. The Use is updated, which might in fact be a Use from the
second instruction to the first.
This attempts to fix that by reversing the order of instruction that are sunk,
and ensuring that we update the uses on new instructions if they have already
been sunk, not the old ones.
Differential Revision: https://reviews.llvm.org/D67366
llvm-svn: 371743
Guillaume Chatelet [Thu, 12 Sep 2019 15:20:36 +0000 (15:20 +0000)]
[Alignment] Move OffsetToAlignment to Alignment.h
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet, JDevlieghere, alexshap, rupprecht, jhenderson
Subscribers: sdardis, nemanjai, hiraditya, kbarton, jakehehrlich, jrtc27, MaskRay, atanasyan, jsji, seiya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D67499
llvm-svn: 371742
Rainer Orth [Thu, 12 Sep 2019 14:50:32 +0000 (14:50 +0000)]
test-release.sh: Don't use chrpath on Solaris
When trying to run test-release.sh on Solaris 11.4 for 9.0.0 rc4, I failed initially
because Solaris lacks chrpath. This patch accounts for that and allowed the run to
continue.
Tested on amd64-pc-solaris2.11 and sparcv9-sun-solaris2.11.
Differential Revision: https://reviews.llvm.org/D67484
llvm-svn: 371741
James Henderson [Thu, 12 Sep 2019 14:24:04 +0000 (14:24 +0000)]
[docs][llvm-strip] Remove unnecessary whitespace for consistency
llvm-svn: 371739
Raphael Isemann [Thu, 12 Sep 2019 14:21:59 +0000 (14:21 +0000)]
[lldb][NFC] Simplify makefiles also for breakpoint tests
These tests were temporarily missing when the big Makefile
simplification patch landed, so this just applies the same change
to these tests.
llvm-svn: 371738
Roman Lebedev [Thu, 12 Sep 2019 14:12:31 +0000 (14:12 +0000)]
[InstCombine][InstSimplify] Move constant-folding tests in result-of-usub-is-non-zero-and-no-overflow.ll
llvm-svn: 371737
Roman Lebedev [Thu, 12 Sep 2019 14:12:20 +0000 (14:12 +0000)]
[NFC][InstCombine][InstSimplify] Add test for "add-of-negative is non-zero and no overflow" (PR43259)
https://rise4fun.com/Alive/ska
https://rise4fun.com/Alive/9iX
https://bugs.llvm.org/show_bug.cgi?id=43259
llvm-svn: 371736
Sanjay Patel [Thu, 12 Sep 2019 14:10:50 +0000 (14:10 +0000)]
[ConstProp] allow folding for fma that produces NaN
Folding for fma/fmuladd was added here:
rL202914
...and as seen in existing/unchanged tests, that works to propagate NaN
if it's already an input, but we should fold an fma() that creates NaN too.
From IEEE-754-2008 7.2 "Invalid Operation", there are 2 clauses that apply
to fma, so I added tests for those patterns:
c) fusedMultiplyAdd: fusedMultiplyAdd(0, ∞, c) or fusedMultiplyAdd(∞, 0, c)
unless c is a quiet NaN; if c is a quiet NaN then it is implementation
defined whether the invalid operation exception is signaled
d) addition or subtraction or fusedMultiplyAdd: magnitude subtraction of
infinities, such as: addition(+∞, −∞)
Differential Revision: https://reviews.llvm.org/D67446
llvm-svn: 371735
Raphael Isemann [Thu, 12 Sep 2019 14:07:16 +0000 (14:07 +0000)]
[lldb] Remove duplicated breakpoint tests
After reverting the deletion of the functionalities/breakpoint tests,
we now have some tests twice in the test/ folder which breaks dotest:
* commands/breakpoint/basic
* functionalities/breakpoint/breakpoint_command
After looking over these tests, I think it makes sense to only
keep the original functionalities/ folder. The commands/breakpoint/basic
test are not exclusively testing the breakpoint command itself, so
they shouldn't be in commands/ in the first place. Note that these
folders have identical contents (beside small adjustments regarding
the Makefile which landed after the restructuring).
llvm-svn: 371734
Michal Gorny [Thu, 12 Sep 2019 13:06:12 +0000 (13:06 +0000)]
[clang] [unittest] Import LLVMTestingSupport if necessary
Add LLVMTestingSupport directory from LLVM_MAIN_SRC_DIR when building
clang stand-alone and LLVMTestingSupport library is not present. This
is needed to fix stand-alone builds without clang-tools-extra.
Differential Revision: https://reviews.llvm.org/D67452
llvm-svn: 371733
Nico Weber [Thu, 12 Sep 2019 12:35:34 +0000 (12:35 +0000)]
lld-link: Fix tests that do not run on macOS after r371729.
llvm-svn: 371732
Dmitri Gribenko [Thu, 12 Sep 2019 12:16:43 +0000 (12:16 +0000)]
Removed some questionable default arguments from setters
Summary:
They can be confusing -- what does it mean to call a setter without a
value? Also, some setters, like `setPrintTemplateTree` had `false` as
the default value!
The callers are largely not using these default arguments anyway.
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67491
llvm-svn: 371731
Petar Avramovic [Thu, 12 Sep 2019 11:44:36 +0000 (11:44 +0000)]
[MIPS GlobalISel] Select indirect branch
Select G_BRINDIRECT for MIPS32.
Differential Revision: https://reviews.llvm.org/D67441
llvm-svn: 371730
Nico Weber [Thu, 12 Sep 2019 11:44:13 +0000 (11:44 +0000)]
lld-link: Make /linkrepro: take a filename, not a directory.
This makes lld-link behave like ld.lld. I don't see a reason for
the two drivers to have different behavior here.
While here, also make lld-link add a version.txt to the tar, like
ld.lld does.
Differential Revision: https://reviews.llvm.org/D67461
llvm-svn: 371729
Petar Avramovic [Thu, 12 Sep 2019 11:39:50 +0000 (11:39 +0000)]
[MIPS GlobalISel] Lower G_DYN_STACKALLOC
IRTranslator creates G_DYN_STACKALLOC instruction during expansion of
alloca when argument that tells number of elements to allocate on stack
is a virtual register. Use default lowering for MIPS32.
Differential Revision: https://reviews.llvm.org/D67440
llvm-svn: 371728
Petar Avramovic [Thu, 12 Sep 2019 11:32:38 +0000 (11:32 +0000)]
[MIPS GlobalISel] Select G_IMPLICIT_DEF
G_IMPLICIT_DEF is used for both integer and floating point implicit-def.
Handle G_IMPLICIT_DEF as ambiguous opcode in MipsRegisterBankInfo.
Select G_IMPLICIT_DEF for MIPS32.
Differential Revision: https://reviews.llvm.org/D67439
llvm-svn: 371727
Jeremy Morse [Thu, 12 Sep 2019 11:19:12 +0000 (11:19 +0000)]
Switch "windows" to "system-windows" in some XFAILs
The test failure mode appears to be due to the host machine rather than the
target. The PS4 buildbots are windows-hosted targeting x86_64-scei-ps4,
and are currently reporting these as unexpected failures:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/28114
llvm-svn: 371726
Simon Pilgrim [Thu, 12 Sep 2019 11:03:09 +0000 (11:03 +0000)]
[DAGCombine] visitFDIV - Use isCheaperToUseNegatedFPOps helper for (fdiv (fneg X), (fneg Y)) -> (fdiv X, Y). NFCI.
Minor cleanup to use equivalent helper code.
llvm-svn: 371724
Dmitri Gribenko [Thu, 12 Sep 2019 10:39:53 +0000 (10:39 +0000)]
Removed dead code from DiagnosticBuilder
llvm-svn: 371723
Tim Northover [Thu, 12 Sep 2019 10:22:23 +0000 (10:22 +0000)]
AArch64: support arm64_32, an ILP32 slice for watchOS.
This is the main CodeGen patch to support the arm64_32 watchOS ABI in LLVM.
FastISel is mostly disabled for now since it would generate incorrect code for
ILP32.
llvm-svn: 371722
Tim Northover [Thu, 12 Sep 2019 10:21:00 +0000 (10:21 +0000)]
CodeGenPrep: add separate hook say when GEPs should be used for sinking. NFCI.
Up to now, we've decided whether to sink address calculations using GEPs or
normal arithmetic based on the useAA hook, but there are other reasons GEPs
might be preferred. So this patch splits the two questions, with a default
implementation falling back to useAA.
llvm-svn: 371721
Paul Hoad [Thu, 12 Sep 2019 10:18:53 +0000 (10:18 +0000)]
[clang-format] [PR43100] clang-format C# support does not add a space between "using" and paren
Summary:
Addresses https://bugs.llvm.org/show_bug.cgi?id=43100
Formatting using statement in C# with clang-format removes the space between using and paren even when SpaceBeforeParens is !
```
using(FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize : 1))
```
this change simply overcomes this for when using C# settings in the .clang-format file
```
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize : 1))
```
All FormatTests pass..
```
[==========] 688 tests from 21 test cases ran. (88508 ms total)
[ PASSED ] 688 tests.
```
Reviewers: djasper, klimek, owenpan
Reviewed By: owenpan
Subscribers: llvm-commits, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66662
llvm-svn: 371720
Paul Hoad [Thu, 12 Sep 2019 10:07:14 +0000 (10:07 +0000)]
[clang-format] Add new style option IndentGotoLabels
Summary:
This option determines whether goto labels are indented according to scope. Setting this option to false causes goto labels to be flushed to the left.
This is mostly copied from [[ http://lists.llvm.org/pipermail/cfe-dev/2015-September/045014.html | this patch ]] submitted by Christian Neukirchen that didn't make its way into trunk.
```
true: false:
int f() { vs. int f() {
if (foo()) { if (foo()) {
label1: label1:
bar(); bar();
} }
label2: label2:
return 1; return 1;
} }
```
Reviewers: klimek, MyDeveloperDay
Reviewed By: MyDeveloperDay
Subscribers: cfe-commits
Tags: #clang, #clang-tools-extra
Patch by: tetsuo-cpp
Differential Revision: https://reviews.llvm.org/D67037
llvm-svn: 371719
Roman Lebedev [Thu, 12 Sep 2019 09:26:17 +0000 (09:26 +0000)]
[InstSimplify] simplifyUnsignedRangeCheck(): handle more cases (PR43251)
Summary:
I don't have a direct motivational case for this,
but it would be good to have this for completeness/symmetry.
This pattern is basically the motivational pattern from
https://bugs.llvm.org/show_bug.cgi?id=43251
but with different predicate that requires that the offset is non-zero.
The completeness bit comes from the fact that a similar pattern (offset != zero)
will be needed for https://bugs.llvm.org/show_bug.cgi?id=43259,
so it'd seem to be good to not overlook very similar patterns..
Proofs: https://rise4fun.com/Alive/21b
Also, there is something odd with `isKnownNonZero()`, if the non-zero
knowledge was specified as an assumption, it didn't pick it up (PR43267)
Reviewers: spatel, nikic, xbolva00
Reviewed By: spatel
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67411
llvm-svn: 371718
Kai Luo [Thu, 12 Sep 2019 09:00:44 +0000 (09:00 +0000)]
[PowerPC][MCP][NFC] Pre-commit test cases for https://reviews.llvm.org/D65267
llvm-svn: 371717
Fangrui Song [Thu, 12 Sep 2019 08:59:17 +0000 (08:59 +0000)]
[ELF] Fix a common-page-size typo
llvm-svn: 371716
Fangrui Song [Thu, 12 Sep 2019 08:55:17 +0000 (08:55 +0000)]
[ELF] Support -z undefs
-z undefs is the inverse of -z defs. It allows unresolved references
from object files. This can be used to cancel --no-undefined or -z defs.
Reviewed By: ruiu
Differential Revision: https://reviews.llvm.org/D67479
llvm-svn: 371715
Qiu Chaofan [Thu, 12 Sep 2019 07:51:24 +0000 (07:51 +0000)]
[DAGCombiner] Improve division estimation of floating points.
Current implementation of estimating divisions loses precision since it
estimates reciprocal first and does multiplication. This patch is to re-order
arithmetic operations in the last iteration in DAGCombiner to improve the
accuracy.
Reviewed By: Sanjay Patel, Jinsong Ji
Differential Revision: https://reviews.llvm.org/D66050
llvm-svn: 371713
Heejin Ahn [Thu, 12 Sep 2019 06:56:17 +0000 (06:56 +0000)]
[WebAssembly] Delete duplicate REQUIRES line
r371710 and r371711 committed the same line, so this deletes one of
them.
llvm-svn: 371712
Heejin Ahn [Thu, 12 Sep 2019 06:52:24 +0000 (06:52 +0000)]
[WebAssembly] Make wasm-eh.cpp requires WebAssembly
D67208 added a new test line to wasm-eh.cpp that invokes the LLVM
backend and this test fails on bots that don't have WebAssembly target.
This makes wasm-eh.cpp explicitly require WebAssembly so this will be
skipped on those targets.
llvm-svn: 371711
David Zarzycki [Thu, 12 Sep 2019 06:50:33 +0000 (06:50 +0000)]
[WebAssembly] Add REQUIRES to test
llvm-svn: 371710
Craig Topper [Thu, 12 Sep 2019 05:55:14 +0000 (05:55 +0000)]
[LegalizeTypes] Remove code for softening a float type to itself.
This was previously used to turn fp128 operations into libcalls
on X86. This is now done through op legalization after r371672.
This restores much of this code to before r254653.
llvm-svn: 371709
Heejin Ahn [Thu, 12 Sep 2019 04:01:37 +0000 (04:01 +0000)]
[WebAssembly] Add -fwasm-exceptions for wasm EH
Summary:
This adds `-fwasm-exceptions` (in similar fashion with
`-fdwarf-exceptions` or `-fsjlj-exceptions`) that turns on everything
with wasm exception handling from the frontend to the backend.
We currently have `-mexception-handling` in clang frontend, but this is
only about the architecture capability and does not turn on other
necessary options such as the exception model in the backend. (This can
be turned on with `llc -exception-model=wasm`, but llc is not invoked
separately as a command line tool, so this option has to be transferred
from clang.)
Turning on `-fwasm-exceptions` in clang also turns on
`-mexception-handling` if not specified, and will error out if
`-mno-exception-handling` is specified.
Reviewers: dschuff, tlively, sbc100
Subscribers: aprantl, jgravelle-google, sunfish, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67208
llvm-svn: 371708
Yevgeny Rouban [Thu, 12 Sep 2019 03:41:34 +0000 (03:41 +0000)]
Make SwitchInstProfUpdateWrapper strict permanently
We have been using -switch-inst-prof-update-wrapper-strict
set to true by default for some time. It is time to remove
the safety stuff and make SwitchInstProfUpdateWrapper
intolerant to inconsistencies in !prof branch_weights
metadata of SwitchInst.
This patch gets rid of the Invalid state of
SwitchInstProfUpdateWrapper and the option
-switch-inst-prof-update-wrapper-strict. So there is only
two states: changed and unchanged.
Reviewers: davidx, nikic, eraman, reames, chandlerc
Reviewed By: davidx
Differential Revision: https://reviews.llvm.org/D67435
llvm-svn: 371707
Heejin Ahn [Thu, 12 Sep 2019 03:10:57 +0000 (03:10 +0000)]
[clang-tidy] Fix build with -DBUILD_SHARED_LIB=ON
Summary: This fixes build failures with `-DBUILD_SHARED_LIB=ON` after D67419.
Reviewers: NoQ
Subscribers: mgorny, xazax.hun, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67473
llvm-svn: 371706
Vitaly Buka [Thu, 12 Sep 2019 02:20:37 +0000 (02:20 +0000)]
[compiler-rt] cpplint of inc files in background
llvm-svn: 371705
Vitaly Buka [Thu, 12 Sep 2019 02:20:36 +0000 (02:20 +0000)]
[compiler-rt] Remove some cpplint filters
llvm-svn: 371704
Vitaly Buka [Thu, 12 Sep 2019 01:35:11 +0000 (01:35 +0000)]
[compiler-rt] Run cpplint only for check-sanitizer
llvm-svn: 371703