platform/upstream/llvm.git
6 years agoFix build broken by r328090
Pavel Labath [Wed, 21 Mar 2018 12:18:03 +0000 (12:18 +0000)]
Fix build broken by r328090

- constexpr is needed for out-of-class definition of the Type static
  member by some compilers
- MSVC is confused by the initialization of the static constexpr char[]
  member when it happens in a template specialization. Explicitly
  specifying the length of the array seems to be enough to help it
  figure things out.

llvm-svn: 328093

6 years agoclang-interpreter example cmake fix
Luke Cheeseman [Wed, 21 Mar 2018 12:05:19 +0000 (12:05 +0000)]
clang-interpreter example cmake fix

Add in a space when appending the export to the linker options. Without
the space the export is appended onto whatever the last link option
was, which might be a file.

llvm-svn: 328092

6 years ago[PowerPC] Disable failing dynamic tls test cases
Nemanja Ivanovic [Wed, 21 Mar 2018 11:58:37 +0000 (11:58 +0000)]
[PowerPC] Disable failing dynamic tls test cases

Due to recent kernel upgrades, these test case fail on PowerPC buildbots.
This is a known problem on affected kernels.

llvm-svn: 328091

6 years ago[dwarf] Unify unknown dwarf enum formatting code
Pavel Labath [Wed, 21 Mar 2018 11:46:37 +0000 (11:46 +0000)]
[dwarf] Unify unknown dwarf enum formatting code

Summary:
We have had at least three pieces of code (in DWARFAbbreviationDeclaration,
DWARFAcceleratorTable and DWARFDie) that have hand-rolled support for
dumping unknown dwarf enum values. While not terrible, they are a bit
distracting and enable small differences to creep in (Unknown_ffff vs.
Unknown_0xffff). I ended up needing to add a fourth place
(DWARFVerifier), so it seems it would be a good time to centralize.

This patch creates an alternative to the XXXString dumping functions in
the BinaryFormat library, which formats an unknown value as
DW_TYPE_unknown_1234, instead of just an empty string. It is based on
the formatv function, as that allows us to avoid materializing the
string for unknown values (and because this way I don't have to invent a
name for the new functions :P).

In this patch I add formatters for dwarf attributes, forms, tags, and
index attributes as these are the ones in use currently, but adding
other enums is straight-forward.

Reviewers: dblaikie, JDevlieghere, aprantl

Subscribers: llvm-commits

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

llvm-svn: 328090

6 years ago[dotest] Use subprocess.call to forward arguments in wrapper
Jonas Devlieghere [Wed, 21 Mar 2018 11:13:56 +0000 (11:13 +0000)]
[dotest] Use subprocess.call to forward arguments in wrapper

As suggested by Pavel on lldb-commits. Originally I picked os.system
because it was so much more simple than the subprocess module, but that
no longer holds true after yesterday's hack in r328020. This is what it
should've been in the first place.

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

llvm-svn: 328089

6 years agoFix crash exposed by r328025
Pavel Labath [Wed, 21 Mar 2018 11:10:57 +0000 (11:10 +0000)]
Fix crash exposed by r328025

The issue was that the ASTDumper was being passed a null pointer
(because we did not create any declaration for the operator==).  The
crash was in logging code, so it only manifested it self if you ran the
tests with logging enabled (like our bots do).

Given that this is logging code and the rest of the debugger is fine
with the declaration being null, I just make sure the logging code can
handle it as well. Right now I just do the null check in
ClangExpressionDeclMap, but if the ASTDumper class is meant to be a
debugging/logging aid, then it might be a good idea move the check
inside the class itself.

llvm-svn: 328088

6 years ago[ASTMatchers] Remove extra qualifier for consistency (LibASTMatchersReference.html)
Clement Courbet [Wed, 21 Mar 2018 10:54:29 +0000 (10:54 +0000)]
[ASTMatchers] Remove extra qualifier for consistency (LibASTMatchersReference.html)

+ Regenerate doc.

llvm-svn: 328087

6 years ago[ASTMatchers] Regenerate doc.
Clement Courbet [Wed, 21 Mar 2018 10:48:00 +0000 (10:48 +0000)]
[ASTMatchers] Regenerate doc.

llvm-svn: 328086

6 years agoRevert layering changes
Jonas Devlieghere [Wed, 21 Mar 2018 10:35:09 +0000 (10:35 +0000)]
Revert layering changes

This reverts:
  r328072 "Move Compiler.h from Support to Demangler to fix layering."
  r328073 "Fix the actual user of DataTypes.h in llvm-c to avoid the circular dependency"

Failing bots:
  http://green.lab.llvm.org/green/job/clang-stage2-coverage-R/
  http://green.lab.llvm.org/green/job/clang-stage2-configure-Rlto/

llvm-svn: 328085

6 years ago[SelectionDAG] Support multiple dangling debug info for one value
Bjorn Pettersson [Wed, 21 Mar 2018 09:44:34 +0000 (09:44 +0000)]
[SelectionDAG] Support multiple dangling debug info for one value

Summary:
When building the selection DAG we sometimes need to postpone
the handling of a dbg.value until the value it should refer to
is created. This is done by using the DanglingDebugInfoMap.
In the past this map has been limited to hold one dangling
dbg.value per value. This patch removes that restriction.

Reviewers: aprantl, rnk, probinson, vsk

Reviewed By: aprantl

Subscribers: Ka-Ka, llvm-commits, JDevlieghere

Tags: #debug-info

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

llvm-svn: 328084

6 years agoFix TestOperatorOverload for 32-bit builds
Pavel Labath [Wed, 21 Mar 2018 09:43:50 +0000 (09:43 +0000)]
Fix TestOperatorOverload for 32-bit builds

- use more goodies from Makefile.rules to correctly build a 32-bit
binary.
- avoid hardcoding typeof(nil) in the test.

This should partially fix the linux bot. There is still one assertion
failure remaining, which I'll have to investigate separately, as I am
not experiencing it locally.

llvm-svn: 328083

6 years agotsan: fix darwin build after 328079
Dmitry Vyukov [Wed, 21 Mar 2018 09:26:29 +0000 (09:26 +0000)]
tsan: fix darwin build after 328079

328079 introduced a weak hook without default implementation.
This broke darwin build:
http://green.lab.llvm.org/green//job/clang-stage1-configure-RA/43731/consoleFull#-119213188149ba4694-19c4-4d7e-bec5-911270d8a58c

Provide default impl for the hook.

llvm-svn: 328082

6 years ago[ELF] - Teach LLD to hint about -fdebug-types-section.
George Rimar [Wed, 21 Mar 2018 09:19:34 +0000 (09:19 +0000)]
[ELF] - Teach LLD to hint about -fdebug-types-section.

Patch teaches LLD to hint user about -fdebug-types-section flag
if relocation overflow happens in debug section.

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

llvm-svn: 328081

6 years agoFix build bot after r328078 "llvm-readobj] - Teach llvm-readobj to dump .note.gnu...
George Rimar [Wed, 21 Mar 2018 08:48:44 +0000 (08:48 +0000)]
Fix build bot after r328078 "llvm-readobj] - Teach llvm-readobj to dump .note.gnu.property sections."

BB was: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/27058/steps/test/logs/stdio

llvm-svn: 328080

6 years agotsan: support inlined frames in external symbolization
Dmitry Vyukov [Wed, 21 Mar 2018 08:44:14 +0000 (08:44 +0000)]
tsan: support inlined frames in external symbolization

New API passes a callback function to the external symbolizer,
allowing it to add multiple frames to the traceback. Note that
the old interface API will be still supported until the clients
migrate to the new one.

Author: asmundak (Alexander Smundak)
Reviewed in: https://reviews.llvm.org/D44714

llvm-svn: 328079

6 years ago[llvm-readobj] - Teach llvm-readobj to dump .note.gnu.property sections.
George Rimar [Wed, 21 Mar 2018 08:34:55 +0000 (08:34 +0000)]
[llvm-readobj] - Teach llvm-readobj to dump .note.gnu.property sections.

NT_GNU_PROPERTY_TYPE_0 is a recently added type of .note.gnu.property
section specified in Linux Extensions to gABI.
(https://github.com/hjl-tools/linux-abi/wiki/Linux-Extensions-to-gABI)

Patch teach tool to print such notes properly.

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

llvm-svn: 328078

6 years agoFix declaration of environ after r327923
Vitaly Buka [Wed, 21 Mar 2018 07:50:02 +0000 (07:50 +0000)]
Fix declaration of environ after r327923

llvm-svn: 328077

6 years ago[X86][Broadwell] Merge multiple InstrRW entries that map to the same SchedWriteRes...
Craig Topper [Wed, 21 Mar 2018 06:28:42 +0000 (06:28 +0000)]
[X86][Broadwell] Merge multiple InstrRW entries that map to the same SchedWriteRes group (NFCI) (PR35955)

llvm-svn: 328076

6 years ago[TableGen] Remove a defaulted function argument that is never called with another...
Craig Topper [Wed, 21 Mar 2018 05:13:04 +0000 (05:13 +0000)]
[TableGen] Remove a defaulted function argument that is never called with another value. NFC

llvm-svn: 328075

6 years ago[TableGen] Move a function from llvm namespace and make it a static function. NFC
Craig Topper [Wed, 21 Mar 2018 05:13:01 +0000 (05:13 +0000)]
[TableGen] Move a function from llvm namespace and make it a static function. NFC

It's only called from one place and is defined just above that use.

llvm-svn: 328074

6 years agoFix the actual user of DataTypes.h in llvm-c to avoid the circular dependency
David Blaikie [Wed, 21 Mar 2018 04:07:07 +0000 (04:07 +0000)]
Fix the actual user of DataTypes.h in llvm-c to avoid the circular dependency

(follow-up to r328065)

llvm-svn: 328073

6 years agoMove Compiler.h from Support to Demangler to fix layering.
David Blaikie [Wed, 21 Mar 2018 04:07:05 +0000 (04:07 +0000)]
Move Compiler.h from Support to Demangler to fix layering.

Support depends on Demangle (Support/Unix/Signals.inc), so Demangle
including Support/Compiler.h created a circular dependency.

Leave a forwarding shim of Compiler.h because it makes more sense for
users (a deeper fix might involve splitting Support into lower and upper
Support - but that also sounds a bit weird/awkward) than thinking about
the dependency on the Demangler.

llvm-svn: 328072

6 years ago[X86] Fix the SchedRW for XOP vpcom register form instructions to not be marked as...
Craig Topper [Wed, 21 Mar 2018 03:41:33 +0000 (03:41 +0000)]
[X86] Fix the SchedRW for XOP vpcom register form instructions to not be marked as loads.

llvm-svn: 328071

6 years ago[TableGen] Use SmallMapVector to simplify some code that was trying to keep a vector...
Craig Topper [Wed, 21 Mar 2018 02:48:34 +0000 (02:48 +0000)]
[TableGen] Use SmallMapVector to simplify some code that was trying to keep a vector unique

Summary:
This code previously had a SmallVector of std::pairs containing an unsigned and another SmallVector. The outer vector was using the unsigned effectively as a key to decide which SmallVector to add into. So each time something new needed to be added the out vector needed to be scanned. If it wasn't found a new entry needed to be added to be added. This sounds very much like a map, but the next loop iterates over the outer vector to get a deterministic order.

We can simplify this code greatly if use SmallMapVector instead. This uses more stack space since we now have a vector and a map, but the searching and creating new entries all happens behind the scenes. It should also make the search more efficient though usually there are only a few entries so that doesn't matter much.

We could probably get determinism by just using std::map which would iterate over the unsigned key, but that would generate different output from what we get with the current implementation.

Reviewers: RKSimon, dblaikie

Reviewed By: dblaikie

Subscribers: llvm-commits

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

llvm-svn: 328070

6 years agoRevert "[lit] Adding config initialization to lit tests in clang-tools-extra"
Petr Hosek [Wed, 21 Mar 2018 02:28:22 +0000 (02:28 +0000)]
Revert "[lit] Adding config initialization to lit tests in clang-tools-extra"

This reverts commit r328060 because a test that was inteded to run on
Windows but never ran before due to the missing config initialization
is now being executed and is failing.

llvm-svn: 328069

6 years agoSet dso_local on runtime variables.
Rafael Espindola [Wed, 21 Mar 2018 01:30:16 +0000 (01:30 +0000)]
Set dso_local on runtime variables.

llvm-svn: 328068

6 years agoRevert r326782 "[analyzer] CStringChecker.cpp: Remove the duplicated check...".
Artem Dergachev [Wed, 21 Mar 2018 00:57:37 +0000 (00:57 +0000)]
Revert r326782 "[analyzer] CStringChecker.cpp: Remove the duplicated check...".

It seems that the refactoring was causing a functional change and some warnings
have disappeared.

llvm-svn: 328067

6 years ago[analyzer] Suppress more MallocChecker positives in smart pointer destructors.
Artem Dergachev [Wed, 21 Mar 2018 00:49:47 +0000 (00:49 +0000)]
[analyzer] Suppress more MallocChecker positives in smart pointer destructors.

r326249 wasn't quite enough because we often run out of inlining stack depth
limit and for that reason fail to see the atomics we're looking for.

Add a more straightforward false positive suppression that is based on the name
of the class. I.e. if we're releasing a pointer in a destructor of a "something
shared/intrusive/reference/counting something ptr/pointer something", then any
use-after-free or double-free that occurs later would likely be a false
positive.

rdar://problem/38013606

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

llvm-svn: 328066

6 years agoMove DataTypes.h from Support to llvm-c to fix layering.
David Blaikie [Wed, 21 Mar 2018 00:48:05 +0000 (00:48 +0000)]
Move DataTypes.h from Support to llvm-c to fix layering.

Support depends on llvm-c (a few typedefs, macros, etc - Types.h,
Disassembler.h, and TargetMachine.h.

This could be done the other way - those macros/typedefs/etc could be
moved into Support and used from llvm-c instead. If someone feels that's
a better direction to go, happy to discuss it/try it out/etc.

llvm-svn: 328065

6 years agoImplement LWG3034: P0767R1 breaks previously-standard-layout types
Marshall Clow [Wed, 21 Mar 2018 00:36:05 +0000 (00:36 +0000)]
Implement LWG3034: P0767R1 breaks previously-standard-layout types

llvm-svn: 328064

6 years ago[Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Wed, 21 Mar 2018 00:14:43 +0000 (00:14 +0000)]
[Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 328063

6 years ago[Testsuite] Modernize this test to be run out-of-tree.
Davide Italiano [Tue, 20 Mar 2018 23:47:47 +0000 (23:47 +0000)]
[Testsuite] Modernize this test to be run out-of-tree.

New tests should run the make syntax voodoo $@ and $<
instead of hardcoding the names. We should also document
how to write one, it's on my list.

llvm-svn: 328062

6 years ago[X86] Change PMULLD to 10 cycles on Skylake per Agner's tables and llvm-exegesis.
Craig Topper [Tue, 20 Mar 2018 23:39:48 +0000 (23:39 +0000)]
[X86] Change PMULLD to 10 cycles on Skylake per Agner's tables and llvm-exegesis.

Also restrict to port 0 and 1 for SkylakeClient. It looks like the scheduler models don't account for client not having a full vector ALU on port 5 like server.

Fixes PR36808.

llvm-svn: 328061

6 years ago[lit] Adding config initialization to lit tests in clang-tools-extra
Julie Hockett [Tue, 20 Mar 2018 23:22:50 +0000 (23:22 +0000)]
[lit] Adding config initialization to lit tests in clang-tools-extra

Adding the config initialization to clang-tools-extra so that tests that
use REQUIRES, UNSUPPORTED, and XFAIL based on platform or target triple
work properly.

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

llvm-svn: 328060

6 years agoImplement LWG3035: std::allocator's constructors should be constexpr.
Marshall Clow [Tue, 20 Mar 2018 23:02:53 +0000 (23:02 +0000)]
Implement LWG3035: std::allocator's constructors should be constexpr.

llvm-svn: 328059

6 years ago[MustExecute] Shwo the effect of using full loop info variant
Philip Reames [Tue, 20 Mar 2018 23:00:54 +0000 (23:00 +0000)]
[MustExecute] Shwo the effect of using full loop info variant

Most basic possible test for the logic used by LICM.

Also contains a speculative build fix for compiles which complain about a definition of a stuct K; followed by a declaration as class K;

llvm-svn: 328058

6 years ago[WebAssembly] Update torture compile test expectations
Derek Schuff [Tue, 20 Mar 2018 23:00:13 +0000 (23:00 +0000)]
[WebAssembly] Update torture compile test expectations

The tests compile after r328049

llvm-svn: 328057

6 years ago[MustExecute] Add simplest possible test for LoopSafetyOnfo
Philip Reames [Tue, 20 Mar 2018 22:55:20 +0000 (22:55 +0000)]
[MustExecute] Add simplest possible test for LoopSafetyOnfo

(Currently showing without, will enable and check in diff to show impact)

llvm-svn: 328056

6 years ago[MustExecute] Move isGuaranteedToExecute and related rourtines to Analysis
Philip Reames [Tue, 20 Mar 2018 22:45:23 +0000 (22:45 +0000)]
[MustExecute] Move isGuaranteedToExecute and related rourtines to Analysis

Next step is to actually merge the implementations and get both implementations tested through the new printer.

llvm-svn: 328055

6 years agoImplement LWG 3039 and 3041 - 'Treating Unnecessary decay'.
Marshall Clow [Tue, 20 Mar 2018 22:37:37 +0000 (22:37 +0000)]
Implement LWG 3039 and 3041 - 'Treating Unnecessary decay'.

llvm-svn: 328054

6 years ago[Modules] Honor -fmodule-name when handling private framework modules
Bruno Cardoso Lopes [Tue, 20 Mar 2018 22:36:39 +0000 (22:36 +0000)]
[Modules] Honor -fmodule-name when handling private framework modules

When skipping building the module for a private framework module,
LangOpts.CurrentModule isn't enough for implict modules builds; for
instance, in case a private module is built while building a public one,
LangOpts.CurrentModule doesn't reflect the -fmodule-name being passed
down, but instead the module name which triggered the build.

Store the actual -fmodule-name in LangOpts.ModuleName and actually
check a name was provided during compiler invocation in order to
skip building the private module.

rdar://problem/38434694

llvm-svn: 328053

6 years ago[SchedModel] Simplify InstRegexOp::apply. NFCI.
Simon Pilgrim [Tue, 20 Mar 2018 22:20:28 +0000 (22:20 +0000)]
[SchedModel] Simplify InstRegexOp::apply. NFCI.

As discussed on D44687, there was no need for 2 separate for loops for collecting the Regex and then matching against instructions.

llvm-svn: 328052

6 years agoChange ImplicitConverionKind comments to refer to C++ stable names[NFC]
Erich Keane [Tue, 20 Mar 2018 22:05:01 +0000 (22:05 +0000)]
Change ImplicitConverionKind comments to refer to C++ stable names[NFC]

llvm-svn: 328051

6 years agoDelete BuiltinCC. NFC.
Rafael Espindola [Tue, 20 Mar 2018 22:02:57 +0000 (22:02 +0000)]
Delete BuiltinCC. NFC.

It is always identical to RuntimeCC.

llvm-svn: 328050

6 years ago[WebAssembly] Strip threadlocal attribute from globals in single thread mode
Derek Schuff [Tue, 20 Mar 2018 22:01:32 +0000 (22:01 +0000)]
[WebAssembly] Strip threadlocal attribute from globals in single thread mode

The default thread model for wasm is single, and in this mode thread-local
global variables can be lowered identically to non-thread-local variables.

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

llvm-svn: 328049

6 years agoAdd CHECKs for a few declarations. NFC.
Rafael Espindola [Tue, 20 Mar 2018 21:54:14 +0000 (21:54 +0000)]
Add CHECKs for a few declarations. NFC.

We were just missing test coverage for this.

llvm-svn: 328048

6 years ago[format] Eliminate global destructors.
Benjamin Kramer [Tue, 20 Mar 2018 21:52:19 +0000 (21:52 +0000)]
[format] Eliminate global destructors.

llvm-svn: 328047

6 years agoRead OMP_TARGET_OFFLOAD and provide API to access ICV
Jonathan Peyton [Tue, 20 Mar 2018 21:18:17 +0000 (21:18 +0000)]
Read OMP_TARGET_OFFLOAD and provide API to access ICV

Added settings code to read OMP_TARGET_OFFLOAD environment variable. Added
target-offload-var ICV as __kmp_target_offload, set via OMP_TARGET_OFFLOAD,
if available, otherwise defaulting to DEFAULT. Valid values for the ICV are
specified as enum values {0,1,2} for disabled, default, and mandatory. An
internal API access function __kmpc_get_target_offload is provided.

Patch by Terry Wilmarth

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

llvm-svn: 328046

6 years ago[X86] Drop unnecessary InstRW overrides for WriteFMA
Simon Pilgrim [Tue, 20 Mar 2018 21:15:23 +0000 (21:15 +0000)]
[X86] Drop unnecessary InstRW overrides for WriteFMA

As noticed on D44687, these already match the WriteFMA def so can be removed.

llvm-svn: 328045

6 years ago[Driver] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Tue, 20 Mar 2018 21:08:59 +0000 (21:08 +0000)]
[Driver] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 328044

6 years ago[ReachingDefAnalysis] Fix what I assume to be a typo ReachingDedDefaultVal->ReachingD...
Craig Topper [Tue, 20 Mar 2018 20:53:21 +0000 (20:53 +0000)]
[ReachingDefAnalysis] Fix what I assume to be a typo ReachingDedDefaultVal->ReachingDefDefaultVal.

Unless Ded has some many I don't know about.

llvm-svn: 328043

6 years ago[ObjCARC] Add funclet token to ARC marker
Shoaib Meenai [Tue, 20 Mar 2018 20:45:41 +0000 (20:45 +0000)]
[ObjCARC] Add funclet token to ARC marker

The inline assembly generated for the ARC autorelease elision marker
must have a funclet token if it's emitted inside a funclet, otherwise
the inline assembly (and all subsequent code in the funclet) will be
marked unreachable by WinEHPrepare.

Note that this only applies for the non-O0 case, since at O0, clang
emits the autorelease elision marker itself rather than deferring to the
backend. The fix for clang is handled in a separate change.

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

llvm-svn: 328042

6 years ago[format] Initialize regex lazily
Benjamin Kramer [Tue, 20 Mar 2018 20:43:12 +0000 (20:43 +0000)]
[format] Initialize regex lazily

No need to pay for this on program startup, and also no need to destroy
it on process end.

llvm-svn: 328041

6 years agoSet dso_local on string literals.
Rafael Espindola [Tue, 20 Mar 2018 20:42:55 +0000 (20:42 +0000)]
Set dso_local on string literals.

llvm-svn: 328040

6 years ago[X86] Don't use the MSVC stack protector names on mingw
Martin Storsjo [Tue, 20 Mar 2018 20:37:51 +0000 (20:37 +0000)]
[X86] Don't use the MSVC stack protector names on mingw

Mingw uses the same stack protector functions as GCC provides
on other platforms as well.

Patch by Valentin Churavy!

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

llvm-svn: 328039

6 years ago[AArch64] Add vmulxh_lane fp16 vector intrinsic
Abderrazek Zaafrani [Tue, 20 Mar 2018 20:37:31 +0000 (20:37 +0000)]
[AArch64] Add vmulxh_lane fp16 vector intrinsic

https://reviews.llvm.org/D44591

llvm-svn: 328038

6 years agoFor llvm-objdump and Mach-O files, fix the printing of module init and
Kevin Enderby [Tue, 20 Mar 2018 20:29:52 +0000 (20:29 +0000)]
For llvm-objdump and Mach-O files, fix the printing of module init and
term sections from .o files to look to see if the pointers have a relocation
entry and if so print the symbol name from the relocation entry.  If not fall
back to the existing code and use the pointer value to look up that value
in the symbol table.

rdar://38337506

llvm-svn: 328037

6 years agoSet dso_local for runtime function.
Rafael Espindola [Tue, 20 Mar 2018 20:27:30 +0000 (20:27 +0000)]
Set dso_local for runtime function.

This is another case where there is special logic for adding dllimport
and so we cannot use setGVProperties.

llvm-svn: 328036

6 years ago[AArch64] Add vmulxh_lane fp16 vector intrinsic
Abderrazek Zaafrani [Tue, 20 Mar 2018 20:25:40 +0000 (20:25 +0000)]
[AArch64] Add vmulxh_lane fp16 vector intrinsic

https://reviews.llvm.org/D44591

llvm-svn: 328035

6 years ago[TableGen] Use range based for loop. NFC
Craig Topper [Tue, 20 Mar 2018 20:24:16 +0000 (20:24 +0000)]
[TableGen] Use range based for loop. NFC

llvm-svn: 328034

6 years ago[TableGen] Use vector::append instead of looping and calling push_back. NFC
Craig Topper [Tue, 20 Mar 2018 20:24:14 +0000 (20:24 +0000)]
[TableGen] Use vector::append instead of looping and calling push_back. NFC

Both vectors contain unsigned so we can just use append to do the copying. Not only is this shorter, but it should be able to predict the final size and only grow the vector once if needed.

llvm-svn: 328033

6 years ago[TableGen] Use llvm::transform to simplify some loops. NFCI
Craig Topper [Tue, 20 Mar 2018 20:24:12 +0000 (20:24 +0000)]
[TableGen] Use llvm::transform to simplify some loops. NFCI

llvm-svn: 328032

6 years ago[TableGen] Pass result of std::unique to vector::erase instead of calculating a size...
Craig Topper [Tue, 20 Mar 2018 20:24:10 +0000 (20:24 +0000)]
[TableGen] Pass result of std::unique to vector::erase instead of calculating a size and calling resize.

llvm-svn: 328031

6 years ago[DEBUGINFO] Add -no-dwarf-debug-ranges option.
Alexey Bataev [Tue, 20 Mar 2018 20:21:38 +0000 (20:21 +0000)]
[DEBUGINFO] Add -no-dwarf-debug-ranges option.

Summary:
Added option -no-dwarf-debug-ranges option to disable emission of
.debug_ranges section.

Reviewers: probinson, echristo

Subscribers: aprantl, JDevlieghere, llvm-commits

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

llvm-svn: 328030

6 years ago[llvm-mca] add keyword override to a couple of methods in BackendStatistics.
Andrea Di Biagio [Tue, 20 Mar 2018 20:18:36 +0000 (20:18 +0000)]
[llvm-mca] add keyword override to a couple of methods in BackendStatistics.

This should fix the buildbots after r328011.

llvm-svn: 328029

6 years ago[WebAssembly] Added initial AsmParser implementation.
Derek Schuff [Tue, 20 Mar 2018 20:06:35 +0000 (20:06 +0000)]
[WebAssembly] Added initial AsmParser implementation.

It uses the MC framework and the tablegen matcher to do the
heavy lifting. Can handle both explicit and implicit locals
(-disable-wasm-explicit-locals). Comes with a small regression
test.

This is a first basic implementation that can parse most llvm .s
output and round-trips most instructions succesfully, but in order
to keep the commit small, does not address all issues.

There are a fair number of mismatches between what MC / assembly
matcher think a "CPU" should look like and what WASM provides,
some already have workarounds in this commit (e.g. the way it
deals with register operands) and some that require further work.
Some of that further work may involve changing what the
Disassembler outputs (and what s2wasm parses), so are probably
best left to followups.

Some known things missing:
- Many directives are ignored and not emitted.
- Vararg calls are parsed but extra args not emitted.
- Loop signatures are likely incorrect.
- $drop= is not emitted.
- Disassembler does not output SIMD types correctly, so assembler
  can't test them.

Patch by Wouter van Oortmerssen

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

llvm-svn: 328028

6 years ago[AArch64] Adjust the cost model for Exynos M3
Evandro Menezes [Tue, 20 Mar 2018 20:00:29 +0000 (20:00 +0000)]
[AArch64] Adjust the cost model for Exynos M3

Fix typo in the number of integer dividers.

llvm-svn: 328027

6 years ago[llvm-objcopy] Revert the tests from r328012
Alexander Shaposhnikov [Tue, 20 Mar 2018 19:50:14 +0000 (19:50 +0000)]
[llvm-objcopy] Revert the tests from r328012

Temporarily revert the tests from r328012 as well.

llvm-svn: 328026

6 years ago[ExpressionParser] Re-implement r327356 in a less disruptive way.
Davide Italiano [Tue, 20 Mar 2018 19:46:32 +0000 (19:46 +0000)]
[ExpressionParser] Re-implement r327356 in a less disruptive way.

Instead of applying the sledgehammer of refusing to insert any
C++ symbol in the ASTContext, try to validate the decl if what
we have is an operator. There was other code in lldb which was
responsible for this, just not really exposed (or used) in this
codepath. Also, add a better/more comprehensive test.

<rdar://problem/35645893>

llvm-svn: 328025

6 years ago[llvm-objcopy] Revert r328012
Alexander Shaposhnikov [Tue, 20 Mar 2018 19:46:00 +0000 (19:46 +0000)]
[llvm-objcopy] Revert r328012

Temporarily revert r328012 (since it broke down the big-endian bots),
will resubmit an updated version later.

llvm-svn: 328024

6 years ago[Hexagon] Add a few more lit tests, NFC
Krzysztof Parzyszek [Tue, 20 Mar 2018 19:35:09 +0000 (19:35 +0000)]
[Hexagon] Add a few more lit tests, NFC

llvm-svn: 328023

6 years ago[Hexagon] Add heuristic to exclude critical path cost for scheduling
Krzysztof Parzyszek [Tue, 20 Mar 2018 19:26:27 +0000 (19:26 +0000)]
[Hexagon] Add heuristic to exclude critical path cost for scheduling

Patch by Brendon Cahoon.

llvm-svn: 328022

6 years ago[Hexagon] Fix fall-through warnings in HexagonMCDuplexInfo.cpp
Krzysztof Parzyszek [Tue, 20 Mar 2018 19:23:18 +0000 (19:23 +0000)]
[Hexagon] Fix fall-through warnings in HexagonMCDuplexInfo.cpp

llvm-svn: 328021

6 years ago[lldb-dotest] Wrap arguments in single quotes
Jonas Devlieghere [Tue, 20 Mar 2018 19:18:11 +0000 (19:18 +0000)]
[lldb-dotest] Wrap arguments in single quotes

If we don't wrap arguments to the wrapper in single quotes, combined
arguments, for example for -E, don't reach dotest.py as a unit but as
separate arguments, causing the latter to fail.

llvm-svn: 328020

6 years ago[MC,X86] Cleanup some X86 parser functions to use MCParser helpers. NFCI.
Nirav Dave [Tue, 20 Mar 2018 19:12:41 +0000 (19:12 +0000)]
[MC,X86] Cleanup some X86 parser functions to use MCParser helpers. NFCI.

llvm-svn: 328019

6 years ago[llvm-mca] Remove const from a bunch of ArrayRef. NFC
Andrea Di Biagio [Tue, 20 Mar 2018 19:06:34 +0000 (19:06 +0000)]
[llvm-mca] Remove const from a bunch of ArrayRef. NFC

llvm-svn: 328018

6 years ago[PowerPC][LegalizeFloatTypes] Move the PPC hacks for (i32 fp_to_sint/fp_to_uint ...
Craig Topper [Tue, 20 Mar 2018 18:49:28 +0000 (18:49 +0000)]
[PowerPC][LegalizeFloatTypes] Move the PPC hacks for (i32 fp_to_sint/fp_to_uint (ppcf128 X)) out of LegalizeFloatTypes and into PPC specific code

I'm not entirely sure these hacks are still needed. If you remove the hacks completely, the name of the library call that gets generated doesn't match the grep the test previously had. So the test wasn't really checking anything.

If the hack is still needed it belongs in PPC specific code. I believe the FP_TO_SINT code here is the only place in the tree where a FP_ROUND_INREG node is created today. And I don't think its even being used correctly because the legalization returned a BUILD_PAIR with the same value twice. That doesn't seem right to me. By moving the code entirely to PPC we can avoid creating the FP_ROUND_INREG at all.

I replaced the grep in the existing test with full checks generated by hacking update_llc_test_check.py to support ppc32 just long enough to generate it.

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

llvm-svn: 328017

6 years ago[X86] Add phony registers for high halves of regs with low halves
Krzysztof Parzyszek [Tue, 20 Mar 2018 18:46:55 +0000 (18:46 +0000)]
[X86] Add phony registers for high halves of regs with low halves

Registers E[A-D]X, E[SD]I, E[BS]P, and EIP have 16-bit subregisters
that cover the low halves of these registers. This change adds artificial
subregisters for the high halves in order to differentiate (in terms of
register units) between the 32- and the low 16-bit registers.

This patch contains parts that aim to preserve the calculated register
pressure. This is in order to preserve the current codegen (minimize the
impact of this patch). The approach of having artificial subregisters
could be used to fix PR23423, but the pressure calculation would need
to be changed.

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

llvm-svn: 328016

6 years ago[MustExecute] Use the annotation style printer
Philip Reames [Tue, 20 Mar 2018 18:43:44 +0000 (18:43 +0000)]
[MustExecute] Use the annotation style printer

As suggested in the original review (https://reviews.llvm.org/D44524), use an annotation style printer instead.

Note: The switch from -analyze to -disable-output in tests was driven by the fact that seems to be the idiomatic style used in annoation passes.  I tried to keep both working, but the old style pass API for printers really doesn't make this easy.  It invokes (runOnFunction, print(Module)) repeatedly.  I decided the extra state wasn't worth it given the old pass manager is going away soonish anyway.
llvm-svn: 328015

6 years agoRevert "Resubmit "Support embedding natvis files in PDBs.""
Zachary Turner [Tue, 20 Mar 2018 18:37:03 +0000 (18:37 +0000)]
Revert "Resubmit "Support embedding natvis files in PDBs.""

This is still failing on a different bot this time due to some
issue related to hashing absolute paths.  Reverting until I can
figure it out.

llvm-svn: 328014

6 years ago[TestExpr] Fix a typo in a test, unbreaking the lldb Mac OS X bot.
Davide Italiano [Tue, 20 Mar 2018 18:32:47 +0000 (18:32 +0000)]
[TestExpr] Fix a typo in a test, unbreaking the lldb Mac OS X bot.

llvm-svn: 328013

6 years ago[llvm-objcopy] Implement support for section groups
Alexander Shaposhnikov [Tue, 20 Mar 2018 18:20:42 +0000 (18:20 +0000)]
[llvm-objcopy] Implement support for section groups

This diff adds support for SHT_GROUP sections to llvm-objcopy.
Some sections are interrelated and comprise a group.
For example, a definition of an inline function might require,
in addition to the section containing its instructions,
a read-only data section containing literals referenced inside the function.
A section of the type SHT_GROUP contains the indices of the group members,
therefore, it needs to be updated whenever the indices change.
Similarly, the fields sh_link, sh_info should be recalculated as well.

Test plan: make check-all

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

llvm-svn: 328012

6 years ago[llvm-mca] Move the logic that computes the scheduler's queue usage to the BackendSta...
Andrea Di Biagio [Tue, 20 Mar 2018 18:20:39 +0000 (18:20 +0000)]
[llvm-mca] Move the logic that computes the scheduler's queue usage to the BackendStatistics view.

This patch introduces two new callbacks in the event listener interface to
handle the "buffered resource reserved" event and the "buffered resource
released" event. Every time a buffered resource is used, an event is generated.

Before this patch, the Scheduler (with the help of the ResourceManager) was
responsible for tracking the scheduler's queue usage. However, that design
forced the Scheduler to 'publish' scheduler's queue pressure information through
the Backend interface.

The goal of this patch is to break the dependency between the BackendStatistics
view, and the Backend. Now the Scheduler knows how to notify "buffer
reserved/released" events.  The scheduler's queue usage analysis has been moved
to the BackendStatistics.

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

llvm-svn: 328011

6 years agoFix consitent -> consistent.
Eric Christopher [Tue, 20 Mar 2018 18:10:30 +0000 (18:10 +0000)]
Fix consitent -> consistent.

llvm-svn: 328010

6 years ago[ELF] Simplify compCtors and writeInt.
Fangrui Song [Tue, 20 Mar 2018 18:07:25 +0000 (18:07 +0000)]
[ELF] Simplify compCtors and writeInt.

Reviewers: ruiu

Subscribers: emaste, arichardson, llvm-commits

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

llvm-svn: 328009

6 years agoBasic: support PreserveMost and PreserveAll on Windows ARM
Saleem Abdulrasool [Tue, 20 Mar 2018 17:33:26 +0000 (17:33 +0000)]
Basic: support PreserveMost and PreserveAll on Windows ARM

Do not ignore these calling conventions on Windows ARM.  They are used
by the swift runtime for certain calls.

llvm-svn: 328007

6 years ago[NVPTX] Make tensor load/store intrinsics overloaded.
Artem Belevich [Tue, 20 Mar 2018 17:18:59 +0000 (17:18 +0000)]
[NVPTX] Make tensor load/store intrinsics overloaded.

This way we can support address-space specific variants without explicitly
encoding the space in the name of the intrinsic. Less intrinsics to deal with ->
less boilerplate.

Added a bit of tablegen magic to match/replace an intrinsics with a pointer
argument in particular address space with the space-specific instruction
variant.

Updated tests to use non-default address spaces.

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

llvm-svn: 328006

6 years agoAdjust to clang-format changes
Tobias Grosser [Tue, 20 Mar 2018 17:16:32 +0000 (17:16 +0000)]
Adjust to clang-format changes

llvm-svn: 328005

6 years agoAdd an analysis printer for must execute reasoning
Philip Reames [Tue, 20 Mar 2018 17:09:21 +0000 (17:09 +0000)]
Add an analysis printer for must execute reasoning

Many of our loop passes make use of so called "must execute" or "guaranteed to execute" facts to prove the legality of code motion. The basic notion is that we know (by assumption) an instruction didn't fault at it's original location, so if the location we move it to is strictly post dominated by the original, then we can't have introduced a new fault.

At the moment, the testing for this logic is somewhat adhoc and done mostly through LICM. Since I'm working on that code, I want to improve the testing. This patch is the first step in that direction. It doesn't actually test the variant used by the loop passes - I need to move that to the Analysis library first - but instead exercises an alternate implementation used by SCEV. (I plan on merging both implementations.)

Note: I'll be replacing the printing logic within this with an annotation based version in the near future.  Anna suggested this in review, and it seems like a strictly better format.

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

llvm-svn: 328004

6 years agoMC: fix layering violation introduced in r325139.
Rafael Espindola [Tue, 20 Mar 2018 17:07:25 +0000 (17:07 +0000)]
MC: fix layering violation introduced in r325139.

Move AsmToken from MC/MCParser/MCAsmLexer.h into MC/MCAsmMacro.h in
order to avoid MCAsmMacro definition depending on MCParser.

Patch by Roger Pau MonnĂ© <royger@freebsd.org>.

llvm-svn: 328003

6 years agoResubmit "Support embedding natvis files in PDBs."
Zachary Turner [Tue, 20 Mar 2018 17:06:39 +0000 (17:06 +0000)]
Resubmit "Support embedding natvis files in PDBs."

The issue causing this to fail in certain configurations
should be fixed.

It was due to the fact that DIA apparently expects there to be
a null string at ID 1 in the string table.  I'm not sure why this
is important but it seems to make a difference, so set it.

llvm-svn: 328002

6 years ago[LangRef] fix link formatting
Sanjay Patel [Tue, 20 Mar 2018 17:05:19 +0000 (17:05 +0000)]
[LangRef] fix link formatting

llvm-svn: 328001

6 years ago[Hexagon] Correct the computation of TopReadyCycle and BotReadyCycle of SU
Krzysztof Parzyszek [Tue, 20 Mar 2018 17:03:27 +0000 (17:03 +0000)]
[Hexagon] Correct the computation of TopReadyCycle and BotReadyCycle of SU

TopReadyCycle and BotReadyCycle were off by one cycle when an SU is either
the first instruction or the last instruction in a packet.

Patch by Ikhlas Ajbar.

llvm-svn: 328000

6 years ago[XRay] Lazily compute MachineLoopInfo instead of requiring it.
Michael Zolotukhin [Tue, 20 Mar 2018 17:02:29 +0000 (17:02 +0000)]
[XRay] Lazily compute MachineLoopInfo instead of requiring it.

Summary:
Currently X-Ray Instrumentation pass has a dependency on MachineLoopInfo
(and thus on MachineDominatorTree as well) and we have to compute them
even if X-Ray is not used. This patch changes it to a lazy computation
to save compile time by avoiding these redundant computations.

Reviewers: dberris, kubamracek

Subscribers: llvm-commits, hiraditya

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

llvm-svn: 327999

6 years ago[LangRef] describe the default FP environment
Sanjay Patel [Tue, 20 Mar 2018 16:38:22 +0000 (16:38 +0000)]
[LangRef] describe the default FP environment

Follow-up for D44216: add a section and examples to describe the FP env.
Also, add pointers from the FP instructions to this new section to reduce
bloat.

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

llvm-svn: 327998

6 years ago[Hexagon] Check weak dependences when only 1 instruction is available
Krzysztof Parzyszek [Tue, 20 Mar 2018 16:22:06 +0000 (16:22 +0000)]
[Hexagon] Check weak dependences when only 1 instruction is available

Patch by Brendon Cahoon.

llvm-svn: 327997

6 years agoMove StringExtractorGDBRemote.h to the include folder
Pavel Labath [Tue, 20 Mar 2018 16:14:00 +0000 (16:14 +0000)]
Move StringExtractorGDBRemote.h to the include folder

While trying to use this header I noticed that it is not in the include
folder. Move it to there and update all #includes to reference that file
correctly.

llvm-svn: 327996

6 years ago[AArch64] add fabs tests for PR36600; NFC
Sanjay Patel [Tue, 20 Mar 2018 16:08:47 +0000 (16:08 +0000)]
[AArch64] add fabs tests for PR36600; NFC

llvm-svn: 327995

6 years ago[DEBUGINFO] Add flag -no-dwarf-pub-sections to disable pub sections.
Alexey Bataev [Tue, 20 Mar 2018 16:04:40 +0000 (16:04 +0000)]
[DEBUGINFO] Add flag -no-dwarf-pub-sections to disable pub sections.

Summary:
Added a flag -no-dwarf-pub-sections, which allows to disable
emission of DWARF public sections.

Reviewers: probinson, echristo

Subscribers: aprantl, JDevlieghere, llvm-commits

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

llvm-svn: 327994

6 years agoSet dso_local for CFConstantStringClassReference.
Rafael Espindola [Tue, 20 Mar 2018 15:48:00 +0000 (15:48 +0000)]
Set dso_local for CFConstantStringClassReference.

This one cannot use setGVProperties since it has special logic for
when it is dllimport or not.

llvm-svn: 327993