platform/upstream/llvm.git
8 years ago[AArch64][GlobalISel] Add a test case for the IRTranslator.
Quentin Colombet [Tue, 8 Mar 2016 01:48:08 +0000 (01:48 +0000)]
[AArch64][GlobalISel] Add a test case for the IRTranslator.

llvm-svn: 262898

8 years ago[AArch64] Initialize GlobalISel as part of the target initialization.
Quentin Colombet [Tue, 8 Mar 2016 01:45:36 +0000 (01:45 +0000)]
[AArch64] Initialize GlobalISel as part of the target initialization.

llvm-svn: 262897

8 years ago[GlobalISel] Introduce initializer method to support start/stop-after features.
Quentin Colombet [Tue, 8 Mar 2016 01:38:55 +0000 (01:38 +0000)]
[GlobalISel] Introduce initializer method to support start/stop-after features.

llvm-svn: 262896

8 years agoAdd doxygen comments to bmiintrin.h's intrinsics.
Ekaterina Romanova [Tue, 8 Mar 2016 01:36:59 +0000 (01:36 +0000)]
Add doxygen comments to bmiintrin.h's intrinsics.
The doxygen comments are automatically generated based on Sony's intrinsics document.

I got an OK from Eric Christopher to commit doxygen comments without prior code review upstream.

llvm-svn: 262895

8 years ago[analyzer] Fix missed leak from MSVC specific allocation functions
Anna Zaks [Tue, 8 Mar 2016 01:21:51 +0000 (01:21 +0000)]
[analyzer] Fix missed leak from MSVC specific allocation functions

Add the wide character strdup variants (wcsdup, _wcsdup) and the MSVC
version of alloca (_alloca) and other differently named function used
by the Malloc checker.

A patch by Alexander Riccio!

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

llvm-svn: 262894

8 years ago[MIR] Teach the parser/printer that generic virtual registers do not need a register...
Quentin Colombet [Tue, 8 Mar 2016 01:17:03 +0000 (01:17 +0000)]
[MIR] Teach the parser/printer that generic virtual registers do not need a register class.

llvm-svn: 262893

8 years agoRevert "SelectionDAG: Store SDNode operands in an ArrayRecycler"
Justin Bogner [Tue, 8 Mar 2016 01:07:03 +0000 (01:07 +0000)]
Revert "SelectionDAG: Store SDNode operands in an ArrayRecycler"

Looks like the largest SDNode is different between 32 and 64 bit now,
so this is breaking 32 bit bots. Reverting while I figure out a fix.

This reverts r262886.

llvm-svn: 262892

8 years agoA couple more UB fixes for C++14 sized deallocation.
Richard Smith [Tue, 8 Mar 2016 00:59:44 +0000 (00:59 +0000)]
A couple more UB fixes for C++14 sized deallocation.

llvm-svn: 262891

8 years ago[MIR] Teach the parser how to parse complex types of generic machine instructions.
Quentin Colombet [Tue, 8 Mar 2016 00:57:31 +0000 (00:57 +0000)]
[MIR] Teach the parser how to parse complex types of generic machine instructions.
By complex types, I mean aggregate or vector types.

llvm-svn: 262890

8 years agoUse class="svn" for features with SVN status.
Richard Smith [Tue, 8 Mar 2016 00:45:37 +0000 (00:45 +0000)]
Use class="svn" for features with SVN status.

llvm-svn: 262889

8 years agoMove [[nodiscard]] tests into test/CXX tree.
Richard Smith [Tue, 8 Mar 2016 00:44:49 +0000 (00:44 +0000)]
Move [[nodiscard]] tests into test/CXX tree.

llvm-svn: 262888

8 years agoDefine __has_cpp_attribute(fallthrough) to a more reasonable value. (What year is...
Richard Smith [Tue, 8 Mar 2016 00:40:32 +0000 (00:40 +0000)]
Define __has_cpp_attribute(fallthrough) to a more reasonable value. (What year is it?!)

llvm-svn: 262887

8 years agoSelectionDAG: Store SDNode operands in an ArrayRecycler
Justin Bogner [Tue, 8 Mar 2016 00:39:51 +0000 (00:39 +0000)]
SelectionDAG: Store SDNode operands in an ArrayRecycler

Currently some SDNode operands are malloc'd, some are stored inline in
subclasses of SDNode, and some are thrown into a BumpPtrAllocator.
This scheme is complex, inconsistent, and makes refactoring SDNodes
fairly difficult.

Instead, we can allocate all of the operands using an ArrayRecycler
that wraps a BumpPtrAllocator. This keeps the cache locality when
iterating operands, improves locality when iterating SDNodes without
looking at operands, and vastly simplifies the ownership semantics.

It also means we stop overallocating SDNodes by 2-3x and will make it
simpler to fix the rampant undefined behaviour we have in how we
mutate SDNodes from one kind to another (See llvm.org/pr26808).

This is NFC other than the changes in memory behaviour, and I ran some
LNT tests to make sure this didn't hurt compile time. Not many tests
changed: there were a couple of 1-2% regressions reported, but there
were more improvements (of up to 4%) than regressions.

llvm-svn: 262886

8 years ago[MIR] Teach the printer how to print complex types for generic machine instructions.
Quentin Colombet [Tue, 8 Mar 2016 00:38:01 +0000 (00:38 +0000)]
[MIR] Teach the printer how to print complex types for generic machine instructions.

Before this change, we would get the type definition in the middle
of the instruction.
E.g., %0(48) = G_ADD %struct_alias = type { i32, i16 } %edi, %edi

Now, we have just the expected type name:
%0(48) = G_ADD %struct_alias %edi, %edi

llvm-svn: 262885

8 years ago[AsmParser] Expose an API to parse a string starting with a type.
Quentin Colombet [Tue, 8 Mar 2016 00:37:07 +0000 (00:37 +0000)]
[AsmParser] Expose an API to parse a string starting with a type.

Without actually parsing a type it is difficult to perdict where
the type definition ends. In other words, instead of expecting
the user of the parser API to hand over only the relevant bits
of the string being parsed, take the whole string, parse the type,
and get back the number of characters that have been read.

This will be used by the MIR testing infrastructure.

llvm-svn: 262884

8 years agoRevert revisions 262636, 262643, 262679, and 262682.
Easwaran Raman [Tue, 8 Mar 2016 00:36:35 +0000 (00:36 +0000)]
Revert revisions 262636, 262643, 262679, and 262682.

llvm-svn: 262883

8 years agoAdd accidentally forgotten testcase from r262881.
Richard Smith [Tue, 8 Mar 2016 00:34:49 +0000 (00:34 +0000)]
Add accidentally forgotten testcase from r262881.

llvm-svn: 262882

8 years agoP0188R1: add support for standard [[fallthrough]] attribute. This is almost
Richard Smith [Tue, 8 Mar 2016 00:32:55 +0000 (00:32 +0000)]
P0188R1: add support for standard [[fallthrough]] attribute. This is almost
exactly the same as clang's existing [[clang::fallthrough]] attribute, which
has been updated to have the same semantics. The one significant difference
is that [[fallthrough]] is ill-formed if it's not used immediately before a
switch label (even when -Wimplicit-fallthrough is disabled). To support that,
we now build a CFG of any function that uses a '[[fallthrough]];' statement
to check.

In passing, fix some bugs with our support for statement attributes -- in
particular, diagnose their use on declarations, rather than asserting.

llvm-svn: 262881

8 years ago[MIR] Print the type of generic machine instructions.
Quentin Colombet [Tue, 8 Mar 2016 00:29:15 +0000 (00:29 +0000)]
[MIR] Print the type of generic machine instructions.

llvm-svn: 262880

8 years ago[MIR] Teach the mir parser about types on generic machine instructions.
Quentin Colombet [Tue, 8 Mar 2016 00:20:48 +0000 (00:20 +0000)]
[MIR] Teach the mir parser about types on generic machine instructions.

llvm-svn: 262879

8 years ago[lit] Teach lit about global-isel requirement.
Quentin Colombet [Tue, 8 Mar 2016 00:03:40 +0000 (00:03 +0000)]
[lit] Teach lit about global-isel requirement.

llvm-svn: 262878

8 years ago[llvm-config] Teach llvm-config about global-isel.
Quentin Colombet [Tue, 8 Mar 2016 00:02:50 +0000 (00:02 +0000)]
[llvm-config] Teach llvm-config about global-isel.

llvm-config can know tell whether or not a build has been configured to support
global-isel.
Use '--has-global-isel' for that.

llvm-svn: 262877

8 years ago[tsan] Add support for pointer typed atomic stores, loads, and cmpxchg
Anna Zaks [Mon, 7 Mar 2016 23:16:23 +0000 (23:16 +0000)]
[tsan] Add support for pointer typed atomic stores, loads, and cmpxchg

TSan instrumentation functions for atomic stores, loads, and cmpxchg work on
integer value types. This patch adds casts before calling TSan instrumentation
functions in cases where the value is a pointer.

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

llvm-svn: 262876

8 years ago[x86] add test to show missing optimization
Sanjay Patel [Mon, 7 Mar 2016 23:13:06 +0000 (23:13 +0000)]
[x86] add test to show missing optimization

This should make it clearer how this proposed patch:
http://reviews.llvm.org/D11393
...will change codegen.

llvm-svn: 262875

8 years ago[x86] simplify test and tighten checks
Sanjay Patel [Mon, 7 Mar 2016 22:53:23 +0000 (22:53 +0000)]
[x86] simplify test and tighten checks

I noticed this test as part of:
http://reviews.llvm.org/D11393
...which is confusing enough as-is.
Let's show the exact codegen, so the changes will be more obvious.

llvm-svn: 262874

8 years ago[MachineInstr] Get rid of some GlobalISel ifdefs.
Quentin Colombet [Mon, 7 Mar 2016 22:47:23 +0000 (22:47 +0000)]
[MachineInstr] Get rid of some GlobalISel ifdefs.

Now the type API is always available, but when global-isel is not
built the implementation does nothing.

Note: The implementation free of ifdefs is WIP and tracked here in PR26576.
llvm-svn: 262873

8 years agoImplement support for [[nodiscard]] in C++1z that is based off existing support for...
Aaron Ballman [Mon, 7 Mar 2016 22:44:55 +0000 (22:44 +0000)]
Implement support for [[nodiscard]] in C++1z that is based off existing support for warn_unused_result, and treat it as an extension pre-C++1z. This also means extending the existing warn_unused_result attribute so that it can be placed on an enum as well as a class.

llvm-svn: 262872

8 years agoImplement P0025R0: 'An algorithm to clamp a value between a pair of boundary values...
Marshall Clow [Mon, 7 Mar 2016 22:43:49 +0000 (22:43 +0000)]
Implement P0025R0: 'An algorithm to clamp a value between a pair of boundary values' for C++17

llvm-svn: 262871

8 years agoRemove unused import in Orc C API
Amaury Sechet [Mon, 7 Mar 2016 22:40:07 +0000 (22:40 +0000)]
Remove unused import in Orc C API

Summary: It is not used.

Reviewers: lhames

Subscribers: llvm-commits

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

llvm-svn: 262870

8 years ago[IR] Provide an API to skip the details of a structured type when printed.
Quentin Colombet [Mon, 7 Mar 2016 22:32:42 +0000 (22:32 +0000)]
[IR] Provide an API to skip the details of a structured type when printed.

The mir infrastructure will need this for generic instructions and currently
this feature was only available through the anonymous TypePrinter class.

llvm-svn: 262869

8 years ago[AsmParser] Add a function to parse a standalone type.
Quentin Colombet [Mon, 7 Mar 2016 22:09:05 +0000 (22:09 +0000)]
[AsmParser] Add a function to parse a standalone type.

This is useful for MIR serialization. Indeed generic machine instructions
must have a type and we don't want to duplicate the logic in the MIParser.

llvm-svn: 262868

8 years ago[MIR] Teach the MIPrinter about size for generic virtual registers.
Quentin Colombet [Mon, 7 Mar 2016 21:57:52 +0000 (21:57 +0000)]
[MIR] Teach the MIPrinter about size for generic virtual registers.

llvm-svn: 262867

8 years agonon-member swap for array was mistakenly taking const ref params. Fixed and added...
Marshall Clow [Mon, 7 Mar 2016 21:57:10 +0000 (21:57 +0000)]
non-member swap for array was mistakenly taking const ref params. Fixed and added test. Thanks to Ben Craig for the catch

llvm-svn: 262866

8 years agoFix broken example for bitreverse documentation
Matt Arsenault [Mon, 7 Mar 2016 21:54:52 +0000 (21:54 +0000)]
Fix broken example for bitreverse documentation

llvm-svn: 262865

8 years agoAMDGPU: Match more med3 integer patterns
Matt Arsenault [Mon, 7 Mar 2016 21:54:48 +0000 (21:54 +0000)]
AMDGPU: Match more med3 integer patterns

llvm-svn: 262864

8 years agoChange over the broadcaster/listener process to hold shared or weak pointers
Jim Ingham [Mon, 7 Mar 2016 21:50:25 +0000 (21:50 +0000)]
Change over the broadcaster/listener process to hold shared or weak pointers
to each other.  This should remove some infrequent teardown crashes when the
listener is not the debugger's listener.

Processes now need to take a ListenerSP, not a Listener&.

This required changing over the Process plugin class constructors to take a ListenerSP, instead
of a Listener&.   Other than that there should be no functional change.

<rdar://problem/24580184> CrashTracer: [USER] Xcode at â€¦ework: lldb_private::Listener::BroadcasterWillDestruct + 39

llvm-svn: 262863

8 years ago[MIR] Teach the parser how to handle the size of generic virtual registers.
Quentin Colombet [Mon, 7 Mar 2016 21:48:43 +0000 (21:48 +0000)]
[MIR] Teach the parser how to handle the size of generic virtual registers.

llvm-svn: 262862

8 years ago[MachineRegisterInfo] Add a method to set the size of a virtual register a posteriori.
Quentin Colombet [Mon, 7 Mar 2016 21:41:39 +0000 (21:41 +0000)]
[MachineRegisterInfo] Add a method to set the size of a virtual register a posteriori.
This is required for mir testing.

llvm-svn: 262861

8 years agoSmall formating change in Core.cpp . NFC
Amaury Sechet [Mon, 7 Mar 2016 21:39:20 +0000 (21:39 +0000)]
Small formating change in Core.cpp . NFC

llvm-svn: 262860

8 years agodoxygen: Also show private members
Tobias Grosser [Mon, 7 Mar 2016 21:38:19 +0000 (21:38 +0000)]
doxygen: Also show private members

llvm-svn: 262859

8 years agodoxygen: Fix region marker
Tobias Grosser [Mon, 7 Mar 2016 21:35:01 +0000 (21:35 +0000)]
doxygen: Fix region marker

llvm-svn: 262858

8 years agoDrop comment separators
Tobias Grosser [Mon, 7 Mar 2016 21:26:41 +0000 (21:26 +0000)]
Drop comment separators

The cause trouble in the doxygen output.

llvm-svn: 262857

8 years ago[MachineRegisterInfo] Get rid of the global-isel ifdefs.
Quentin Colombet [Mon, 7 Mar 2016 21:22:09 +0000 (21:22 +0000)]
[MachineRegisterInfo] Get rid of the global-isel ifdefs.
One additional pointer is not a big deal size-wise and it makes
the code much nicer!

llvm-svn: 262856

8 years agodocs: Add doxygen mainpage
Tobias Grosser [Mon, 7 Mar 2016 21:17:48 +0000 (21:17 +0000)]
docs: Add doxygen mainpage

(and test if doxygen is updated on-commit)

llvm-svn: 262855

8 years agoAMDGPU: Remove a fixme for ptrrtoint handling
Matt Arsenault [Mon, 7 Mar 2016 21:12:46 +0000 (21:12 +0000)]
AMDGPU: Remove a fixme for ptrrtoint handling

llvm-svn: 262854

8 years agoAMDGPU: Move function only used by R600
Matt Arsenault [Mon, 7 Mar 2016 21:10:13 +0000 (21:10 +0000)]
AMDGPU: Move function only used by R600

llvm-svn: 262853

8 years agoDAGCombiner: Check legality before creating extract_vector_elt
Matt Arsenault [Mon, 7 Mar 2016 21:10:09 +0000 (21:10 +0000)]
DAGCombiner: Check legality before creating extract_vector_elt

Problem not hit by any in tree target.

llvm-svn: 262852

8 years agoModule Debugging: Fix a crash when emitting debug info for nested tag types
Adrian Prantl [Mon, 7 Mar 2016 20:58:52 +0000 (20:58 +0000)]
Module Debugging: Fix a crash when emitting debug info for nested tag types
whose DeclContext is not yet complete by deferring their emission.

rdar://problem/24918680

llvm-svn: 262851

8 years agoTest documentation rebuild
Tobias Grosser [Mon, 7 Mar 2016 20:44:20 +0000 (20:44 +0000)]
Test documentation rebuild

llvm-svn: 262850

8 years agoSelectionDAG: Remove some unused AtomicSDNode constructors. NFC
Justin Bogner [Mon, 7 Mar 2016 20:15:12 +0000 (20:15 +0000)]
SelectionDAG: Remove some unused AtomicSDNode constructors. NFC

llvm-svn: 262849

8 years agoAdd support for common symbols.
Rafael Espindola [Mon, 7 Mar 2016 19:15:57 +0000 (19:15 +0000)]
Add support for common symbols.

llvm-svn: 262848

8 years ago[CLANG][AVX512][BUILTIN] Add builtin vcomi{ss|sd}
Michael Zuckerman [Mon, 7 Mar 2016 19:15:00 +0000 (19:15 +0000)]
[CLANG][AVX512][BUILTIN] Add builtin vcomi{ss|sd}

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

llvm-svn: 262847

8 years agoDo not use "default" for a fully-covered switch.
Rui Ueyama [Mon, 7 Mar 2016 19:06:14 +0000 (19:06 +0000)]
Do not use "default" for a fully-covered switch.

llvm-svn: 262846

8 years agopython binding: expose compile command filename
Guillaume Papin [Mon, 7 Mar 2016 18:44:42 +0000 (18:44 +0000)]
python binding: expose compile command filename

Reviewers: compnerd, skalinichev

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

llvm-svn: 262845

8 years ago[LoopDataPrefetch] If prefetch distance is not set, skip pass
Adam Nemet [Mon, 7 Mar 2016 18:35:42 +0000 (18:35 +0000)]
[LoopDataPrefetch] If prefetch distance is not set, skip pass

This lets select sub-targets enable this pass.  The patch implements the
idea from the recent llvm-dev thread:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/94925

The goal is to enable the LoopDataPrefetch pass for the Cyclone
sub-target only within Aarch64.

Positive and negative tests will be included in an upcoming patch that
enables selective prefetching of large-strided accesses on Cyclone.

llvm-svn: 262844

8 years ago[ms-inline-asm][AVX512] Add ability to use k registers in MS inline asm + fix bag...
Marina Yatsina [Mon, 7 Mar 2016 18:11:16 +0000 (18:11 +0000)]
[ms-inline-asm][AVX512] Add ability to use k registers in MS inline asm + fix bag with curly braces

Until now curly braces could only be used in MS inline assembly to mark block start/end.
All curly braces were removed completely at a very early stage.
This approach caused bugs like:
"m{o}v eax, ebx" turned into "mov eax, ebx" without any error.

In addition, AVX-512 added special operands (e.g., k registers), which are also surrounded by curly braces that mark them as such.
Now, we need to keep the curly braces and identify at a later stage if they are marking block start/end (if so, ignore them), or surrounding special AVX-512 operands (if so, parse them as such).

This patch fixes the bug described above and enables the use of AVX-512 special operands.

This commit is the the llvm part of the patch.
The clang part of the review is: http://reviews.llvm.org/D17766
The llvm part of the review is: http://reviews.llvm.org/D17767

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

llvm-svn: 262843

8 years ago[ms-inline-asm][AVX512] Add ability to use k registers in MS inline asm + fix bag...
Marina Yatsina [Mon, 7 Mar 2016 18:10:25 +0000 (18:10 +0000)]
[ms-inline-asm][AVX512] Add ability to use k registers in MS inline asm + fix bag with curly braces

Until now curly braces could only be used in MS inline assembly to mark block start/end.
All curly braces were removed completely at a very early stage.
This approach caused bugs like:
"m{o}v eax, ebx" turned into "mov eax, ebx" without any error.

In addition, AVX-512 added special operands (e.g., k registers), which are also surrounded by curly braces that mark them as such.
Now, we need to keep the curly braces and identify at a later stage if they are marking block start/end (if so, ignore them), or surrounding special AVX-512 operands (if so, parse them as such).

This patch fixes the bug described above and enables the use of AVX-512 special operands.

This commit is the the clang part of the patch.
The clang part of the review is: http://reviews.llvm.org/D17766
The llvm part of the review is: http://reviews.llvm.org/D17767

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

llvm-svn: 262842

8 years ago[ScopedNoAliasAA] Make test basic.ll less confusing
Adam Nemet [Mon, 7 Mar 2016 17:49:10 +0000 (17:49 +0000)]
[ScopedNoAliasAA] Make test basic.ll less confusing

Summary:
This testcase had me confused.  It made me believe that you can use
alias scopes and alias scopes list interchangeably with alias.scope and
noalias.  Both langref and the other testcase use scope lists so I went
looking.

Turns out using scope directly only happens to work by chance.  When
ScopedNoAliasAAResult::mayAliasInScopes traverses this as a scope list:

!1 = !{!1, !0, !"some scope"}

, the first entry is in fact a scope but only because the scope is
happened to be defined self-referentially to make it unique globally.

The remaining elements in the tuple (!0, !"some scope") are considered
as scopes but AliasScopeNode::getDomain will just bail on those without
any error.

This change avoids this ambiguity in the test but I've also been
wondering if we should issue some sort of a diagnostics.

Reviewers: dexonsmith, hfinkel

Subscribers: mssimpso, llvm-commits

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

llvm-svn: 262841

8 years agoAdjust the .bss alignment to include common symbols.
Rafael Espindola [Mon, 7 Mar 2016 17:43:39 +0000 (17:43 +0000)]
Adjust the .bss alignment to include common symbols.

llvm-svn: 262840

8 years agoRevert "Enable LoopLoadElimination by default"
Adam Nemet [Mon, 7 Mar 2016 17:38:02 +0000 (17:38 +0000)]
Revert "Enable LoopLoadElimination by default"

This reverts commit r262250.

It causes SPEC2006/gcc to generate wrong result (166.s) in AArch64 when
running with *ref* data set.  The error happens with
"-Ofast -flto -fuse-ld=gold" or "-O3 -fno-strict-aliasing".

llvm-svn: 262839

8 years agoImplement __builtin_eh_return_data_regno for SPARC and SPARC64.
Joerg Sonnenberger [Mon, 7 Mar 2016 17:19:15 +0000 (17:19 +0000)]
Implement __builtin_eh_return_data_regno for SPARC and SPARC64.

llvm-svn: 262838

8 years agoDescribe the magic numbers returned by getEHDataRegisterNumber.
Joerg Sonnenberger [Mon, 7 Mar 2016 17:18:41 +0000 (17:18 +0000)]
Describe the magic numbers returned by getEHDataRegisterNumber.

llvm-svn: 262837

8 years agolto: Record visibility in defined symbols.
Rafael Espindola [Mon, 7 Mar 2016 17:14:36 +0000 (17:14 +0000)]
lto: Record visibility in defined symbols.

llvm-svn: 262835

8 years ago[CLANG][AVX512][BUILTIN] Adding new feature flag headed files and new BUILTIN vpermi2...
Michael Zuckerman [Mon, 7 Mar 2016 17:04:11 +0000 (17:04 +0000)]
[CLANG][AVX512][BUILTIN] Adding new feature flag headed files and new BUILTIN vpermi2varq{i|t}{128|256|512}{mask|maskz}

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

llvm-svn: 262834

8 years ago[OPENMP] Codegen for distribute directive: fix bug in ordering of parameters.
Carlo Bertolli [Mon, 7 Mar 2016 16:19:13 +0000 (16:19 +0000)]
[OPENMP] Codegen for distribute directive: fix bug in ordering of parameters.

llvm-svn: 262833

8 years agoReapply r262741 [OPENMP] Codegen for distribute directive
Carlo Bertolli [Mon, 7 Mar 2016 16:04:49 +0000 (16:04 +0000)]
Reapply r262741 [OPENMP] Codegen for distribute directive

This patch provide basic implementation of codegen for teams directive, excluding all clauses except dist_schedule. It also fixes parts of AST reader/writer to enable correct pre-compiled header handling.

http://reviews.llvm.org/D17170

llvm-svn: 262832

8 years ago[memdep] Switch to range based for loops.
Chandler Carruth [Mon, 7 Mar 2016 15:12:57 +0000 (15:12 +0000)]
[memdep] Switch to range based for loops.

llvm-svn: 262831

8 years agoResolved Bug 26414.
Amjad Aboud [Mon, 7 Mar 2016 14:22:46 +0000 (14:22 +0000)]
Resolved Bug 26414.
https://llvm.org/bugs/show_bug.cgi?id=26414
Since interrupt handler must be returned with iret, tail call can't be used.

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

llvm-svn: 262830

8 years ago[DFSan] Remove an overly aggressive assert reported in PR26068.
Chandler Carruth [Mon, 7 Mar 2016 14:05:09 +0000 (14:05 +0000)]
[DFSan] Remove an overly aggressive assert reported in PR26068.

This code has been successfully used to bootstrap libc++ in a no-asserts
mode for a very long time, so the code that follows cannot be completely
incorrect. I've added a test that shows the current behavior for this
kind of code with DFSan. If it is desirable for DFSan to do something
special when processing an invoke of a variadic function, it can be
added, but we shouldn't keep an assert that we've been ignoring due to
release builds anyways.

llvm-svn: 262829

8 years ago[sanitizer-common] Use @LINE in test.
Filipe Cabecinhas [Mon, 7 Mar 2016 13:44:20 +0000 (13:44 +0000)]
[sanitizer-common] Use @LINE in test.

llvm-svn: 262828

8 years ago[Fix r262785] Fix missing declaration when COMPILER_RT_BOOL_CMPXCHG was used but...
Filipe Cabecinhas [Mon, 7 Mar 2016 13:42:17 +0000 (13:42 +0000)]
[Fix r262785] Fix missing declaration when COMPILER_RT_BOOL_CMPXCHG was used but InstrProfilingUtil.h wasn't included.

Also fixed declaration which still had the pre-r262788 name.

llvm-svn: 262827

8 years ago[memdep] Switch a function to return true on success instead of false.
Chandler Carruth [Mon, 7 Mar 2016 12:45:07 +0000 (12:45 +0000)]
[memdep] Switch a function to return true on success instead of false.

This is much more clear and less surprising IMO. It also makes things
more consistent with the increasingly large chunk of LLVM code that
assumes true-on-success.

llvm-svn: 262826

8 years ago[memdep] Cleanup the implementation doxygen comments and remove
Chandler Carruth [Mon, 7 Mar 2016 12:30:06 +0000 (12:30 +0000)]
[memdep] Cleanup the implementation doxygen comments and remove
duplicated comments.

In several cases these had diverged making them especially nice to
canonicalize. I checked to make sure we weren't losing important
information of course.

llvm-svn: 262825

8 years ago[memdep] Finish cleaning up all of the comments' doxygen.
Chandler Carruth [Mon, 7 Mar 2016 11:27:56 +0000 (11:27 +0000)]
[memdep] Finish cleaning up all of the comments' doxygen.

llvm-svn: 262824

8 years ago[memdep] Switch from a hacky use of PointerIntPair and poorly chosen
Chandler Carruth [Mon, 7 Mar 2016 11:04:46 +0000 (11:04 +0000)]
[memdep] Switch from a hacky use of PointerIntPair and poorly chosen
arbitrary integers cast to Instruction pointers to a sum type over
Instruction * and a PointerEmbeddedInt.

No functionality changed.

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

llvm-svn: 262823

8 years ago[memdep] Update the comments' doxygen style and place them more clearly.
Chandler Carruth [Mon, 7 Mar 2016 10:35:02 +0000 (10:35 +0000)]
[memdep] Update the comments' doxygen style and place them more clearly.

Just cleaning this up, no functionality changed. Next up will be moving
it to use the sum type instead of arbitrary "pointer"-like enums.

llvm-svn: 262822

8 years ago[memdep] Run clang-format over the header before porting it to
Chandler Carruth [Mon, 7 Mar 2016 10:19:30 +0000 (10:19 +0000)]
[memdep] Run clang-format over the header before porting it to
the new pass manager.

The port will involve substantial edits here, and would likely introduce
bad formatting if formatted in isolation, so just get all the formatting
up to snuff. I'll also go through and try to freshen the doxygen here as
well as modernizing some of the code.

llvm-svn: 262821

8 years ago[CLANG][AVX512][BUILTIN] Adding new feature flag header file and new builtin vpmadd52...
Michael Zuckerman [Mon, 7 Mar 2016 09:55:55 +0000 (09:55 +0000)]
[CLANG][AVX512][BUILTIN] Adding new feature flag header file and new builtin vpmadd52{h|l}uq{128|256|512}{mask|maskz}

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

llvm-svn: 262820

8 years ago[LLDB][MIPS] Fix TestDisassembleBreakpoint
Mohit K. Bhakkad [Mon, 7 Mar 2016 09:12:49 +0000 (09:12 +0000)]
[LLDB][MIPS] Fix TestDisassembleBreakpoint

Patch by Nitesh Jain

Reviewers: clayborg, jaydeep.
Subscribers: bhushan, mohit.bhakkad, sagar, lldb-commits.
Differential Revision: http://reviews.llvm.org/D17597

llvm-svn: 262819

8 years ago[MS ABI] Mangle symbols names longer than 4096 characters correctly
David Majnemer [Mon, 7 Mar 2016 08:51:17 +0000 (08:51 +0000)]
[MS ABI] Mangle symbols names longer than 4096 characters correctly

Really long symbols are hashed using MD5 and prefixed/suffixed with the
usual sigils.  There is an additional reason beyond the usual
compatibility with MSVC, it is important to keep COFF symbols shorter
than 0xFFFF because the CodeView debugging format has a maximum
symbol/record size of 0xFFFF.

There are some quirks worth noting:
- Some mangled names reference other entities which are mangled
separately.  A quick example:

int I;
template <int *> struct S {};
S<I> s;

In this case, the mangling for 's' doesn't depend directly on the
mangling for 'I'.  While 's' would need an MD5 hash if 'I' also needed
one, the hash for 's' applied to the fully realized mangled name.  In
other words, the mangled name for 's' will not depend on the MD5 of the
mangled name for 'I'.

- Some mangled names, like the venerable CatchableType, embed the MD5
verbatim.

- Finally, the complete object locator is handled as a special case.
A complete object locators are mangled exactly like a VFTable except for
a small deviation in the prefix sigils.  However, complete object
locators for hashed vftables result in a complete object locator whose
name is identical to the vftable except for an additional suffix.

llvm-svn: 262818

8 years ago[CLANG][AVX512][BUILTIN] Adding vpmultishiftqb{128|256|512}
Michael Zuckerman [Mon, 7 Mar 2016 08:29:10 +0000 (08:29 +0000)]
[CLANG][AVX512][BUILTIN] Adding vpmultishiftqb{128|256|512}

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

llvm-svn: 262817

8 years agoMove SBLanguageRuntime.cpp from the lldb-core group to the LLDB
Jason Molenda [Mon, 7 Mar 2016 08:04:49 +0000 (08:04 +0000)]
Move SBLanguageRuntime.cpp from the lldb-core group to the LLDB
group to fix a build time issue.
<rdar://problem/24287153>

llvm-svn: 262816

8 years ago[CodeGen] Add space-optimized EmitMergeInputChains1_2 to the DAG isel matching tables...
Craig Topper [Mon, 7 Mar 2016 07:29:12 +0000 (07:29 +0000)]
[CodeGen] Add space-optimized EmitMergeInputChains1_2 to the DAG isel matching tables. Shaves about 5100 bytes from the X86 matcher table. NFC

llvm-svn: 262815

8 years ago[powerpc] mark setuid.c and setuid2.c as unsupported
Bill Seurer [Mon, 7 Mar 2016 01:30:02 +0000 (01:30 +0000)]
[powerpc] mark setuid.c and setuid2.c as unsupported

setuid(0) hangs on powerpc64 big endian.  When this is fixed remove
the unsupported flag.

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

llvm-svn: 262814

8 years agoSplit BitcodeFile::parse. NFC.
Rui Ueyama [Mon, 7 Mar 2016 00:54:17 +0000 (00:54 +0000)]
Split BitcodeFile::parse. NFC.

llvm-svn: 262813

8 years agoAdd a new insert_as() method to DenseMap and use it for ConstantUniqueMap
Mehdi Amini [Mon, 7 Mar 2016 00:51:00 +0000 (00:51 +0000)]
Add a new insert_as() method to DenseMap and use it for ConstantUniqueMap

Just like the existing find_as() method, the new insert_as() accepts
an extra parameter which is used as a key to find the bucket in the
map.
When creating a Constant, we want to check the map before actually
creating the object. In this case we have to perform two queries to
the map, and this extra parameter can save recomputing the hash value
for the second query.

This is a reapply of r260458, that was reverted because it was
suspected to be the cause of instability of an internal bot, but
wasn't confirmed.

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

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 262812

8 years agoBitcode reader: Inline readAbbreviatedField in readRecord and move the enclosing...
Mehdi Amini [Mon, 7 Mar 2016 00:38:09 +0000 (00:38 +0000)]
Bitcode reader: Inline readAbbreviatedField in readRecord and move the enclosing loop in each case (NFC)

Summary: This make readRecord 20% faster, measured on an LTO build

Reviewers: rafael

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 262811

8 years agoRevert r130657, "Windows/DynamicLibrary.inc: Clean up ELM_Callback. We may check...
NAKAMURA Takumi [Mon, 7 Mar 2016 00:13:09 +0000 (00:13 +0000)]
Revert r130657, "Windows/DynamicLibrary.inc: Clean up ELM_Callback. We may check the decl instead of the versions of individual libraries."

We may assume the type of 1st argument as PCSTR in PENUMLOADED_MODULES_CALLBACK. PSTR was in the ancient mingw32.

llvm-svn: 262810

8 years ago[X86][AVX512] Fixed VPERMT2* shuffle mask decoding and enabled target shuffle combining.
Simon Pilgrim [Sun, 6 Mar 2016 21:54:52 +0000 (21:54 +0000)]
[X86][AVX512] Fixed VPERMT2* shuffle mask decoding and enabled target shuffle combining.

Patch to add support for target shuffle combining of X86ISD::VPERMV3 nodes, including support for detecting unary shuffles.

This uncovered several issues with the X86ISD::VPERMV3 shuffle mask decoding of non-64 bit shuffle mask elements - the bit masking wasn't being correctly computed.

Removed non-constant pool mask decode path as we have no way of testing it right now.

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

llvm-svn: 262809

8 years ago[AMDGPU] Using table-driven amd_kernel_code_t field parser in assembler.
Valery Pykhtin [Sun, 6 Mar 2016 20:25:36 +0000 (20:25 +0000)]
[AMDGPU] Using table-driven amd_kernel_code_t field parser in assembler.

Engages code from r262804.

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

llvm-svn: 262808

8 years agoUpdate with work items passed in Jacksonville
Marshall Clow [Sun, 6 Mar 2016 17:45:24 +0000 (17:45 +0000)]
Update with work items passed in Jacksonville

llvm-svn: 262807

8 years ago[ASTMatchers] Document that isAnyPointer() matcher also matches Objective-C object...
Felix Berger [Sun, 6 Mar 2016 15:27:59 +0000 (15:27 +0000)]
[ASTMatchers] Document that isAnyPointer() matcher also matches Objective-C object pointers.

Summary: Add test for Objective-C object pointer matching.

Reviewers: aaron.ballman

Subscribers: klimek

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

llvm-svn: 262806

8 years agofix sanitizer-ppc64be-linux failure for r262804
Valery Pykhtin [Sun, 6 Mar 2016 15:13:54 +0000 (15:13 +0000)]
fix sanitizer-ppc64be-linux failure for r262804

error: moving a local object in a return statement prevents copy elision [-Werror,-Wpessimizing-move]

http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/930

llvm-svn: 262805

8 years ago[AMDGPU] table-driven parser/printer for amd_kernel_code_t structure fields
Valery Pykhtin [Sun, 6 Mar 2016 13:27:13 +0000 (13:27 +0000)]
[AMDGPU] table-driven parser/printer for amd_kernel_code_t structure fields

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

llvm-svn: 262804

8 years agoAVX512BW: Support llvm intrinsic masked vector load/store for i8/i16 element types...
Igor Breger [Sun, 6 Mar 2016 12:38:58 +0000 (12:38 +0000)]
AVX512BW: Support llvm intrinsic masked vector load/store for i8/i16 element types on SKX

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

llvm-svn: 262803

8 years agoFix typo.
Wilfred Hughes [Sun, 6 Mar 2016 12:37:34 +0000 (12:37 +0000)]
Fix typo.

llvm-svn: 262802

8 years ago[AMDGPU] SOPxx instructions operand naming fixed in td files.
Valery Pykhtin [Sun, 6 Mar 2016 10:31:44 +0000 (10:31 +0000)]
[AMDGPU] SOPxx instructions operand naming fixed in td files.

dst -> sdst
ssrcN -> srcN

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

llvm-svn: 262801

8 years ago[X86] Use high bits of return value from getEncoding instead of predicate functions...
Craig Topper [Sun, 6 Mar 2016 08:12:47 +0000 (08:12 +0000)]
[X86] Use high bits of return value from getEncoding instead of predicate functions to populate the REX and VEX prefix bits that extend register encodings. NFC

llvm-svn: 262800

8 years ago[X86] Remove unnecessary masking. The assert above it already guaranteed it. NFC
Craig Topper [Sun, 6 Mar 2016 08:12:44 +0000 (08:12 +0000)]
[X86] Remove unnecessary masking. The assert above it already guaranteed it. NFC

llvm-svn: 262799

8 years ago[X86] Use uint8_t instead of unsigned char as it shortens the code and more explicitl...
Craig Topper [Sun, 6 Mar 2016 08:12:42 +0000 (08:12 +0000)]
[X86] Use uint8_t instead of unsigned char as it shortens the code and more explicitly reflects the desired size.

llvm-svn: 262798