platform/upstream/llvm.git
7 years ago[PM] Add some more logging to make it more clear when the CGSCC
Chandler Carruth [Wed, 7 Dec 2016 10:33:15 +0000 (10:33 +0000)]
[PM] Add some more logging to make it more clear when the CGSCC
infrastrucutre is skipping SCCs and RefSCCs.

llvm-svn: 288894

7 years ago[ObjC++] Don't enter a C++ declarator scope when the current context is
Alex Lorenz [Wed, 7 Dec 2016 10:24:44 +0000 (10:24 +0000)]
[ObjC++] Don't enter a C++ declarator scope when the current context is
an Objective-C declaration

This commit ensures that Sema won't enter a C++ declarator scope when the
current context is an Objective-C declaration. This prevents an assertion
failure in EnterDeclaratorContext that's used to ensure that current context
will be restored correctly after exiting the declarator context.

rdar://20560175

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

llvm-svn: 288893

7 years agoCompilation database test: don't try to output to CWD
Sam McCall [Wed, 7 Dec 2016 09:19:07 +0000 (09:19 +0000)]
Compilation database test: don't try to output to CWD

Summary:
Write output from compilation database test to %T rather than the working dir.
Sometimes CWD isn't writable!
Also specify no-canonical-prefixes so that clang has 'clang' in the name.

Reviewers: bkramer

Subscribers: joerg, cfe-commits

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

llvm-svn: 288892

7 years ago[OpenCL] Added a LIT test for ensuring address space mangling is done the same both...
Alexey Bader [Wed, 7 Dec 2016 08:43:49 +0000 (08:43 +0000)]
[OpenCL] Added a LIT test for ensuring address space mangling is done the same both in OpenCL1.2 and OpenCL2.0.

Patch by Egor Churaev (echuraev).

Reviewers: Anastasia

Subscribers: yaxunl, cfe-commits, bader

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

llvm-svn: 288891

7 years ago[OpenCL] Fix SPIR version generation.
Alexey Bader [Wed, 7 Dec 2016 08:38:24 +0000 (08:38 +0000)]
[OpenCL] Fix SPIR version generation.

Patch by Egor Churaev (echuraev).

Reviewers: Anastasia

Subscribers: bader, yaxunl, cfe-commits

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

llvm-svn: 288890

7 years agoReintroduce a check accidentally removed in 288873 to fix clang bots
Philip Reames [Wed, 7 Dec 2016 04:48:50 +0000 (04:48 +0000)]
Reintroduce a check accidentally removed in 288873 to fix clang bots

I believe this is the cause of the failure, but have not been able to confirm.  Note that this is a speculative fix; I'm still waiting for a full build to finish as I synced and ended up doing a clean build which takes 20+ minutes on my machine.

llvm-svn: 288886

7 years agoAdd comments and reorder code a bit to clarify the intention. NFC.
Rui Ueyama [Wed, 7 Dec 2016 04:45:34 +0000 (04:45 +0000)]
Add comments and reorder code a bit to clarify the intention. NFC.

llvm-svn: 288885

7 years agoFix a warning introduced in r288874
Philip Reames [Wed, 7 Dec 2016 04:11:22 +0000 (04:11 +0000)]
Fix a warning introduced in r288874

llvm-svn: 288884

7 years agoMake a decision about whether we should warn on missing entry or not early.
Rui Ueyama [Wed, 7 Dec 2016 04:06:21 +0000 (04:06 +0000)]
Make a decision about whether we should warn on missing entry or not early.

Config->WarnMissingEntry is a single-purpose boolean variable, and
I think it's easier to understand than Config->HasEntry.

llvm-svn: 288883

7 years agoSimplify -e <number> option handling.
Rui Ueyama [Wed, 7 Dec 2016 03:23:06 +0000 (03:23 +0000)]
Simplify -e <number> option handling.

This patch is to parse the entry symbol name lazily.

llvm-svn: 288882

7 years agoLowerTypeTests: Add a test that covers "unsatisfiable" type metadata.
Peter Collingbourne [Wed, 7 Dec 2016 03:04:34 +0000 (03:04 +0000)]
LowerTypeTests: Add a test that covers "unsatisfiable" type metadata.

llvm-svn: 288881

7 years ago[ELF] Fix the broken PPC test
Petr Hosek [Wed, 7 Dec 2016 03:04:02 +0000 (03:04 +0000)]
[ELF] Fix the broken PPC test

This is related to the change in handling of entry point symbols.

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

llvm-svn: 288880

7 years agoAMDGPU : Add S_SETREG instructions to fix fdiv precision issues.
Tom Stellard [Wed, 7 Dec 2016 02:42:15 +0000 (02:42 +0000)]
AMDGPU : Add S_SETREG instructions to fix fdiv precision issues.

Patch By: Wei Ding

Summary: This patch fixes the fdiv precision issues.

Reviewers: b-sumner, cfang, wdng, arsenm

Subscribers: kzhuravl, nhaehnle, yaxunl, tony-tye

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

llvm-svn: 288879

7 years ago[ELF] Shared libraries should have entry point
Petr Hosek [Wed, 7 Dec 2016 02:26:16 +0000 (02:26 +0000)]
[ELF] Shared libraries should have entry point

Shared libraries should have entry set following the same rules as for
regular binaries. The only difference is that in case the default entry
point (_start or __start) isn't found (unless it was set explicitly), we
shouldn't give a warning as in case of regular binaries.

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

llvm-svn: 288878

7 years ago[ELF] Only binaries should have DT_DEBUG entry
Petr Hosek [Wed, 7 Dec 2016 02:05:42 +0000 (02:05 +0000)]
[ELF] Only binaries should have DT_DEBUG entry

The presence of DT_DEBUG entry is unrelated to the existence of entry point.

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

llvm-svn: 288877

7 years ago[AArch64] Correct the check of signed 9-bit imm in isLegalAddressingMode()
Haicheng Wu [Wed, 7 Dec 2016 01:45:04 +0000 (01:45 +0000)]
[AArch64] Correct the check of signed 9-bit imm in isLegalAddressingMode()

In the addressing mode, signed 9-bit imm is [-256, 255], not [-512, 511].

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

llvm-svn: 288876

7 years ago[LCG] Add basic verification of the parent set and fix bugs it uncovers.
Chandler Carruth [Wed, 7 Dec 2016 01:42:40 +0000 (01:42 +0000)]
[LCG] Add basic verification of the parent set and fix bugs it uncovers.

The existing unittests actually cover this now that we verify things.

llvm-svn: 288875

7 years ago[LVI] Remove used return value from markX functions
Philip Reames [Wed, 7 Dec 2016 01:03:56 +0000 (01:03 +0000)]
[LVI] Remove used return value from markX functions

llvm-svn: 288874

7 years ago[LVI] Simplify mergeIn code
Philip Reames [Wed, 7 Dec 2016 00:54:21 +0000 (00:54 +0000)]
[LVI] Simplify mergeIn code

Remove the unused return type, use early return, use assignment operator.

llvm-svn: 288873

7 years agoDriver: Remove support for -fobjc-gc*
Duncan P. N. Exon Smith [Wed, 7 Dec 2016 00:31:10 +0000 (00:31 +0000)]
Driver: Remove support for -fobjc-gc*

As a first step toward removing Objective-C garbage collection from
Clang, remove support from the driver.  I'm hoping this will flush out
any expected bots/configurations/whatever that might rely on it.

I've left the options behind temporarily in -cc1 to keep tests passing.
I'll kill them off entirely in a follow up when I've had a chance to
update/delete the rest of Clang.

llvm-svn: 288872

7 years ago[LVI] Simplify obfuscated code
Philip Reames [Wed, 7 Dec 2016 00:28:28 +0000 (00:28 +0000)]
[LVI] Simplify obfuscated code

It doesn't matter why something is overdefined if it is...

llvm-svn: 288871

7 years agoFix test.
Richard Smith [Wed, 7 Dec 2016 00:24:40 +0000 (00:24 +0000)]
Fix test.

llvm-svn: 288870

7 years ago[MS-ABI]V-base dtor called more than needed when throw happens in v-base ctor in...
Erich Keane [Wed, 7 Dec 2016 00:21:45 +0000 (00:21 +0000)]
[MS-ABI]V-base dtor called more than needed when throw happens in v-base ctor in window. Need add "complete object flag" check in eh cleanup code.

The problem only happen on window ( A MS-ABI issuer )

The nature of the problem is virtual base dtor called more than it is needed after exception throw in inheriting base class(with virtual bases) ctor.

The root problem is when throw happen, not all virtual base classes have been contructed, so not all virtual base dtors are need to call for ehcleanup.

clang has code to handle vbase initialization: basically add check for "complete object flag" before call to v-base ctor.
But that part is missing for cleanup code.

To fix this add similar code as v-base init to cleanup code, same algorithm.

1> Add new routine:
EmitDtorCompleteObjectHandler

With corresponding to EmitCtorCompleteObjectHandler

2> In the EmitDestructorCal
Call EmitDtorCompleteObjectHandler when generate ehcleanup inside ctor.

Just add check for "complete object flag" before call to v-base dtor.

Without my change:
ehcleanup: ; preds = %ctor.skip_vbases

%13 = cleanuppad within none [], !dbg !66
%14 = bitcast %struct.class_0* %this1 to i8*, !dbg !66
%15 = getelementptr inbounds i8, i8* %14, i64 8, !dbg !66
%16 = bitcast i8* %15 to %struct.class_2*, !dbg !66
call void @"\01??1class_2@@UEAA@XZ"(%struct.class_2* %16) #6 [ "funclet"(token

%13) ], !dbg !66

cleanupret from %13 unwind to caller, !dbg !66

with my change:
ehcleanup: ; preds = %ctor.skip_vbases

%13 = cleanuppad within none [], !dbg !66
%14 = bitcast %struct.class_0* %this1 to i8*, !dbg !66
%15 = getelementptr inbounds i8, i8* %14, i64 8, !dbg !66
%16 = bitcast i8* %15 to %struct.class_2*, !dbg !66
%is_complete_object4 = icmp ne i32 %is_most_derived2, 0, !dbg !66
br i1 %is_complete_object4, label %Dtor.dtor_vbase, label %Dtor.skip_vbase, !d

bg !66

Dtor.dtor_vbase: ; preds = %ehcleanup

call void @"\01??1class_2@@UEAA@XZ"(%struct.class_2* %16) #6 [ "funclet"(token

%13) ], !dbg !66

br label %Dtor.skip_vbase, !dbg !66

Dtor.skip_vbase: ; preds = %Dtor.dtor_vbase, %ehcleanup

cleanupret from %13 unwind to caller, !dbg !66

Please let me know you need more info.

Patch by Jennifer Yu.

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

llvm-svn: 288869

7 years agoAddress review feedback by adding comments about ${:uid}
Reid Kleckner [Wed, 7 Dec 2016 00:17:18 +0000 (00:17 +0000)]
Address review feedback by adding comments about ${:uid}

llvm-svn: 288868

7 years agoIR: Reduce the amount of boilerplate required for a metadata kind. NFCI.
Peter Collingbourne [Tue, 6 Dec 2016 23:53:01 +0000 (23:53 +0000)]
IR: Reduce the amount of boilerplate required for a metadata kind. NFCI.

llvm-svn: 288867

7 years ago[c++17] P0135R1: Guaranteed copy elision.
Richard Smith [Tue, 6 Dec 2016 23:52:28 +0000 (23:52 +0000)]
[c++17] P0135R1: Guaranteed copy elision.

When an object of class type is initialized from a prvalue of the same type
(ignoring cv qualifications), use the prvalue to initialize the object directly
instead of inserting a redundant elidable call to a copy constructor.

llvm-svn: 288866

7 years agoAMDGPU: Add llvm.amdgcn.interp.mov intrinsic
Tom Stellard [Tue, 6 Dec 2016 23:52:13 +0000 (23:52 +0000)]
AMDGPU: Add llvm.amdgcn.interp.mov intrinsic

Reviewers: arsenm, nhaehnle

Subscribers: kzhuravl, wdng, yaxunl, tony-tye, llvm-commits

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

llvm-svn: 288865

7 years ago[llc] Fix -stop-after=consthoist initializing the pass.
Davide Italiano [Tue, 6 Dec 2016 23:49:58 +0000 (23:49 +0000)]
[llc] Fix -stop-after=consthoist initializing the pass.

llvm-svn: 288864

7 years ago[OpenMP] Fix typo in the run command in the test case. NFC.
Kelvin Li [Tue, 6 Dec 2016 23:18:06 +0000 (23:18 +0000)]
[OpenMP] Fix typo in the run command in the test case. NFC.

llvm-svn: 288862

7 years agoAMDGPU: Fix crash on i16 constant expression
Matt Arsenault [Tue, 6 Dec 2016 23:18:06 +0000 (23:18 +0000)]
AMDGPU: Fix crash on i16 constant expression

llvm-svn: 288861

7 years ago[XRay][compiler-rt] Explicitly add dependency to pthread
Dean Michael Berris [Tue, 6 Dec 2016 23:08:45 +0000 (23:08 +0000)]
[XRay][compiler-rt] Explicitly add dependency to pthread

This should fix the sanitizer bootstrap builds.

Follow-up to D26232.

llvm-svn: 288860

7 years agoLowerTypeTests: Improve performance by optimising type metadata queries.
Peter Collingbourne [Tue, 6 Dec 2016 23:02:13 +0000 (23:02 +0000)]
LowerTypeTests: Improve performance by optimising type metadata queries.

Requesting metadata for a global is a relatively expensive operation as it
involves a map lookup, but it's one that we need to do relatively frequently in
this pass to collect the list of type metadata nodes associated with a global.
This change improves the performance of type metadata queries by prebuilding
data structures that keep the global together with its list of type metadata,
and changing the pass to use that data structure wherever we were previously
passing global references around.

This change also eliminates some O(N^2) behavior by collecting the list of
globals associated with each type identifier during the first pass over the
list of globals rather than visiting each global to compute that list every
time we add a new type identifier.

Reduces pass runtime on a module containing Chrome's vtables from over 60s
to 0.9s.

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

llvm-svn: 288859

7 years ago[X86][XOP] Add test case for PR31296
Simon Pilgrim [Tue, 6 Dec 2016 22:50:13 +0000 (22:50 +0000)]
[X86][XOP] Add test case for PR31296

llvm-svn: 288858

7 years ago[CodeGen] Fix result type for SMULO/UMULO legalization
Eli Friedman [Tue, 6 Dec 2016 22:49:36 +0000 (22:49 +0000)]
[CodeGen] Fix result type for SMULO/UMULO legalization

On some platforms (like MSP430) the second element of the result
structure for SMULO/UMULO may have a shorter type than the one
returned by SetCC. We need to truncate it to the right type, or
else some incorrect code may be generated later on.

This fixes issue https://github.com/rust-lang/rust/issues/37829

Patch by Vadzim Dambrouski!

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

llvm-svn: 288857

7 years agoAMDGPU: Fix operand name for v_interp_*
Matt Arsenault [Tue, 6 Dec 2016 22:29:43 +0000 (22:29 +0000)]
AMDGPU: Fix operand name for v_interp_*

Other VOP instructions call the output vdst

llvm-svn: 288856

7 years ago[InstSimplify] fixed (?) to not mutate icmps
Sanjay Patel [Tue, 6 Dec 2016 22:09:52 +0000 (22:09 +0000)]
[InstSimplify] fixed (?) to not mutate icmps

As Eli noted in the post-commit thread for r288833, the use of
swapOperands() may not be allowed in InstSimplify, so I'm
removing those calls here pending further review.

The swap mutates the icmp, and there doesn't appear to be precedent
for instruction mutation in InstSimplify.

I didn't actually have any tests for those cases, so I'm adding
a few here.

llvm-svn: 288855

7 years agoReplace "|&" with "2>&1 |" to support bash pre-4
Evgeniy Stepanov [Tue, 6 Dec 2016 22:02:21 +0000 (22:02 +0000)]
Replace "|&" with "2>&1 |" to support bash pre-4

Summary: Old bash release (3.2) on SLES11 chokes on new redirection shortcut.

Patch by Brian Cain.

Reviewers: eugenis

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 288854

7 years ago[IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warning...
Eugene Zelenko [Tue, 6 Dec 2016 22:00:57 +0000 (22:00 +0000)]
[IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 288853

7 years agoAMDGPU/SI: Set correct value for amd_kernel_code_t::kernarg_segment_alignment
Tom Stellard [Tue, 6 Dec 2016 21:53:10 +0000 (21:53 +0000)]
AMDGPU/SI: Set correct value for amd_kernel_code_t::kernarg_segment_alignment

Reviewers: arsenm

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, llvm-commits, tony-tye

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

llvm-svn: 288852

7 years ago[BDCE/DebugInfo] Preserve llvm.dbg.value's argument.
Davide Italiano [Tue, 6 Dec 2016 21:52:47 +0000 (21:52 +0000)]
[BDCE/DebugInfo] Preserve llvm.dbg.value's argument.

BDCE has two phases:
1. It asks SimplifyDemandedBits if all the bits of an instruction are dead, and if so,
replaces all its uses with the constant zero.
2. Then, it asks SimplifyDemandedBits again if the instruction is really dead
(no side effects etc..) and if so, eliminates it.

Now, in 1) if all the bits of an instruction are dead, we may end up replacing a dbg use:
  %call = tail call i32 (...) @g() #4, !dbg !15
  tail call void @llvm.dbg.value(metadata i32 %call, i64 0, metadata !8, metadata !16), !dbg !17
->
  %call = tail call i32 (...) @g() #4, !dbg !15
  tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !8, metadata !16), !dbg !17

but not eliminating the call because it may have arbitrary side effects.
In other words, we lose some debug informations.
This patch fixes the problem making sure that BDCE does nothing with the instruction if
it has side effects and no non-dbg uses.

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

llvm-svn: 288851

7 years agoDisable -Wweak-vtables when there are no key functions
Reid Kleckner [Tue, 6 Dec 2016 21:44:41 +0000 (21:44 +0000)]
Disable -Wweak-vtables when there are no key functions

Our -Wweak-vtables diagnostic is powered by our key function
calculation, which checks if key functions are enabled. We won't find
any key functions in C++ ABIs that lack key functions, so -Wweak-vtables
was warning on every dynamic class before this change. So, turn off this
warning in ABIs without key functions.

Addresses PR31220

llvm-svn: 288850

7 years agoAMDGPU/SI: Don't move copies of immediates to the VALU
Tom Stellard [Tue, 6 Dec 2016 21:13:30 +0000 (21:13 +0000)]
AMDGPU/SI: Don't move copies of immediates to the VALU

Summary:
If we write an immediate to a VGPR and then copy the VGPR to an
SGPR, we can replace the copy with a S_MOV_B32 sgpr, imm, rather than
moving the copy to the SALU.

Reviewers: arsenm

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, llvm-commits, tony-tye

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

llvm-svn: 288849

7 years agoGlobalISel: correctly handle small args via memory.
Tim Northover [Tue, 6 Dec 2016 21:02:19 +0000 (21:02 +0000)]
GlobalISel: correctly handle small args via memory.

We were rounding size in bits down rather than up, leading to 0-sized slots for
i1 (assert!) and bugs for other types not byte-aligned.

llvm-svn: 288848

7 years ago[X86] Prefer reduced width multiplication over pmulld on Silvermont
Zvi Rackover [Tue, 6 Dec 2016 19:35:20 +0000 (19:35 +0000)]
[X86] Prefer reduced width multiplication over pmulld on Silvermont

Summary:
Prefer expansions such as: pmullw,pmulhw,unpacklwd,unpackhwd over pmulld.
On Silvermont [source: Optimization Reference Manual]:
PMULLD has a throughput of 1/11 [instruction/cycles].
PMULHUW/PMULHW/PMULLW have a throughput of 1/2 [instruction/cycles].

Fixes pr31202.

Analysis of this issue was done by Fahana Aleen.

Reviewers: wmi, delena, mkuper

Subscribers: RKSimon, llvm-commits

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

llvm-svn: 288844

7 years ago[llgo] Remove support for LLVM attributes
Meador Inge [Tue, 6 Dec 2016 19:22:04 +0000 (19:22 +0000)]
[llgo] Remove support for LLVM attributes

llgo supports the application of LLVM attributes to global objects
and functions.  This "feature" is undocumented and untested.  As
discusses in D27442, it should be removed.

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

llvm-svn: 288843

7 years ago[DAGCombine] Add (sext_in_reg (zext x)) -> (sext x) combine
Simon Pilgrim [Tue, 6 Dec 2016 19:09:37 +0000 (19:09 +0000)]
[DAGCombine] Add (sext_in_reg (zext x)) -> (sext x) combine

Handle the case where a sign extension has ended up being split into separate stages (typically to get around vector legal ops) and a zext + sext_in_reg gets inserted.

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

llvm-svn: 288842

7 years ago[InstSimplify] add folds for and-of-icmps with same operands
Sanjay Patel [Tue, 6 Dec 2016 19:05:46 +0000 (19:05 +0000)]
[InstSimplify] add folds for and-of-icmps with same operands

All of these (and a few more) are already handled by InstCombine,
but we shouldn't have to wait until then to simplify these because
they're cheap to deal with here in InstSimplify.

This is the 'and' sibling of the earlier 'or' patch:
https://reviews.llvm.org/rL288833

llvm-svn: 288841

7 years agoGlobalISel: fall back gracefully when we hit unhandled legalizer default.
Tim Northover [Tue, 6 Dec 2016 19:02:15 +0000 (19:02 +0000)]
GlobalISel: fall back gracefully when we hit unhandled legalizer default.

llvm-svn: 288840

7 years ago[SelectionDAG] We can ignore knownbits from an undef shuffle vector index if we don...
Simon Pilgrim [Tue, 6 Dec 2016 18:58:25 +0000 (18:58 +0000)]
[SelectionDAG] We can ignore knownbits from an undef shuffle vector index if we don't actually demand that element

llvm-svn: 288839

7 years ago[OpenMP] Fix typo in the test case. NFC.
Kelvin Li [Tue, 6 Dec 2016 18:50:20 +0000 (18:50 +0000)]
[OpenMP] Fix typo in the test case. NFC.

llvm-svn: 288838

7 years ago[InstSimplify] add tests for and-of-icmps; NFC
Sanjay Patel [Tue, 6 Dec 2016 18:46:54 +0000 (18:46 +0000)]
[InstSimplify] add tests for and-of-icmps; NFC

llvm-svn: 288837

7 years agoGlobalISel: handle G_SEQUENCE fallbacks gracefully.
Tim Northover [Tue, 6 Dec 2016 18:38:38 +0000 (18:38 +0000)]
GlobalISel: handle G_SEQUENCE fallbacks gracefully.

There were two problems:
  + AArch64 was reusing random data from its binary op tables, which is
    complete nonsense for G_SEQUENCE.
  + Even when AArch64 gave up and said it couldn't handle G_SEQUENCE,
    the generic code asserted.

llvm-svn: 288836

7 years agoGlobalISel: allow G_SELECT instructions for pointers.
Tim Northover [Tue, 6 Dec 2016 18:38:34 +0000 (18:38 +0000)]
GlobalISel: allow G_SELECT instructions for pointers.

llvm-svn: 288835

7 years agoGlobalISel: stop the legalizer from trying to handle oddly-sized types.
Tim Northover [Tue, 6 Dec 2016 18:38:29 +0000 (18:38 +0000)]
GlobalISel: stop the legalizer from trying to handle oddly-sized types.

It'll almost immediately fail because it always tries to half/double the size
until it finds a legal one. Unfortunately, this triggers an assertion
preventing the DAG fallback from being possible.

llvm-svn: 288834

7 years ago[InstSimplify] add folds for or-of-icmps with same operands
Sanjay Patel [Tue, 6 Dec 2016 18:09:37 +0000 (18:09 +0000)]
[InstSimplify] add folds for or-of-icmps with same operands

All of these (and a few more) are already handled by InstCombine,
but we shouldn't have to wait until then to simplify these because
they're cheap to deal with here in InstSimplify.

llvm-svn: 288833

7 years ago[ELF] - Teach LLD to recognize PT_OPENBSD_BOOTDATA
George Rimar [Tue, 6 Dec 2016 17:57:42 +0000 (17:57 +0000)]
[ELF] - Teach LLD to recognize PT_OPENBSD_BOOTDATA

Minor patch to fix PR31288

OpenBSD commit:
https://github.com/openbsd/src/commit/d39116912b9536bd77326260dc5c6e593fd4ee24

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

llvm-svn: 288832

7 years ago[llvm-readobj] - Teach readobj to print PT_OPENBSD_BOOTDATA header
George Rimar [Tue, 6 Dec 2016 17:55:52 +0000 (17:55 +0000)]
[llvm-readobj] - Teach readobj to print PT_OPENBSD_BOOTDATA header

These are OpenBSD specific program headers.

OpenBSD commit:
https://github.com/openbsd/src/commit/d39116912b9536bd77326260dc5c6e593fd4ee24

It is required for fixing PR31288.

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

llvm-svn: 288831

7 years ago[InstSimplify] add tests for or-of-icmps; NFC
Sanjay Patel [Tue, 6 Dec 2016 17:49:10 +0000 (17:49 +0000)]
[InstSimplify] add tests for or-of-icmps; NFC

llvm-svn: 288830

7 years ago[CMake] Fixing clang standalone build
Chris Bieneman [Tue, 6 Dec 2016 17:09:29 +0000 (17:09 +0000)]
[CMake] Fixing clang standalone build

I broke this in r288770.

llvm-svn: 288829

7 years agoFix FileCheck pattern.
Joerg Sonnenberger [Tue, 6 Dec 2016 17:06:33 +0000 (17:06 +0000)]
Fix FileCheck pattern.

llvm-svn: 288828

7 years agoAllow additional output since e.g. OSX appends flags like
Joerg Sonnenberger [Tue, 6 Dec 2016 17:02:41 +0000 (17:02 +0000)]
Allow additional output since e.g. OSX appends flags like
"-mlinker-version=264.3.102" automatically. Wiring down a target on the
other hand is problematic as this actually needs to run codegen and
doesn't work with -###.

llvm-svn: 288827

7 years ago[MS ABI] Implement more of the Itanium mangling rules
David Majnemer [Tue, 6 Dec 2016 17:01:02 +0000 (17:01 +0000)]
[MS ABI] Implement more of the Itanium mangling rules

We didn't implement handle corner cases like:
 - lambdas used to initialize a field
 - lambdas in default argument initializers

This fixes PR31197.

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

llvm-svn: 288826

7 years ago[X86][SSE] Add knownbits test demonstrating demandedelts not ignoring undef shuffle...
Simon Pilgrim [Tue, 6 Dec 2016 17:00:47 +0000 (17:00 +0000)]
[X86][SSE] Add knownbits test demonstrating demandedelts not ignoring undef shuffle elements

llvm-svn: 288825

7 years agoMake test case slightly more robust by explicitly passing --sysroot.
Joerg Sonnenberger [Tue, 6 Dec 2016 16:47:00 +0000 (16:47 +0000)]
Make test case slightly more robust by explicitly passing --sysroot.
Otherwise it would change when DEFAULT_SYSROOT is provided.

llvm-svn: 288823

7 years agoIf clang was configured for a DEFAULT_SYSROOT and no --sysroot argument
Joerg Sonnenberger [Tue, 6 Dec 2016 16:40:57 +0000 (16:40 +0000)]
If clang was configured for a DEFAULT_SYSROOT and no --sysroot argument
is seen, record one with the implicit default.

llvm-svn: 288822

7 years agoAllow clang to write compilation database records.
Joerg Sonnenberger [Tue, 6 Dec 2016 16:33:22 +0000 (16:33 +0000)]
Allow clang to write compilation database records.

When integrating compilation database output into existing build
systems, two approaches dominate so far. Ad-hoc implementation of the
JSON output rules or using compiler wrappers. This patch adds a new
option "-MJ foo.json" which gives a slightly cleaned up compilation
record. The output is a fragment, i.e. you still need to add the array
markers, but it allows multiple files to be easy merged.

This way the only change in a build system is adding the option with
potentially a per-target output file and merging the files with
something like
  (echo '['; cat *.o.json; echo ']' > compilation_database.json
or some additional filtering to remove the trailing comma for strict
JSON compliance.

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

llvm-svn: 288821

7 years ago[X86][SSE] Added vector sext_in_reg combine tests
Simon Pilgrim [Tue, 6 Dec 2016 15:57:26 +0000 (15:57 +0000)]
[X86][SSE] Added vector sext_in_reg combine tests

llvm-svn: 288819

7 years agoFix doc string typo: s/@__yes/@__objc_yes/
Jonathan Roelofs [Tue, 6 Dec 2016 15:45:41 +0000 (15:45 +0000)]
Fix doc string typo: s/@__yes/@__objc_yes/

llvm-svn: 288818

7 years agoRemoved trailing whitespaces. NFC.
George Rimar [Tue, 6 Dec 2016 15:40:02 +0000 (15:40 +0000)]
Removed trailing whitespaces. NFC.

llvm-svn: 288817

7 years ago[Support/ELF] - Add OpenBSD PT_OPENBSD_BOOTDATA constant.
George Rimar [Tue, 6 Dec 2016 15:38:15 +0000 (15:38 +0000)]
[Support/ELF] - Add OpenBSD PT_OPENBSD_BOOTDATA constant.

OpenBSD commit for reference:
https://github.com/openbsd/src/commit/d39116912b9536bd77326260dc5c6e593fd4ee24

llvm-svn: 288816

7 years ago[X86] Improve UMAX/UMIN knownbits test
Simon Pilgrim [Tue, 6 Dec 2016 15:17:50 +0000 (15:17 +0000)]
[X86] Improve UMAX/UMIN knownbits test

Test the sequential effect of each op

llvm-svn: 288815

7 years agoAvoid repeated calls to Op.getOpcode(). NFCI.
Simon Pilgrim [Tue, 6 Dec 2016 14:50:09 +0000 (14:50 +0000)]
Avoid repeated calls to Op.getOpcode(). NFCI.

llvm-svn: 288814

7 years agoFix two clang-tidy misc-move-forwarding-reference warnings
Malcolm Parsons [Tue, 6 Dec 2016 14:49:18 +0000 (14:49 +0000)]
Fix two clang-tidy misc-move-forwarding-reference warnings

Patch by Michael Sharpe.

llvm-svn: 288813

7 years ago[globalisel][aarch64] Fix unintended assumptions about PartialMappingIdx. NFC.
Daniel Sanders [Tue, 6 Dec 2016 14:39:57 +0000 (14:39 +0000)]
[globalisel][aarch64] Fix unintended assumptions about PartialMappingIdx. NFC.

Summary:
This is NFC but prevents assertions when PartialMappingIdx is tablegen-erated.
The assumptions were:
1) FirstGPR is 0
2) FirstGPR is the first of the First* enumerators.

GPR32 is changed to 1 to demonstrate that assumption #1 is fixed. #2 will
be covered by a subsequent patch that tablegen-erates information and swaps
the order of GPR and FPR as a side effect.

Depends on D27336

Reviewers: ab, t.p.northover, qcolombet

Subscribers: aemerson, rengolin, vkalintiris, dberris, rovka, llvm-commits

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

llvm-svn: 288812

7 years agoUpdate to isl-0.17.1-314-g3106e8d
Michael Kruse [Tue, 6 Dec 2016 14:37:39 +0000 (14:37 +0000)]
Update to isl-0.17.1-314-g3106e8d

This version includes an update for imath (isl-0.17.1-49-g2f1c129). It fixes
the compilation under windows, which does not know ssize_t.

In addition, isl-0.17.1-288-g0500299 changed the way isl_test finds the source
directory. It now generates a file isl_srcdir.c at configure-time, containing
the source path, to not require setting the environment variable "srcdir" at
test-time. The cmake build system had to be modified to also generate that file.

llvm-svn: 288811

7 years ago[globalisel][aarch64] Replace magic numbers with corresponding enumerators in ValMapp...
Daniel Sanders [Tue, 6 Dec 2016 13:55:01 +0000 (13:55 +0000)]
[globalisel][aarch64] Replace magic numbers with corresponding enumerators in ValMappings. NFC

Reviewers: ab, t.p.northover, qcolombet

Subscribers: aemerson, rengolin, vkalintiris, dberris, llvm-commits, rovka

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

llvm-svn: 288810

7 years ago[globalisel][aarch64] Correct argument names in comments.
Daniel Sanders [Tue, 6 Dec 2016 13:48:58 +0000 (13:48 +0000)]
[globalisel][aarch64] Correct argument names in comments.

llvm-svn: 288809

7 years agoDon't print empty PT_LOAD.
Rafael Espindola [Tue, 6 Dec 2016 13:43:34 +0000 (13:43 +0000)]
Don't print empty PT_LOAD.

If we do, the freebsd dynamic linker tries to call mmap with a size 0,
which fails.

It is hard to avoid creating them when linker scripts are used, so we
just delete empty PT_LOADs at the end.

llvm-svn: 288808

7 years ago[SLPVectorizer][X86] Tests to show missed buildvector sitofp/fptosi vectorizations
Simon Pilgrim [Tue, 6 Dec 2016 13:29:55 +0000 (13:29 +0000)]
[SLPVectorizer][X86] Tests to show missed buildvector sitofp/fptosi vectorizations

e.g.
buildvector(sitofp(i32), sitofp(i32), sitofp(i32), sitofp(i32)) --> sitofp(buildvector(i32, i32, i32, i32))

llvm-svn: 288807

7 years ago[ARM] Better error message for invalid flag-preserving Thumb1 insts
Oliver Stannard [Tue, 6 Dec 2016 12:59:08 +0000 (12:59 +0000)]
[ARM] Better error message for invalid flag-preserving Thumb1 insts

When we see a non flag-setting instruction for which only the flag-setting
version is available in Thumb1, we should give a better error message than
"invalid instruction".

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

llvm-svn: 288805

7 years ago[X86][AVX512] Detect repeated constant patterns in BUILD_VECTOR suitable for broadcas...
Ayman Musa [Tue, 6 Dec 2016 12:24:14 +0000 (12:24 +0000)]
[X86][AVX512] Detect repeated constant patterns in BUILD_VECTOR suitable for broadcasting.

Check if a build_vector node includes a repeated constant pattern and replace it with a broadcast of that pattern.
For example:
"build_vector <0, 1, 2, 3, 0, 1, 2, 3>" would be replaced by "broadcast <0, 1, 2, 3>"

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

llvm-svn: 288804

7 years agoDon't crash trying to write an 0 addend.
Rafael Espindola [Tue, 6 Dec 2016 12:19:24 +0000 (12:19 +0000)]
Don't crash trying to write an 0 addend.

For preemptable symbols the dynamic linker does all the work. Trying
to compute the addend is at best wasteful and can also lead to crashes
in cases of programs that uses tls but doesn't define any tls
variables.

llvm-svn: 288803

7 years agoMake the test a bit more strict. NFC.
Rafael Espindola [Tue, 6 Dec 2016 12:15:12 +0000 (12:15 +0000)]
Make the test a bit more strict. NFC.

llvm-svn: 288802

7 years ago[X86] Add tests to show missed opportunities to calculate knownbits in SMAX/SMIN...
Simon Pilgrim [Tue, 6 Dec 2016 12:12:20 +0000 (12:12 +0000)]
[X86] Add tests to show missed opportunities to calculate knownbits in SMAX/SMIN/UMAX/UMIN

llvm-svn: 288801

7 years ago[PowerPC] Improvements for BUILD_VECTOR Vol. 4
Nemanja Ivanovic [Tue, 6 Dec 2016 11:47:14 +0000 (11:47 +0000)]
[PowerPC] Improvements for BUILD_VECTOR Vol. 4

This is the final patch in the series of patches that improves
BUILD_VECTOR handling on PowerPC. This adds a few peephole optimizations
to remove redundant instructions. It also adds a large test case which
encompasses a large set of code patterns that build vectors - this test
case was the motivator for this series of patches.

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

llvm-svn: 288800

7 years ago[globalisel][aarch64] Prefix PartialMappingIdx enumerators with 'PMI_' to fit coding...
Daniel Sanders [Tue, 6 Dec 2016 11:33:04 +0000 (11:33 +0000)]
[globalisel][aarch64] Prefix PartialMappingIdx enumerators with 'PMI_' to fit coding standards.

This also stops things like 'None' polluting the llvm::AArch64 namespace.

llvm-svn: 288799

7 years agoFix MSVC -Wmicrosoft-enum-value 'enumerator value is not representable' warning
Simon Pilgrim [Tue, 6 Dec 2016 11:27:19 +0000 (11:27 +0000)]
Fix MSVC -Wmicrosoft-enum-value 'enumerator value is not representable' warning

llvm-svn: 288798

7 years agoUse Timeout<> in EvaluateExpressionOptions class
Pavel Labath [Tue, 6 Dec 2016 11:24:51 +0000 (11:24 +0000)]
Use Timeout<> in EvaluateExpressionOptions class

llvm-svn: 288797

7 years agoFix MSVC bool to uint64_t promotion warning
Simon Pilgrim [Tue, 6 Dec 2016 11:12:53 +0000 (11:12 +0000)]
Fix MSVC bool to uint64_t promotion warning

llvm-svn: 288796

7 years ago[LCG] Add some much needed asserts and verify runs to uncover
Chandler Carruth [Tue, 6 Dec 2016 10:29:23 +0000 (10:29 +0000)]
[LCG] Add some much needed asserts and verify runs to uncover
a hilarious bug and fix it.

We somehow were never verifying the RefSCCs newly formed when
splitting an existing one apart, and when verifying them we weren't
really checking the SCC indices mapping effectively.

If we had been, it would have been blindingly obvious that right after
putting something int `RC.SCCs` we should update `RC.SCCIndices` instead
of `SCCIndices` which we were about to clear and rebuild anyways. =[

Anyways, this is thoroughly covered by existing tests now that we
actually verify things properly.

llvm-svn: 288795

7 years ago[framelowering] Improve tracking of first CS pop instruction.
Florian Hahn [Tue, 6 Dec 2016 10:24:55 +0000 (10:24 +0000)]
[framelowering] Improve tracking of first CS pop instruction.

Summary: This patch makes sure FirstCSPop and MBBI never point to DBG_VALUE instructions, which affected the code generated.

Reviewers: mkuper, aprantl, MatzeB

Subscribers: llvm-commits

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

llvm-svn: 288794

7 years agoAlso recognize -std=iso9899:201x
Benjamin Kramer [Tue, 6 Dec 2016 10:23:07 +0000 (10:23 +0000)]
Also recognize -std=iso9899:201x

It should already be handled but a typo in the LANGSTANDARD() definition
was introduced in r147220.

Patch by Alexander Richardson, test case by me.

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

llvm-svn: 288793

7 years agoAdd missing parens in assert.
Sam McCall [Tue, 6 Dec 2016 10:14:36 +0000 (10:14 +0000)]
Add missing parens in assert.

Summary: Add missing parens in assert, which warn in GCC.

Subscribers: llvm-commits

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

llvm-svn: 288792

7 years ago[clang-move] ignore unsupported symbol kinds when checking if all symbols are moved.
Eric Liu [Tue, 6 Dec 2016 10:12:23 +0000 (10:12 +0000)]
[clang-move] ignore unsupported symbol kinds when checking if all symbols are moved.

llvm-svn: 288791

7 years ago[PM] Basic cleanups to CGSCC update code, NFC.
Chandler Carruth [Tue, 6 Dec 2016 10:06:06 +0000 (10:06 +0000)]
[PM] Basic cleanups to CGSCC update code, NFC.

Just using InstIterator, simpler loop structures, and making better use
of the visit callback infrastructure.

llvm-svn: 288790

7 years agoRevert r288787: Add missing stdbool.h module.
Eric Fiselier [Tue, 6 Dec 2016 09:48:32 +0000 (09:48 +0000)]
Revert r288787: Add missing stdbool.h module.

Reverting because I didn't properly test this patch. Although it's probably
correct to add a stdbool_h module I thought the change fixed more than it did.
I'll re-commit after more investigation.

llvm-svn: 288789

7 years ago[XRay][compiler-rt] Only add unit tests if we're building XRay.
Dean Michael Berris [Tue, 6 Dec 2016 09:43:44 +0000 (09:43 +0000)]
[XRay][compiler-rt] Only add unit tests if we're building XRay.

As constructed before this patch, in case we run into case where we
don't actually build the XRay library, we really ought to not be adding
the unit test runs. This should fix the bootstrap build failures.

This is a follow-up further to D26232.

llvm-svn: 288788

7 years agoAdd missing stdbool.h module. The test suite now passes on OS X with modules
Eric Fiselier [Tue, 6 Dec 2016 09:41:50 +0000 (09:41 +0000)]
Add missing stdbool.h module. The test suite now passes on OS X with modules

llvm-svn: 288787

7 years ago[XRay][compiler-rt] CMake fixes for XRay -- take 2.
Dean Michael Berris [Tue, 6 Dec 2016 08:40:16 +0000 (08:40 +0000)]
[XRay][compiler-rt] CMake fixes for XRay -- take 2.

The bootstrap buildbot complains about not being able to find the
unittests for XRay, when the conditionals to include or not include
tests and unit tests don't match.

This is a follow-up to D26232.

llvm-svn: 288786

7 years ago[XRay][compiler-rt] Fix unit test adding logic.
Dean Michael Berris [Tue, 6 Dec 2016 08:22:31 +0000 (08:22 +0000)]
[XRay][compiler-rt] Fix unit test adding logic.

Before this change we would add the unit tests potentially even if we
don't actually include the unit tests.

This is a follow-up on D26232.

llvm-svn: 288785