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
Vitaly Buka [Thu, 12 Sep 2019 01:35:09 +0000 (01:35 +0000)]
[compiler-rt] Better lint output for .inc files
llvm-svn: 371702
Nico Weber [Thu, 12 Sep 2019 01:25:34 +0000 (01:25 +0000)]
gn build: Merge r371700
llvm-svn: 371701
David Blaikie [Thu, 12 Sep 2019 01:20:48 +0000 (01:20 +0000)]
Reapply llvm-reduce: Add pass to reduce parameters""
Fixing a couple of asan-identified bugs
* use of an invalid "Use" iterator after the element was removed
* use of StringRef to Function name after the Function was erased
This reapplies r371567, which was reverted in r371580.
llvm-svn: 371700
Jan Korous [Thu, 12 Sep 2019 00:48:45 +0000 (00:48 +0000)]
[clang-scan-deps] Add dependency targets
Differential Revision: https://reviews.llvm.org/D67475
llvm-svn: 371697
David Blaikie [Thu, 12 Sep 2019 00:31:57 +0000 (00:31 +0000)]
PR43278: llvm-reduce: Use temporary file names (and ToolOutputFile) rather than unique ones - to ensure they're cleaned up
This modifies the tool somewhat to only create files when about to run
the "interestingness" test, and delete them immediately after - this
means some more files will be created sometimes (when "double checking"
work - which should probably be fixed/avoided anyway).
This now creates temporary files, rather than only unique ones, and also
uses ToolOutputFile (without ever calling "keep") to ensure the files
are deleted as soon as the interestingness test is run.
llvm-svn: 371696
Craig Topper [Wed, 11 Sep 2019 23:54:36 +0000 (23:54 +0000)]
[X86] Enable -mprefer-vector-width=256 by default for Skylake-avx512 and later Intel CPUs.
AVX512 instructions can cause a frequency drop on these CPUs. This
can negate the performance gains from using wider vectors. Enabling
prefer-vector-width=256 will prevent generation of zmm registers
unless explicit 512 bit operations are used in the original source
code.
I believe gcc and icc both do something similar to this by default.
Differential Revision: https://reviews.llvm.org/D67259
llvm-svn: 371694
Amara Emerson [Wed, 11 Sep 2019 23:53:23 +0000 (23:53 +0000)]
[AArch64][GlobalISel] Fall back on attempts to allocate split types on the stack.
First we were asserting that the ValNo of a VA was the wrong value. It doesn't actually
make a difference for us in CallLowering but fix that anyway to silence the assert.
The bigger issue was that after fixing the assert we were generating invalid MIR
because the merging/unmerging of values split across multiple registers wasn't
also implemented for memory locs. This happens when we run out of registers and
have to pass the split types like i128 -> i64 x 2 on the stack. This is do-able, but
for now just fall back.
llvm-svn: 371693
Jessica Paquette [Wed, 11 Sep 2019 23:44:16 +0000 (23:44 +0000)]
[GlobalISel][AArch64] Check caller for swifterror params in tailcall eligibility
Before, we only checked the callee for swifterror. However, we should also be
checking the caller to see if it has a swifterror parameter.
Since we don't currently handle outgoing arguments, this didn't show up in the
swifterror.ll testcase.
Also, remove the swifterror checks from call-translator-tail-call.ll, since
they are covered by the existing swifterror testing. Better to have it all in
one place.
Differential Revision: https://reviews.llvm.org/D67465
llvm-svn: 371692
Vitaly Buka [Wed, 11 Sep 2019 23:43:23 +0000 (23:43 +0000)]
[dfsan] Revert dfsan_set_label removal
It's part of interface, maybe it is used in external code.
llvm-svn: 371691
Jonas Devlieghere [Wed, 11 Sep 2019 23:27:12 +0000 (23:27 +0000)]
[Reproducer] Move the command loader into the reproducer (NFC)
This just moves the CommandLoader utility into the reproducer namespace
and makes it accessible outside the API layer. This is setting things up
for a bigger change.
llvm-svn: 371689
Jonas Devlieghere [Wed, 11 Sep 2019 23:27:09 +0000 (23:27 +0000)]
[NFC] Reformat SBDebugger before making changes
llvm-svn: 371688
Vitaly Buka [Wed, 11 Sep 2019 23:19:48 +0000 (23:19 +0000)]
Remove NOLINTs from compiler-rt
llvm-svn: 371687
Jonas Devlieghere [Wed, 11 Sep 2019 23:15:12 +0000 (23:15 +0000)]
[Reproducer] Move GDB Remote Provider into Reproducer (NFC)
Originally the idea was for providers to be defined close to where they
are used. While this helped designing the providers in such a way that
they don't depend on each other, it also means that it's not possible to
access them from a central place. This proved to be a problem for some
providers and resulted in them living in the reproducer class.
The ProcessGDBRemote provider is the last remaining exception. This
patch makes things consistent and moves it into the reproducer like the
other providers.
llvm-svn: 371685
Reid Kleckner [Wed, 11 Sep 2019 22:33:50 +0000 (22:33 +0000)]
[TableGen] Skip CRLF conversion when writing output
Doing the CRLF translation while writing the file defeats our
optimization to not update the file if it hasn't changed.
Fixes PR43271.
llvm-svn: 371683
Sanjay Patel [Wed, 11 Sep 2019 22:31:34 +0000 (22:31 +0000)]
[InstCombine] rename variable for readability; NFC
There's more that can be done here, but "OpI"
doesn't convey that we casted to BinaryOperator.
llvm-svn: 371682
David Blaikie [Wed, 11 Sep 2019 22:24:45 +0000 (22:24 +0000)]
Add some missing changes to GSYM that was addressing a gcc compilation error due to a type and variable with the same name
llvm-svn: 371681
Vitaly Buka [Wed, 11 Sep 2019 22:19:18 +0000 (22:19 +0000)]
Fix mac build
llvm-svn: 371680
David Blaikie [Wed, 11 Sep 2019 22:15:16 +0000 (22:15 +0000)]
PR43278: Temporarily disable llvm-reduce tests due to exhausting temp files
llvm-svn: 371679
Reid Kleckner [Wed, 11 Sep 2019 21:56:17 +0000 (21:56 +0000)]
[X86] Fix latent bugs in 32-bit CMPXCHG8B inserter
I found three issues:
1. the loop over E[ABCD]X copies run over BB start
2. the direct address of cmpxchg8b could be a frame index
3. the displacement of cmpxchg8b could be a global instead of an
immediate
These were all introduced together in r287875, and should be fixed with
this change.
Issue reported by Zachary Turner.
llvm-svn: 371678
Evandro Menezes [Wed, 11 Sep 2019 21:46:57 +0000 (21:46 +0000)]
[ConstantFolding] Refactor math functions to use LLVM ones (NFC)
When possible, replace calls to library routines on the host with equivalent
ones in LLVM.
Differential revision: https://reviews.llvm.org/D67459
llvm-svn: 371677
Cyndy Ishida [Wed, 11 Sep 2019 21:35:28 +0000 (21:35 +0000)]
Revert [llvm-nm] Add tapi file support
This reverts r371576 (git commit
f88f46358dbffa20af3b054a9346e5154789d50f)
llvm-svn: 371676
Vitaly Buka [Wed, 11 Sep 2019 21:33:06 +0000 (21:33 +0000)]
Update compiler-rt cpplint.py
https://github.com/cpplint/cpplint/commit/
adb3500107f409ac5491188ae652ac3f4d03d9d3
llvm-svn: 371675
Cyndy Ishida [Wed, 11 Sep 2019 21:32:55 +0000 (21:32 +0000)]
Revert [Object][TextAPI] NFC, fix tapi lit tests
This reverts r371577 (git commit
b2b0ccab2f76733679eeceecf31b21ebc1fe23ac)
llvm-svn: 371674
Craig Topper [Wed, 11 Sep 2019 21:30:42 +0000 (21:30 +0000)]
[X86] Add test case for v16i64->v16i32 truncate on min-legal-vector-width=256.
I think this case would crash before I added back the -x86-experimental-vector-widening command line option. Adding this test case to prevent breaking it again when we remove the option.
llvm-svn: 371673
Craig Topper [Wed, 11 Sep 2019 21:30:09 +0000 (21:30 +0000)]
[X86] Move x86_64 fp128 conversion to libcalls from type legalization to DAG legalization
fp128 is considered a legal type for a register, but has almost no legal operations so everything needs to be converted to a libcall. Previously this was implemented by tricking type legalization into softening the operations with various checks for "is legal in hardware register" to change the behavior to still use f128 as the resulting type instead of converting to i128.
This patch abandons this approach and instead moves the libcall conversions to LegalizeDAG. This is the approach taken by AArch64 where they also have a legal fp128 type, but no legal operations. I think this is more in spirit with how SelectionDAG's phases are supposed to work.
I had to make some hacks for STRICT_FP_ROUND because some of the strict FP handling checks if ISD::FP_ROUND is Legal for a given result type, but I had to make ISD::FP_ROUND Custom to allow making a libcall when the input is f128. For all other types the Custom handler just returns the original node. These hacks are incomplete and don't work for a strict truncate from f128, but I don't think it worked before either since LegalizeFloatTypes doesn't know about strict ops yet. I've also raised PR43209 against AArch64 which currently crashes on a strict ftrunc from f64->f32 because of FP_ROUND being marked Custom for the same reason there.
Differential Revision: https://reviews.llvm.org/D67128
llvm-svn: 371672
Austin Kerbow [Wed, 11 Sep 2019 21:28:41 +0000 (21:28 +0000)]
AMDGPU: Move m0 initializations earlier
Summary:
After hoisting and merging m0 initializations schedule them as early as
possible in the MBB. This helps the scheduler avoid hazards in some
cases.
Reviewers: rampitec, arsenm
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, arphaman, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67450
llvm-svn: 371671
Nico Weber [Wed, 11 Sep 2019 21:24:15 +0000 (21:24 +0000)]
gn build: Merge r371661
llvm-svn: 371670
Nico Weber [Wed, 11 Sep 2019 21:24:11 +0000 (21:24 +0000)]
gn build: Merge r371657
llvm-svn: 371669
Vedant Kumar [Wed, 11 Sep 2019 21:23:45 +0000 (21:23 +0000)]
[DWARF] Evaluate DW_OP_entry_value
Add support for evaluating DW_OP_entry_value. This involves parsing
DW_TAG_call_site_parameter and wiring the information through to the expression
evaluator.
rdar://
54496008
Differential Revision: https://reviews.llvm.org/D67376
llvm-svn: 371668
Vedant Kumar [Wed, 11 Sep 2019 21:23:42 +0000 (21:23 +0000)]
[Status] Add a LLDB_ERRORF macro for error reporting (similar to LLDB_LOGF)
llvm-svn: 371667
Vedant Kumar [Wed, 11 Sep 2019 21:23:39 +0000 (21:23 +0000)]
[DWARF] Emit call site parameter info when tuning for lldb
Emit debug entry values using standard DWARF5 opcodes when the debugger
tuning is set to lldb.
Differential Revision: https://reviews.llvm.org/D67410
llvm-svn: 371666
Volodymyr Sapsai [Wed, 11 Sep 2019 21:19:27 +0000 (21:19 +0000)]
Fix up a test updated in r371655 - require case-insensitive file system.
On case-sensitive file systems include with wrong case is not found instead of
showing a warning.
llvm-svn: 371665
Alex Lorenz [Wed, 11 Sep 2019 21:00:13 +0000 (21:00 +0000)]
[clang-scan-deps] cast Result to ErrorOr<unique_ptr<vfs::File>> explicitly to avoid s390x-linux buildbot failure
llvm-svn: 371664
Reid Kleckner [Wed, 11 Sep 2019 20:56:25 +0000 (20:56 +0000)]
Start porting ivfsoverlay tests to Windows
Part of PR43272, the changes are:
1. Use @ as the sed pattern delimiter instead of : so that the drive
letter in lit substitutions isn't an issue.
2. Use the %/t and %/S substitutions to get paths with forward slashes
to work around string quoting issues in the yaml file.
3. Replace REQUIRES:shell with XFAIL:windows. These tests should pass on
Windows, but do not for reasons that are not yet understood. We would
like to know if they pass unexpectedly.
I was able to remove the XFAILs from two tests, since they already pass
with my sed fix:
clang/test/VFS/module_missing_vfs.m
clang/test/VFS/test_nonmodular.c
Reviewers: amccarth
Differential Revision: https://reviews.llvm.org/D67454
llvm-svn: 371663
Chris Bieneman [Wed, 11 Sep 2019 20:54:38 +0000 (20:54 +0000)]
All Errors must be checked
Summary: If an error is ever returned from any of the functions called here, the error must be joined with the Result Error before being returned otherwise the Result Error will assert on destruction.
Reviewers: lhames
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67407
llvm-svn: 371662
Artem Dergachev [Wed, 11 Sep 2019 20:54:27 +0000 (20:54 +0000)]
[analyzer] NFC: Move PathDiagnostic classes to libAnalysis.
At this point the PathDiagnostic, PathDiagnosticLocation, PathDiagnosticPiece
structures no longer rely on anything specific to Static Analyzer, so we can
move them out of it for everybody to use.
PathDiagnosticConsumers are still to be handed off.
Differential Revision: https://reviews.llvm.org/D67419
llvm-svn: 371661
Artem Dergachev [Wed, 11 Sep 2019 20:54:24 +0000 (20:54 +0000)]
[analyzer] NFC: Move resetDiagnosticLocationToMainFile() to BugReporter.
This method of PathDiagnostic is a part of Static Analyzer's particular
path diagnostic construction scheme. As such, it doesn't belong to
the PathDiagnostic class, but to the Analyzer.
Differential Revision: https://reviews.llvm.org/D67418
llvm-svn: 371660
Artem Dergachev [Wed, 11 Sep 2019 20:54:21 +0000 (20:54 +0000)]
[analyzer] NFC: Move getStmt() and createEndOfPath() out of PathDiagnostic.
These static functions deal with ExplodedNodes which is something we don't want
the PathDiagnostic interface to know anything about, as it's planned to be
moved out of libStaticAnalyzerCore.
Differential Revision: https://reviews.llvm.org/D67382
llvm-svn: 371659
Artem Dergachev [Wed, 11 Sep 2019 20:54:17 +0000 (20:54 +0000)]
[analyzer] NFC: Re-implement stack hints as a side map in BugReport.
That's one of the few random entities in the PathDiagnostic interface that
are specific to the Static Analyzer. By moving them out we could let
everybody use path diagnostics without linking against Static Analyzer.
Differential Revision: https://reviews.llvm.org/D67381
llvm-svn: 371658
Greg Clayton [Wed, 11 Sep 2019 20:51:03 +0000 (20:51 +0000)]
Add a LineTable class to GSYM and test it.
This patch adds the ability to create a gsym::LineTable object, populate it, encode and decode it and test all functionality.
The full format of the LineTable encoding is specified in the header file LineTable.h.
Differential Revision: https://reviews.llvm.org/D66602
llvm-svn: 371657
Alex Lorenz [Wed, 11 Sep 2019 20:40:31 +0000 (20:40 +0000)]
[clang-scan-deps] add skip excluded conditional preprocessor block preprocessing optimization
This commit adds an optimization to clang-scan-deps and clang's preprocessor that skips excluded preprocessor
blocks by bumping the lexer pointer, and not lexing the tokens until reaching appropriate #else/#endif directive.
The skip positions and lexer offsets are computed when the file is minimized, directly from the minimized tokens.
On an 18-core iMacPro with macOS Catalina Beta I got 10-15% speed-up from this optimization when running clang-scan-deps on
the compilation database for a recent LLVM and Clang (3511 files).
Differential Revision: https://reviews.llvm.org/D67127
llvm-svn: 371656
Volodymyr Sapsai [Wed, 11 Sep 2019 20:39:04 +0000 (20:39 +0000)]
Fix -Wnonportable-include-path suppression for header maps with absolute paths.
In `DirectoryLookup::LookupFile` parameter `HasBeenMapped` doesn't cover
the case when clang finds a file through a header map but doesn't remap
the lookup filename because the target path is an absolute path. As a
result, -Wnonportable-include-path suppression for header maps
introduced in r301592 wasn't triggered.
Change parameter `HasBeenMapped` to `IsInHeaderMap` and use parameter
`MappedName` to track the filename remapping. This way we can handle
both relative and absolute paths in header maps, and account for their
specific properties, like filename remapping being a property preserved
across lookups in multiple directories.
rdar://problem/
39516483
Reviewers: dexonsmith, bruno
Reviewed By: dexonsmith
Subscribers: jkorous, cfe-commits, ributzka
Differential Revision: https://reviews.llvm.org/D58094
llvm-svn: 371655
Alex Langford [Wed, 11 Sep 2019 20:36:28 +0000 (20:36 +0000)]
[Plugins/Process] Remove direct use of ClangASTContext from InferiorCallPOSIX
Summary:
InferiorCallPOSIX directly grabs a ClangASTContext from the Target it
has and does no error checking. I don't think these functions have a
reason to know about clang specifically. Additionally, using
`GetScratchTypeSystemForLanguage` forces us to do error checking since
it returns an Expected.
Differential Revision: https://reviews.llvm.org/D67427
llvm-svn: 371654
Reid Kleckner [Wed, 11 Sep 2019 20:29:22 +0000 (20:29 +0000)]
[llvm-reduce] Fix a bug, improve error handling when running test
llvm::sys::ExecuteAndWait can report errors, so let's make use of that.
Second, while iterating uses of functions to remove, a call can appear
multiple times. Use a SetVector so we don't attempt to erase such a call
twice.
llvm-svn: 371653
Adrian Prantl [Wed, 11 Sep 2019 19:57:29 +0000 (19:57 +0000)]
Update link to the DWARF spec.
llvm-svn: 371650
Michael Liao [Wed, 11 Sep 2019 19:55:20 +0000 (19:55 +0000)]
[AMDGPU] Fix crash in phi-elimination hook.
Summary: - Pre-check in case there's just a single PHI insn.
Reviewers: alex-t, rampitec, arsenm
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, dstuttard, tpr, t-tye, hiraditya, llvm-commits, yaxunl
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67451
llvm-svn: 371649
Adrian Prantl [Wed, 11 Sep 2019 19:49:38 +0000 (19:49 +0000)]
Update documentation.
llvm-svn: 371648
Max Moroz [Wed, 11 Sep 2019 19:43:03 +0000 (19:43 +0000)]
[libFuzzer] Remove hardcoded number of new features in merge_two_step.test.
Summary:
The number of features can be different on different platforms.
This should fixed broken builders, e.g.
http://lab.llvm.org:8011/builders/clang-cmake-aarch64-full/builds/7946
Reviewers: Dor1s
Reviewed By: Dor1s
Subscribers: kristof.beyls, delcypher, #sanitizers, llvm-commits
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D67458
llvm-svn: 371647
David Bolvansky [Wed, 11 Sep 2019 18:55:56 +0000 (18:55 +0000)]
[NFC] Added triple to test file to avoid arm buildbots failures
llvm-svn: 371646
Matt Arsenault [Wed, 11 Sep 2019 18:55:20 +0000 (18:55 +0000)]
Fix test failures after r371640
r371640 evidently fixed bug 39481
llvm-svn: 371645
Eli Friedman [Wed, 11 Sep 2019 18:55:00 +0000 (18:55 +0000)]
[ConstantHoisting] Fix non-determinism.
Differential Revision: https://reviews.llvm.org/D66114
llvm-svn: 371644
Pirama Arumuga Nainar [Wed, 11 Sep 2019 18:35:49 +0000 (18:35 +0000)]
[IRMover] Don't map globals if their types are the same
Summary:
During IR Linking, if the types of two globals in destination and source
modules are the same, it can only be because the global in the
destination module is originally from the source module and got added to
the destination module from a shared metadata.
We shouldn't map this type to itself in case the type's components get
remapped to a new type from the destination (for instance, during the
loop over SrcM->getIdentifiedStructTypes() further below in
IRLinker::computeTypeMapping()).
Fixes PR40312.
Reviewers: tejohnson, pcc, srhines
Subscribers: mehdi_amini, hiraditya, steven_wu, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66814
llvm-svn: 371643
Reid Kleckner [Wed, 11 Sep 2019 18:09:10 +0000 (18:09 +0000)]
[MS] Consder constexpr globals to be inline, as in C++17
Summary:
Microsoft seems to do this regardless of the language mode, so we must
also do it in order to be ABI compatible.
Fixes PR36125
Reviewers: thakis
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D47956
llvm-svn: 371642
Matt Arsenault [Wed, 11 Sep 2019 17:59:21 +0000 (17:59 +0000)]
LiveIntervals: Split live intervals on multiple dead defs
If there are multiple dead defs of the same virtual register, these
are required to be split into multiple virtual registers with separate
live intervals to avoid a verifier error.
llvm-svn: 371640
Zoe Carver [Wed, 11 Sep 2019 17:39:24 +0000 (17:39 +0000)]
Consolidate swap, swap_ranges, and iter_swap in <type_traits>.
NFC. Thanks to @Quuxplusone (Arthur O'Dwyer) for this change.
llvm-svn: 371639
Louis Dionne [Wed, 11 Sep 2019 16:57:19 +0000 (16:57 +0000)]
[libc++] Add a CMake cache for Apple-specific configuration options
llvm-svn: 371638
Sergey Dmitriev [Wed, 11 Sep 2019 16:28:47 +0000 (16:28 +0000)]
[Clang][Bundler] Replace std::vector by SmallVector [NFC]
Differential Revision: https://reviews.llvm.org/D67413
llvm-svn: 371637
Nico Weber [Wed, 11 Sep 2019 16:26:59 +0000 (16:26 +0000)]
gn build: Merge r371635
llvm-svn: 371636
Petr Hosek [Wed, 11 Sep 2019 16:19:50 +0000 (16:19 +0000)]
Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM"
This patch contains the basic functionality for reporting potentially
incorrect usage of __builtin_expect() by comparing the developer's
annotation against a collected PGO profile. A more detailed proposal and
discussion appears on the CFE-dev mailing list
(http://lists.llvm.org/pipermail/cfe-dev/2019-July/062971.html) and a
prototype of the initial frontend changes appear here in D65300
We revised the work in D65300 by moving the misexpect check into the
LLVM backend, and adding support for IR and sampling based profiles, in
addition to frontend instrumentation.
We add new misexpect metadata tags to those instructions directly
influenced by the llvm.expect intrinsic (branch, switch, and select)
when lowering the intrinsics. The misexpect metadata contains
information about the expected target of the intrinsic so that we can
check against the correct PGO counter when emitting diagnostics, and the
compiler's values for the LikelyBranchWeight and UnlikelyBranchWeight.
We use these branch weight values to determine when to emit the
diagnostic to the user.
A future patch should address the comment at the top of
LowerExpectIntrisic.cpp to hoist the LikelyBranchWeight and
UnlikelyBranchWeight values into a shared space that can be accessed
outside of the LowerExpectIntrinsic pass. Once that is done, the
misexpect metadata can be updated to be smaller.
In the long term, it is possible to reconstruct portions of the
misexpect metadata from the existing profile data. However, we have
avoided this to keep the code simple, and because some kind of metadata
tag will be required to identify which branch/switch/select instructions
are influenced by the use of llvm.expect
Patch By: paulkirth
Differential Revision: https://reviews.llvm.org/D66324
llvm-svn: 371635
Florian Hahn [Wed, 11 Sep 2019 16:17:03 +0000 (16:17 +0000)]
Revert [InstCombine] Use SimplifyFMulInst to simplify multiply in fma.
This introduces additional rounding error in some cases. See D67434.
This reverts r371518 (git commit
18a1f0818b659cee13865b4fad2648d85984a4ed)
llvm-svn: 371634
Sergey Dmitriev [Wed, 11 Sep 2019 16:03:21 +0000 (16:03 +0000)]
[Clang][Bundler] Fix for a potential memory leak [NFC]
Bundler leaks memory if it is called with -type=o but given input isn't an object file (though it has to have a known binary type like IR, archive, etc...). Memory leak is happening when binary object returned by the createBinary(...) call cannot be casted to an ObjectFile type. In this case returned BinaryOrErr object releases ownership of the binary, but no one is taking it (see line 626).
Differential Revision: https://reviews.llvm.org/D67416
llvm-svn: 371633
Alexey Bataev [Wed, 11 Sep 2019 15:44:06 +0000 (15:44 +0000)]
[OPENMP] Update the diagnosis message for canonical loop form, by Chi
Chun Chen.
The previous patch (https://reviews.llvm.org/D54441) support the
relational-op != very well for openmp canonical loop form, however,
it didn't update the diagnosis message. So this patch is simply
update the diagnosis message by adding !=, update the test
related to it, and update the section number for canonical loop
form for OpenMP 5.0 in comment.
Differential Revision: https://reviews.llvm.org/D66559
llvm-svn: 371631
Roman Lebedev [Wed, 11 Sep 2019 15:32:46 +0000 (15:32 +0000)]
[InstSimplify] Pass SimplifyQuery into simplifyUnsignedRangeCheck() and use it for isKnownNonZero()
This was actually the original intention in D67332,
but i messed up and forgot about it.
This patch was originally part of D67411, but precommitting this.
llvm-svn: 371630
Roman Lebedev [Wed, 11 Sep 2019 15:28:03 +0000 (15:28 +0000)]
[NFC][InstSimplify] Add extra test for D67411 with @llvm.assume
llvm-svn: 371629
Kostya Kortchinsky [Wed, 11 Sep 2019 14:48:41 +0000 (14:48 +0000)]
[scudo][standalone] Android related improvements
Summary:
This changes a few things to improve memory footprint and performances
on Android, and fixes a test compilation error:
- add `stdlib.h` to `wrappers_c_test.cc` to address
https://bugs.llvm.org/show_bug.cgi?id=42810
- change Android size class maps, based on benchmarks, to improve
performances and lower the Svelte memory footprint. Also change the
32-bit region size for said configuration
- change the `reallocate` logic to reallocate in place for sizes larger
than the original chunk size, when they still fit in the same block.
This addresses patterns from `memory_replay` dumps like the following:
```
202: realloc 0xb48fd000 0xb4930650 12352
202: realloc 0xb48fd000 0xb48fd000 12420
202: realloc 0xb48fd000 0xb48fd000 12492
202: realloc 0xb48fd000 0xb48fd000 12564
202: realloc 0xb48fd000 0xb48fd000 12636
202: realloc 0xb48fd000 0xb48fd000 12708
202: realloc 0xb48fd000 0xb48fd000 12780
202: realloc 0xb48fd000 0xb48fd000 12852
202: realloc 0xb48fd000 0xb48fd000 12924
202: realloc 0xb48fd000 0xb48fd000 12996
202: realloc 0xb48fd000 0xb48fd000 13068
202: realloc 0xb48fd000 0xb48fd000 13140
202: realloc 0xb48fd000 0xb48fd000 13212
202: realloc 0xb48fd000 0xb48fd000 13284
202: realloc 0xb48fd000 0xb48fd000 13356
202: realloc 0xb48fd000 0xb48fd000 13428
202: realloc 0xb48fd000 0xb48fd000 13500
202: realloc 0xb48fd000 0xb48fd000 13572
202: realloc 0xb48fd000 0xb48fd000 13644
202: realloc 0xb48fd000 0xb48fd000 13716
202: realloc 0xb48fd000 0xb48fd000 13788
...
```
In this situation we were deallocating the old chunk, and
allocating a new one for every single one of those, but now we can
keep the same chunk (we just updated the header), which saves some
heap operations.
Reviewers: hctim, morehouse, vitalybuka, eugenis, cferris, rengolin
Reviewed By: morehouse
Subscribers: srhines, delcypher, #sanitizers, llvm-commits
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D67293
llvm-svn: 371628
Alexey Bataev [Wed, 11 Sep 2019 14:44:30 +0000 (14:44 +0000)]
[OPENMP]Updated status page, NFC.
llvm-svn: 371627
Nico Weber [Wed, 11 Sep 2019 14:40:16 +0000 (14:40 +0000)]
gn build: Merge r371562
llvm-svn: 371626
Konrad Kleine [Wed, 11 Sep 2019 14:33:37 +0000 (14:33 +0000)]
Revert "[LLDB][ELF] Load both, .symtab and .dynsym sections"
This reverts commit
3a4781bbf4f39a25562b4c61c9a9ab2483a96b41.
llvm-svn: 371625
Konrad Kleine [Wed, 11 Sep 2019 14:33:21 +0000 (14:33 +0000)]
Revert "[LLDB][ELF] Fixup for comments in D67390"
This reverts commit
813f05915d29904878d926f9849ca3dbe78096af.
llvm-svn: 371624
Raphael Isemann [Wed, 11 Sep 2019 14:33:11 +0000 (14:33 +0000)]
[lldb][NFC] Make include directories in Clang expression parser a std::string
We never compare these directories (where ConstString would be good) and
essentially just convert this back to a normal string in the end. So we might
as well just use std::string. Also makes it easier to unittest this code
(which was the main motivation for this change).
llvm-svn: 371623
Whitney Tsang [Wed, 11 Sep 2019 14:26:22 +0000 (14:26 +0000)]
LLVM: Optimization Pass: Remove conflicting attribute, if any, before
adding new read attribute to an argument
Summary: Update optimization pass to prevent adding read-attribute to an
argument without removing its conflicting attribute.
A read attribute, based on the result of the attribute deduction
process, might be added to an argument. The attribute might be in
conflict with other read/write attribute currently associated with the
argument. To ensure the compatibility of attributes, conflicting
attribute, if any, must be removed before a new one is added.
The following snippet shows the current behavior of the compiler, where
the compilation process is aborted due to incompatible attributes.
$ cat x.ll
; ModuleID = 'x.bc'
%_type_of_d-ccc = type <{ i8*, i8, i8, i8, i8 }>
@d-ccc = internal global %_type_of_d-ccc <{ i8* null, i8 1, i8 13, i8 0,
i8 -127 }>, align 8
define void @foo(i32* writeonly %.aaa) {
foo_entry:
%_param_.aaa = alloca i32*, align 8
store i32* %.aaa, i32** %_param_.aaa, align 8
store i8 0, i8* getelementptr inbounds (%_type_of_d-ccc,
%_type_of_d-ccc* @d-ccc, i32 0, i32 3)
ret void
}
$ opt -O3 x.ll
Attributes 'readnone and writeonly' are incompatible!
void (i32*)* @foo
in function foo
LLVM ERROR: Broken function found, compilation aborted!
The purpose of this changeset is to fix the above error. This fix is
based on a suggestion from Johannes @jdoerfert (many thanks!!!)
Authored By: anhtuyen
Reviewer: nicholas, rnk, chandlerc, jdoerfert
Reviewed By: rnk
Subscribers: hiraditya, jdoerfert, llvm-commits, anhtuyen, LLVM
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D58694
llvm-svn: 371622
Sanjay Patel [Wed, 11 Sep 2019 14:18:48 +0000 (14:18 +0000)]
[ConstProp] add tests for fma that produce NaN; NFC
llvm-svn: 371621
Max Moroz [Wed, 11 Sep 2019 14:11:08 +0000 (14:11 +0000)]
[libFuzzer] Make -merge=1 to reuse coverage information from the control file.
Summary:
This change allows to perform corpus merging in two steps. This is useful when
the user wants to address the following two points simultaneously:
1) Get trustworthy incremental stats for the coverage and corpus size changes
when adding new corpus units.
2) Make sure the shorter units will be preferred when two or more units give the
same unique signal (equivalent to the `REDUCE` logic).
This solution was brainstormed together with @kcc, hopefully it looks good to
the other people too. The proposed use case scenario:
1) We have a `fuzz_target` binary and `existing_corpus` directory.
2) We do fuzzing and write new units into the `new_corpus` directory.
3) We want to merge the new corpus into the existing corpus and satisfy the
points mentioned above.
4) We create an empty directory `merged_corpus` and run the first merge step:
`
./fuzz_target -merge=1 -merge_control_file=MCF ./merged_corpus ./existing_corpus
`
this provides the initial stats for `existing_corpus`, e.g. from the output:
`
MERGE-OUTER: 3 new files with 11 new features added; 11 new coverage edges
`
5) We recreate `merged_corpus` directory and run the second merge step:
`
./fuzz_target -merge=1 -merge_control_file=MCF ./merged_corpus ./existing_corpus ./new_corpus
`
this provides the final stats for the merged corpus, e.g. from the output:
`
MERGE-OUTER: 6 new files with 14 new features added; 14 new coverage edges
`
Alternative solutions to this approach are:
A) Store precise coverage information for every unit (not only unique signal).
B) Execute the same two steps without reusing the control file.
Either of these would be suboptimal as it would impose an extra disk or CPU load
respectively, which is bad given the quadratic complexity in the worst case.
Tested on Linux, Mac, Windows.
Reviewers: morehouse, metzman, hctim, kcc
Reviewed By: morehouse
Subscribers: JDevlieghere, delcypher, mgrang, #sanitizers, llvm-commits, kcc
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D66107
llvm-svn: 371620
Sanjay Patel [Wed, 11 Sep 2019 14:01:11 +0000 (14:01 +0000)]
[ConstProp] move test file from InstSimplify; NFC
These are constant folding tests; there is no code
directly in InstSimplify for this.
llvm-svn: 371619
Raphael Isemann [Wed, 11 Sep 2019 13:57:41 +0000 (13:57 +0000)]
[lldb][NFC] Remove dead code in SBAddress::GetDescription
llvm-svn: 371618