platform/upstream/llvm.git
7 years agoUse const where possible. NFCI.
Simon Pilgrim [Wed, 27 Sep 2017 10:03:17 +0000 (10:03 +0000)]
Use const where possible. NFCI.

llvm-svn: 314292

7 years ago[dwarfdump] Fix printing of .debug_line offset.
Jonas Devlieghere [Wed, 27 Sep 2017 10:00:27 +0000 (10:00 +0000)]
[dwarfdump] Fix printing of .debug_line offset.

Fixes 32-bit buildbots:
  http://bb.pgr.jp/builders/test-llvm-i686-linux-RA/builds/542
  http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/11533
  http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/11494

llvm-svn: 314291

7 years ago[analyzer] Match more patterns in bugreporter::getDerefExpr() API.
Artem Dergachev [Wed, 27 Sep 2017 09:50:45 +0000 (09:50 +0000)]
[analyzer] Match more patterns in bugreporter::getDerefExpr() API.

This function can now track null pointer through simple pointer arithmetic,
such as '*&*(p + 2)' => 'p' and so on, displaying intermediate diagnostic pieces
for the user to understand where the null pointer is coming from.

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

llvm-svn: 314290

7 years ago[builtins] fix build error on non-ARM for r314285.
Manoj Gupta [Wed, 27 Sep 2017 09:49:32 +0000 (09:49 +0000)]
[builtins] fix build error on non-ARM for r314285.

llvm-svn: 314289

7 years ago[dwarfdump] Add support for -debug-line=OFFSET
Jonas Devlieghere [Wed, 27 Sep 2017 09:33:45 +0000 (09:33 +0000)]
[dwarfdump] Add support for -debug-line=OFFSET

This patch adds support for passing an offset to -debug-line.

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

llvm-svn: 314288

7 years ago[analyzer] Fix and refactor bugreporter::getDerefExpr() API.
Artem Dergachev [Wed, 27 Sep 2017 09:33:37 +0000 (09:33 +0000)]
[analyzer] Fix and refactor bugreporter::getDerefExpr() API.

This API is used by checkers (and other entities) in order to track where does
a value originate from, by jumping from an expression value of which is equal
to that value to the expression from which this value has "appeared". For
example, it may be an lvalue from which the rvalue was loaded, or a function
call from which the dereferenced pointer was returned.

The function now avoids incorrectly unwrapping implicit lvalue-to-rvalue casts,
which caused crashes and incorrect intermediate diagnostic pieces. It also no
longer relies on how the expression is written when guessing what it means.

Fixes pr34373 and pr34731.

rdar://problem/33594502

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

llvm-svn: 314287

7 years ago[dwarfdump] Add support for -debug-loc=OFFSET
Jonas Devlieghere [Wed, 27 Sep 2017 09:33:36 +0000 (09:33 +0000)]
[dwarfdump] Add support for -debug-loc=OFFSET

This patch adds support for passing an offset to -debug-loc.

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

llvm-svn: 314286

7 years ago[Builtins] ARM: Fix assembling files in thumb mode.
Manoj Gupta [Wed, 27 Sep 2017 09:33:14 +0000 (09:33 +0000)]
[Builtins] ARM: Fix assembling files in thumb mode.

Summary:
clang does not assemble files in thumb mode unless .thumb declaration
is present. Add .thumb/.arm decl to _FUNCTION macros to ensure that
files are assembled correctly.

Fixes PR 34715.

Reviewers: compnerd, peter.smith, srhines, weimingz, rengolin

Reviewed By: compnerd

Subscribers: aemerson, javed.absar, llvm-commits, kristof.beyls

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

llvm-svn: 314285

7 years ago[Builtins] ARM: Fix msr assembly instruction use for Thumb2.
Manoj Gupta [Wed, 27 Sep 2017 09:29:57 +0000 (09:29 +0000)]
[Builtins] ARM: Fix msr assembly instruction use for Thumb2.

Summary:
MSR instruction in Thumb2 does not support immediate operand.
Fix this by moving the condition for V7-M to Thumb2 since V7-M support
Thumb2 only. With this change, aeabi_cfcmp.s and aeabi_cdcmp.S files can
be assembled in Thumb2 mode. (This is split out from the review D38227).

Reviewers: compnerd, peter.smith, srhines, weimingz, rengolin, kristof.beyls

Reviewed By: compnerd

Subscribers: aemerson, javed.absar, llvm-commits

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

llvm-svn: 314284

7 years ago[ELF] - Detemplate of HashTableSection<ELFT>
George Rimar [Wed, 27 Sep 2017 09:14:59 +0000 (09:14 +0000)]
[ELF] - Detemplate of HashTableSection<ELFT>

Detemplation of one more synthetic section.

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

llvm-svn: 314283

7 years ago[ELF] - Speedup -r and --emit-relocs
George Rimar [Wed, 27 Sep 2017 09:08:53 +0000 (09:08 +0000)]
[ELF] - Speedup -r and --emit-relocs

This is "Bug 34688 - lld much slower than bfd when linking the linux kernel"

Inside copyRelocations() we have O(N*M) algorithm, where N - amount of
relocations and M - amount of symbols in symbol table. It isincredibly slow
for linking linux kernel.

Patch creates local search tables to speedup.
With this fix link time goes for me from 12.95s to 0.55s what is almost 23x
faster. (used release LLD).

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

llvm-svn: 314282

7 years ago[llvm-cov] Improve const-correctness of filters. NFC.
Sean Eveson [Wed, 27 Sep 2017 08:32:36 +0000 (08:32 +0000)]
[llvm-cov] Improve const-correctness of filters. NFC.

llvm-svn: 314281

7 years ago[ARM] isTruncateFree fix
Sam Parker [Wed, 27 Sep 2017 08:30:45 +0000 (08:30 +0000)]
[ARM] isTruncateFree fix

I implemented isTruncateFree in rL313533, this patch fixes the logic
to match my comment, as the previous logic was too general. Now the
only truncates that are free are i64 -> i32.

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

llvm-svn: 314280

7 years ago[clang-format] Fix FixNamespaceComments when BraceWrapping AfterNamespace is true.
Marek Kurdej [Wed, 27 Sep 2017 07:51:51 +0000 (07:51 +0000)]
[clang-format] Fix FixNamespaceComments when BraceWrapping AfterNamespace is true.

Summary:
NamespaceEndCommentsFixer did not fix namespace comments when the brace opening the namespace was not on the same line as the "namespace" keyword.
It occurs in Allman, GNU and Linux styles and whenever BraceWrapping.AfterNamespace is true.

Before:
```lang=cpp
    namespace a
    {
    void f();
    void g();
    }
```

After:
```lang=cpp
    namespace a
    {
    void f();
    void g();
    } // namespace a
```

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: klimek, cfe-commits

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

llvm-svn: 314279

7 years ago[XRay] initialize all members of YAMLXRayRecord for -Wmissing-field-initializers
Martin Pelikan [Wed, 27 Sep 2017 07:30:48 +0000 (07:30 +0000)]
[XRay] initialize all members of YAMLXRayRecord for -Wmissing-field-initializers

llvm-svn: 314278

7 years ago[X86] Fix SJLJ struct offsets for x86_64
Martin Storsjo [Wed, 27 Sep 2017 06:08:23 +0000 (06:08 +0000)]
[X86] Fix SJLJ struct offsets for x86_64

This is necessary, but not sufficient, for having working SJLJ exception
handling on x86_64.

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

llvm-svn: 314277

7 years ago[X86] Remove erroneous callsite offsetting in SJLJ landing pads
Martin Storsjo [Wed, 27 Sep 2017 06:08:16 +0000 (06:08 +0000)]
[X86] Remove erroneous callsite offsetting in SJLJ landing pads

The callsite value is already stored indexed from 0 in
the _Unwind_Context struct. When accessed via the functions
_Unwind_GetIP and _Unwind_SetIP, the value is indexed from 1,
but those functions handle the offseting. When reading directly
from the struct here, we shouldn't subtract 1.

This matches the code generated by the ARM target, where SJLJ
exception handling is used by default on iOS.

This makes clang-built object files for 32 bit x86 mingw work when
linked with libgcc/libstdc++.

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

llvm-svn: 314276

7 years ago[X86] Correct byte offsets and data types in a comment. NFC.
Martin Storsjo [Wed, 27 Sep 2017 06:08:04 +0000 (06:08 +0000)]
[X86] Correct byte offsets and data types in a comment. NFC.

This matches the types of the struct members defined in
lib/CodeGen/SjLjEHPrepare.cpp, and the definition of this struct in libgcc.

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

llvm-svn: 314275

7 years ago[X86] Use extract128BitVector in LowerMULH so we can extract from constant build...
Craig Topper [Wed, 27 Sep 2017 06:04:55 +0000 (06:04 +0000)]
[X86] Use extract128BitVector in LowerMULH so we can extract from constant build vectors.

llvm-svn: 314274

7 years agoMemorySSAUpdater: Only add phis to insertedphis if we actually inserted them, not...
Daniel Berlin [Wed, 27 Sep 2017 05:35:19 +0000 (05:35 +0000)]
MemorySSAUpdater: Only add phis to insertedphis if we actually inserted them, not if we just found existing ones

llvm-svn: 314273

7 years ago[X86] Add avx512bw command lines to the 256-bit vector idiv tests.
Craig Topper [Wed, 27 Sep 2017 05:17:15 +0000 (05:17 +0000)]
[X86] Add avx512bw command lines to the 256-bit vector idiv tests.

Some of the operations are being sign extended to 512 bits with avx512bw.

llvm-svn: 314272

7 years ago[SelectionDAG] Make NewSDValueDbgMsg print target specific nodes correctly by passing...
Craig Topper [Wed, 27 Sep 2017 05:17:14 +0000 (05:17 +0000)]
[SelectionDAG] Make NewSDValueDbgMsg print target specific nodes correctly by passing in the SelectionDAG.

llvm-svn: 314271

7 years ago[XRay] fix the -Werror build by handling all enum cases in switches
Martin Pelikan [Wed, 27 Sep 2017 05:10:31 +0000 (05:10 +0000)]
[XRay] fix the -Werror build by handling all enum cases in switches

Followup to D32840.

llvm-svn: 314270

7 years ago[XRay] convert FDR arg1 log entries
Martin Pelikan [Wed, 27 Sep 2017 04:48:03 +0000 (04:48 +0000)]
[XRay] convert FDR arg1 log entries

Summary:
A new FDR metadata record will support logging a function call argument;
appending multiple metadata records will represent a sequence of arguments
meaning that "holes" are not representable by the buffer format.  Each
call argument is currently a 64-bit value (useful for "this" pointers and
synchronization objects).

If present, we put this argument to the function call "entry" record it
belongs to, and alter its type to notify the user of its presence.

Reviewers: dberris

Subscribers: llvm-commits

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

llvm-svn: 314269

7 years agoAdd test forgotten in r314262.
Erich Keane [Wed, 27 Sep 2017 03:23:02 +0000 (03:23 +0000)]
Add test forgotten in r314262.

llvm-svn: 314268

7 years agoFix capitalization of a bunch of parameters in SemaDeclAttr [NFC]
Erich Keane [Wed, 27 Sep 2017 03:20:13 +0000 (03:20 +0000)]
Fix capitalization of a bunch of parameters in SemaDeclAttr [NFC]

llvm-svn: 314267

7 years ago[SimplifyIndVar] Constant fold IV users
Hongbin Zheng [Wed, 27 Sep 2017 03:11:46 +0000 (03:11 +0000)]
[SimplifyIndVar] Constant fold IV users

This patch tries to transform cases like:

for (unsigned i = 0; i < N; i += 2) {
  bool c0 = (i & 0x1) == 0;
  bool c1 = ((i + 1) & 0x1) == 1;
}
To

for (unsigned i = 0; i < N; i += 2) {
  bool c0 = true;
  bool c1 = true;
}

This commit also update test/Transforms/IndVarSimplify/replace-srem-by-urem.ll to prevent constant folding.

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

llvm-svn: 314266

7 years agoUpdate ABIMacOSX_arm::PrepareTrivialCall to correctly align the
Jason Molenda [Wed, 27 Sep 2017 02:49:18 +0000 (02:49 +0000)]
Update ABIMacOSX_arm::PrepareTrivialCall to correctly align the
stack pointer for apple's armv7 ABI.  When in a frameless function
or in a prologue/epilogue where sp wasn't properly aligned, we could
try to make function calls with an unaligned sp; the expression
would crash.

llvm-svn: 314265

7 years ago[clang-format] Adjust space around &/&& of structured bindings
Chih-Hung Hsieh [Wed, 27 Sep 2017 00:58:45 +0000 (00:58 +0000)]
[clang-format] Adjust space around &/&& of structured bindings

Keep space before or after the &/&& tokens, but not both. For example,
  auto [x,y] = a;
  auto &[xr, yr] = a; // LLVM style
  auto& [xr, yr] = a; // google style

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

llvm-svn: 314264

7 years agoReland: [llvm-objcopy] Add support for dynamic relocations
Jake Ehrlich [Wed, 27 Sep 2017 00:44:00 +0000 (00:44 +0000)]
Reland: [llvm-objcopy] Add support for dynamic relocations

This change adds support for dynamic relocations (allocated
SHT_REL/SHT_RELA sections with a dynamic symbol table as their link).

I had to reland this because of a I wasn't initilizing some pointers.

llvm-svn: 314263

7 years agoEmit section information for extern variables.
Erich Keane [Tue, 26 Sep 2017 23:42:34 +0000 (23:42 +0000)]
Emit section information for extern variables.

Currently, if _attribute_((section())) is used for extern variables,
section information is not emitted in generated IR when the variables are used.
This is expected since sections are not generated for external linkage objects.
However NiosII requires this information as it uses special GP-relative accesses
for any objects that use attribute section (.sdata). GCC keeps this attribute in
  middle-end.

This change emits the section information for all targets.

Patch By: Elizabeth Andrews

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

llvm-svn: 314262

7 years agoAdd missing HAVE_LLVM define to fix build with latest llvm
Jan Vesely [Tue, 26 Sep 2017 23:15:54 +0000 (23:15 +0000)]
Add missing HAVE_LLVM define to fix build with latest llvm

Broken since r314111

V2: pointed out by Jan Vesely
   - Use format() instead of % formating

Patch-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 314261

7 years ago[libcxx] [test] Fix unused local typedef warnings.
Stephan T. Lavavej [Tue, 26 Sep 2017 23:08:43 +0000 (23:08 +0000)]
[libcxx] [test] Fix unused local typedef warnings.

llvm-svn: 314259

7 years ago[libcxx] [test] Strip trailing whitespace.
Stephan T. Lavavej [Tue, 26 Sep 2017 23:08:41 +0000 (23:08 +0000)]
[libcxx] [test] Strip trailing whitespace.

llvm-svn: 314258

7 years ago[libcxx] [test] Silence warning C4324 for MSVC.
Stephan T. Lavavej [Tue, 26 Sep 2017 23:08:39 +0000 (23:08 +0000)]
[libcxx] [test] Silence warning C4324 for MSVC.

This warning "structure was padded due to alignment specifier" says
that the compiler is going to do exactly what you asked it to do.
It's triggered by the tests for over-aligned dynamic memory allocation.

llvm-svn: 314257

7 years agoInitialize the RelocationSectionBase::Section member.
James Y Knight [Tue, 26 Sep 2017 22:44:01 +0000 (22:44 +0000)]
Initialize the RelocationSectionBase::Section member.

In r314227, it wasn't always, and would thus contain random garbage.

llvm-svn: 314256

7 years ago[Builtins] Use 4 byte alignment for __aeabi_memclr.
Manoj Gupta [Tue, 26 Sep 2017 22:37:08 +0000 (22:37 +0000)]
[Builtins] Use 4 byte alignment for __aeabi_memclr.

Summary:
Align __aeabi_memclr to 4 bytes. All other ARM functions are already aligned to
4-bytes in compiler-rt.
(Split off from review D38227)

Reviewers: compnerd, peter.smith, srhines, weimingz, rengolin, kristof.beyls

Reviewed By: compnerd

Subscribers: aemerson, javed.absar, llvm-commits

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

llvm-svn: 314255

7 years ago[Dominators] Invalidate DFS numbers upon edge deletions
Jakub Kuderski [Tue, 26 Sep 2017 21:56:55 +0000 (21:56 +0000)]
[Dominators] Invalidate DFS numbers upon edge deletions

This patch makes DeleteEdge correctly invalidate DFS numbers in the
incremental updater. This should fix PR34466 and related bugs.

llvm-svn: 314254

7 years ago[BypassSlowDivision] Improve our handling of divisions by constants
Sanjoy Das [Tue, 26 Sep 2017 21:54:27 +0000 (21:54 +0000)]
[BypassSlowDivision] Improve our handling of divisions by constants

Summary:
Don't bail out on constant divisors for divisions that can be narrowed without
introducing control flow .  This gives us a 32 bit multiply instead of an
emulated 64 bit multiply in the generated PTX assembly.

Reviewers: jlebar

Subscribers: jholewinski, mcrosier, llvm-commits

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

llvm-svn: 314253

7 years ago[AArch64][Falkor] Fix bug in falkor prefetcher fix pass.
Geoff Berry [Tue, 26 Sep 2017 21:40:46 +0000 (21:40 +0000)]
[AArch64][Falkor] Fix bug in falkor prefetcher fix pass.

Summary:
In rare cases, loads that don't get prefetched that were marked as
strided loads could cause a crash if they occurred in a loop with other
colliding loads.

Reviewers: mcrosier

Subscribers: aemerson, rengolin, javed.absar, kristof.beyls

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

llvm-svn: 314252

7 years ago[AArch64][Falkor] Fix correctness bug in falkor prefetcher fix pass and correct some...
Geoff Berry [Tue, 26 Sep 2017 21:40:41 +0000 (21:40 +0000)]
[AArch64][Falkor] Fix correctness bug in falkor prefetcher fix pass and correct some opcode tag computations.

Summary:
This addresses a correctness bug for LD[1234]*_POST opcodes that have
the prefetcher fix applied to them: the base register was not being
written back from the temp after being incremented, so it would appear
to never be incremented.

Also, fix some opcode tag computations based on some updated HW details
to get better tag avoidance and thus better prefetcher performance.

Reviewers: mcrosier

Subscribers: aemerson, rengolin, javed.absar, kristof.beyls

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

llvm-svn: 314251

7 years ago[X86] Fix register class name in a comment. NFC
Craig Topper [Tue, 26 Sep 2017 21:35:11 +0000 (21:35 +0000)]
[X86] Fix register class name in a comment. NFC

llvm-svn: 314250

7 years agoRecommit r314151 "[X86] Make all the NOREX CodeGenOnly instructions into postRA pseud...
Craig Topper [Tue, 26 Sep 2017 21:35:09 +0000 (21:35 +0000)]
Recommit r314151 "[X86] Make all the NOREX CodeGenOnly instructions into postRA pseudos like the NOREX version of TEST.""

The late MOV8rr_NOREX that caused the crash has been removed.

llvm-svn: 314249

7 years ago[X86] Don't emit X86::MOV8rr_NOREX from X86InstrInfo::copyPhysReg.
Craig Topper [Tue, 26 Sep 2017 21:35:06 +0000 (21:35 +0000)]
[X86] Don't emit X86::MOV8rr_NOREX from X86InstrInfo::copyPhysReg.

This hook is called after register allocation with two physical registers. We don't need a separate instruction at that time to force register class constraints. I left in the assert though. We also have a fatal error in X86MCCodeEmitter if we ever encode an H-reg and a REX prefix.

llvm-svn: 314248

7 years ago[X86] Fix typo in comment. NFC
Craig Topper [Tue, 26 Sep 2017 21:35:04 +0000 (21:35 +0000)]
[X86] Fix typo in comment. NFC

llvm-svn: 314247

7 years agoFix uninitialized member found by msan build bot.
Richard Smith [Tue, 26 Sep 2017 21:33:43 +0000 (21:33 +0000)]
Fix uninitialized member found by msan build bot.

llvm-svn: 314246

7 years ago[WebAssembly] Model weakly defined symbols as wasm exports
Sam Clegg [Tue, 26 Sep 2017 21:10:09 +0000 (21:10 +0000)]
[WebAssembly] Model weakly defined symbols as wasm exports

Previously these were being included as both imports and
exports, with the import being satisfied by the export
(or some strong symbol) at runtime.  However proved
unnecessary and actually complicated linking as it meant
there was not a 1-to-1 mapping between a wasm function
/global index and a linker symbol.

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

llvm-svn: 314245

7 years ago[PowerPC] Reverting sequence of patches for elimination of comparison instructions
Nemanja Ivanovic [Tue, 26 Sep 2017 20:42:47 +0000 (20:42 +0000)]
[PowerPC] Reverting sequence of patches for elimination of comparison instructions

In the past while, I've committed a number of patches in the PowerPC back end
aimed at eliminating comparison instructions. However, this causes some failures
in proprietary source and these issues are not observed in SPEC or any open
source packages I've been able to run.
As a result, I'm pulling the entire series and will refactor it to:
- Have a single entry point for easy control
- Have fine-grained control over which patterns we transform

A side-effect of this is that test cases for these patches (and modified by
them) are XFAIL-ed. This is a temporary measure as it is counter-productive
to remove/modify these test cases and then have to modify them again when
the refactored patch is recommitted.
The failure will be investigated in parallel to the refactoring effort and
the recommit will either have a fix for it or will leave this transformation
off by default until the problem is resolved.

llvm-svn: 314244

7 years agoAllow printing of KMP_TOPOLOGY_METHOD when KMP_SETTINGS=true
Jonathan Peyton [Tue, 26 Sep 2017 20:33:53 +0000 (20:33 +0000)]
Allow printing of KMP_TOPOLOGY_METHOD when KMP_SETTINGS=true

llvm-svn: 314243

7 years agoRemove unused t_single_lock
Jonathan Peyton [Tue, 26 Sep 2017 20:12:16 +0000 (20:12 +0000)]
Remove unused t_single_lock

Add padding inside team structure to keep same structure size.

llvm-svn: 314242

7 years agoSema: rename SemaBuiltinVAStart to SemaBuiltinVAStartMicrosoft
Saleem Abdulrasool [Tue, 26 Sep 2017 20:12:04 +0000 (20:12 +0000)]
Sema: rename SemaBuiltinVAStart to SemaBuiltinVAStartMicrosoft

This function is used to perform semantic analysis on Microsoft style
`__va_start`.  Rename it to make this more explicit.  `__va_start` is
marked as `ALL_MS_LANGUAGES`, and requires Microsoft compatibility.
Other GNU targets will use `__builtin_va_start` instead.  NFC.

Addresses post-commit review comments from David Majnemer.

llvm-svn: 314241

7 years agoRevert commmit 314228.
Gheorghe-Teodor Bercea [Tue, 26 Sep 2017 19:58:23 +0000 (19:58 +0000)]
Revert commmit 314228.

llvm-svn: 314240

7 years agoBasic: support Preserve{Most,All} CC on Windows
Saleem Abdulrasool [Tue, 26 Sep 2017 19:26:01 +0000 (19:26 +0000)]
Basic: support Preserve{Most,All} CC on Windows

Add support for the `preserve_mostcc` and `preserve_allcc` on Windows
x86_64 and AArch64.  This is used by Swift.

llvm-svn: 314236

7 years agoAllow IUnknown/IInterface types to come from extern C++
Erich Keane [Tue, 26 Sep 2017 18:55:16 +0000 (18:55 +0000)]
Allow IUnknown/IInterface types to come from extern C++

It was brought up in response to my last implementation for
this struct-as-interface features that at least 1 header in
the MS SDK uses "extern C++" around an IUnknown declaration.

The previous implementation demanded that this type exist
in the TranslationUnit DeclContext.  This small change simply
also allows in the situation where we're extern "C++".

llvm-svn: 314235

7 years ago[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess (VF...
Michael Zuckerman [Tue, 26 Sep 2017 18:49:11 +0000 (18:49 +0000)]
[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess (VF{8|16|32} stride 3)

This patch expands the support of lowerInterleavedStore to {8|16|32}x8i stride 3.

LLVM creates suboptimal shuffle code-gen for AVX2. In overall, this patch is a specific fix for the pattern (Strid=3 VF={8|16|32}) .
This patch is part two of two patches and it covers the store (interlevaed) side.

The patch goal is to optimize the following sequence:
a0 a1 a2 a3 a4 a5 a6 a7
b0 b1 b2 b3 b4 b5 b6 b7
c0 c1 c2 c3 c4 c5 c6 c7

into
a0 b0 c0 a1 b1 c1 a2 b2
c2 a3 b3 c3 a4 b4 c4 a5
b5 c5 a6 b6 c6 a7 b7 c7

Reviewers:
zvi
guyblank
dorit
Ayal

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

Change-Id: I56ced8bcbea809a37654060771911ade20246ccc
llvm-svn: 314234

7 years ago[InstCombine] Remove one use restriction on the shift for calls to foldICmpAndShift.
Craig Topper [Tue, 26 Sep 2017 18:47:25 +0000 (18:47 +0000)]
[InstCombine] Remove one use restriction on the shift for calls to foldICmpAndShift.

If this transformation succeeds, we're going to remove our dependency on the shift by rewriting the and. So it doesn't matter how many uses the shift has.

This distributes the one use check to other transforms in foldICmpAndConstConst that do need it.

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

llvm-svn: 314233

7 years agoDelete trailing whitespace.
Nico Weber [Tue, 26 Sep 2017 18:38:56 +0000 (18:38 +0000)]
Delete trailing whitespace.

llvm-svn: 314232

7 years agoResolve a defect in C++17 copy omission.
Richard Smith [Tue, 26 Sep 2017 18:37:55 +0000 (18:37 +0000)]
Resolve a defect in C++17 copy omission.

When selecting constructors for initializing an object of type T from a single
expression of class type U, also consider conversion functions of U that
convert to T (rather than modeling such conversions as calling a conversion
function and then calling a constructor).

This approach is proposed as the resolution for the defect, and is also already
implemented by GCC.

llvm-svn: 314231

7 years ago[WebAssembly] Use function/global index space in WasmSymbol
Sam Clegg [Tue, 26 Sep 2017 18:21:12 +0000 (18:21 +0000)]
[WebAssembly] Use function/global index space in WasmSymbol

It is useful for the symbol to contain the index of the
function of global it represents in the function/global
index space.

For imports we also store the import index so that the
linker can find, for example, the signature of the
corresponding function, which is defined by the import

In the long run we need to decide whether this API
surface should be closer to binary (where imported
functions are seperate) or the wasm spec (where the
function index space is unified).

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

llvm-svn: 314230

7 years ago[Sema] Corrected the warn-on-throw-from-noexcept behavior to include nothrow
Erich Keane [Tue, 26 Sep 2017 18:20:39 +0000 (18:20 +0000)]
[Sema] Corrected the warn-on-throw-from-noexcept behavior to include nothrow

Discovered that 'nothrow' (which is supposed to be an alias for noexcept)
was not warning with a throw inside of it. This patch corrects the behavior
previously created to add 'nothrow' to this list.

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

llvm-svn: 314229

7 years ago[OpenMP] Add an additional test for D34888
Gheorghe-Teodor Bercea [Tue, 26 Sep 2017 18:12:12 +0000 (18:12 +0000)]
[OpenMP] Add an additional test for D34888

Summary: Test for checking if the mapping is performed correctly. This is a test initially included in Patch https://reviews.llvm.org/D29905

Reviewers: Hahnfeld, carlo.bertolli, caomhin

Reviewed By: Hahnfeld

Subscribers: tra, cfe-commits

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

llvm-svn: 314228

7 years ago[llvm-objcopy] Add support for dynamic relocations
Jake Ehrlich [Tue, 26 Sep 2017 18:02:25 +0000 (18:02 +0000)]
[llvm-objcopy] Add support for dynamic relocations

This change adds support for dynamic relocations (allocated
SHT_REL/SHT_RELA sections with a dynamic symbol table as their link).

The binary I added for the test is here:
https://drive.google.com/file/d/0B3gtIAmiMwZXSjJUZE9pUjd4M0k/view?usp=sharing

Unless support for dynamic symbol tables in yaml2obj is added this is
needed.

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

llvm-svn: 314227

7 years agoSema: Windows/ARM __va_start is not const correct
Saleem Abdulrasool [Tue, 26 Sep 2017 17:44:10 +0000 (17:44 +0000)]
Sema: Windows/ARM __va_start is not const correct

The `__va_start` intrinsic for Windows ARM does not account for const
correctness when performing a check.  All local qualifiers are ignored
when validating the invocation.  This was exposed by building the swift
stdlib against the Windows 10586 SDK for ARM.  Simply expand out the
check for the two parameters and ignore the qualifiers for the check.

llvm-svn: 314226

7 years ago[Expression Parser] Inhibit global lookups for symbols in the IR dynamic checks
Sean Callanan [Tue, 26 Sep 2017 17:25:34 +0000 (17:25 +0000)]
[Expression Parser] Inhibit global lookups for symbols in the IR dynamic checks

The IR dynamic checks are self-contained functions whose job is to

- verify that pointers referenced in an expression are valid at runtime; and
- verify that selectors sent to Objective-C objects by an expression are
  actually supported by that object.

These dynamic checks forward-declare all the functions they use and should not
require any external debug information. The way they ensure this is by marking
all the names they use with a dollar sign ($). The expression parser recognizes
such symbols and perform no lookups for them.

This patch fixes three issues surrounding the use of the dollar sign:

- to fix a MIPS issue, the name of the pointer checker was changed from
  starting with $ to starting with _$, but this was not properly ignored; and
- the Objective-C object checker used a temporary variable that did not start
  with $.
- the Objective-C object checker used an externally-defined struct (struct
  objc_selector) but didn't need to.

The patch also implements some cleanup in the area:

- it reformats the string containing the Objective-C object checker,
  which was mangled horribly when the code was transformed to a uniform width
  of 80 columns, and
- it factors out the logic for ignoring global $-symbols into common code
  shared between ClangASTSource and ClangExpressionDeclMap.

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

llvm-svn: 314225

7 years ago[scudo] Scudo thread specific data refactor, part 3
Kostya Kortchinsky [Tue, 26 Sep 2017 17:20:02 +0000 (17:20 +0000)]
[scudo] Scudo thread specific data refactor, part 3

Summary:
Previous parts: D38139, D38183.

In this part of the refactor, we abstract the Linux vs Android TSD dissociation
in favor of a Exclusive vs Shared one, allowing for easier platform introduction
and configuration.

Most of this change consist of shuffling the files around to reflect the new
organization.

We introduce `scudo_platform.h` where platform specific definition lie. This
involves the TSD model and the platform specific allocator parameters. In an
upcoming CL, those will be configurable via defines, but we currently stick
with conservative defaults.

Reviewers: alekseyshl, dvyukov

Reviewed By: alekseyshl, dvyukov

Subscribers: srhines, llvm-commits, mgorny

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

llvm-svn: 314224

7 years ago[NVPTX] added match.{any,all}.sync instructions, intrinsics & builtins.
Artem Belevich [Tue, 26 Sep 2017 17:07:23 +0000 (17:07 +0000)]
[NVPTX] added match.{any,all}.sync instructions, intrinsics & builtins.

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

llvm-svn: 314223

7 years ago[mips] Use llvm-dwarfdump to simplify the test. NFC
Simon Atanasyan [Tue, 26 Sep 2017 17:02:35 +0000 (17:02 +0000)]
[mips] Use llvm-dwarfdump to simplify the test. NFC

llvm-svn: 314222

7 years ago[X86] Add support for v16i32 UMUL_LOHI/SMUL_LOHI
Craig Topper [Tue, 26 Sep 2017 16:43:57 +0000 (16:43 +0000)]
[X86] Add support for v16i32 UMUL_LOHI/SMUL_LOHI

Summary: This patch extends the v8i32/v4i32 custom lowering to support v16i32

Reviewers: zvi, RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

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

llvm-svn: 314221

7 years ago[OPENMP] Fix handling of implicit mapping of array sections.
Alexey Bataev [Tue, 26 Sep 2017 16:19:04 +0000 (16:19 +0000)]
[OPENMP] Fix handling of implicit mapping of array sections.

llvm-svn: 314220

7 years agoInvalidate symbolizer module list from dlopen/dlclose interceptors
Francis Ricci [Tue, 26 Sep 2017 16:12:56 +0000 (16:12 +0000)]
Invalidate symbolizer module list from dlopen/dlclose interceptors

Summary:
The module list should only be invalidated by dlopen and dlclose,
so the symbolizer should only re-generate it when we've hit one of those functions.

Reviewers: kubamracek, rnk, vitalybuka

Subscribers: llvm-commits

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

llvm-svn: 314219

7 years ago[analyzer] Keep track of design discusions as part of analyzer documentation.
Artem Dergachev [Tue, 26 Sep 2017 15:49:53 +0000 (15:49 +0000)]
[analyzer] Keep track of design discusions as part of analyzer documentation.

Create a directory to store discussions on potentially useful features that are
not yet implemented in the analyzer.

Fill it with a discussion on representing checker-specific parts of the program
state for C++ object modeling, that occured in D35216.

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

llvm-svn: 314218

7 years ago[OpenMP] Don't throw cudalib not found error if only front-end is required.
Gheorghe-Teodor Bercea [Tue, 26 Sep 2017 15:36:20 +0000 (15:36 +0000)]
[OpenMP] Don't throw cudalib not found error if only front-end is required.

Summary: If we only use the compiler front-end, do not throw an error about the cuda device library not being found. This allows the front-end to be run on systems where no Cuda installation is found.

Reviewers: Hahnfeld, ABataev, carlo.bertolli, caomhin, tra

Reviewed By: tra

Subscribers: hfinkel, tra, cfe-commits

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

llvm-svn: 314217

7 years ago[Hexagon] Fix a typo: #ifndef DEBUG -> #ifndef NDEBUG
Krzysztof Parzyszek [Tue, 26 Sep 2017 15:31:15 +0000 (15:31 +0000)]
[Hexagon] Fix a typo: #ifndef DEBUG -> #ifndef NDEBUG

llvm-svn: 314216

7 years agoRevert commit 314210.
Gheorghe-Teodor Bercea [Tue, 26 Sep 2017 15:24:34 +0000 (15:24 +0000)]
Revert commit 314210.

llvm-svn: 314215

7 years ago[Hexagon] Fix initialization of HexagonSubtarget
Krzysztof Parzyszek [Tue, 26 Sep 2017 15:06:37 +0000 (15:06 +0000)]
[Hexagon] Fix initialization of HexagonSubtarget

Make sure that "initializeSubtargetDependencies" sets all members that
InstrInfo and the like may depend on.

llvm-svn: 314214

7 years ago[mips] Accept but ignore -m(no-)branch-likely
Simon Dardis [Tue, 26 Sep 2017 15:01:21 +0000 (15:01 +0000)]
[mips] Accept but ignore -m(no-)branch-likely

-mbranch-likely and -mno-branch-likely are used in some build systems for
some MIPS targets. Accept these options but ignore them as they are an
(de)optimiztion hint, and that branch likely instructions were deprecated
but not removed from MIPS32 and MIPS64 ISAs.

Reviewers: atanasyan, nitesh.jain

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

llvm-svn: 314213

7 years ago[ScopInfo] Allow PHI nodes that reference an error block
Tobias Grosser [Tue, 26 Sep 2017 15:00:10 +0000 (15:00 +0000)]
[ScopInfo] Allow PHI nodes that reference an error block

As long as these PHI nodes are only referenced by terminator instructions.

llvm-svn: 314212

7 years ago[clang-format] Add ext/ to google include categories
Krasimir Georgiev [Tue, 26 Sep 2017 14:58:29 +0000 (14:58 +0000)]
[clang-format] Add ext/ to google include categories

Summary: This adds an ext/ header include category for google style.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, klimek

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

llvm-svn: 314211

7 years ago[OpenMP] Add an additional test for D34888
Gheorghe-Teodor Bercea [Tue, 26 Sep 2017 14:56:50 +0000 (14:56 +0000)]
[OpenMP] Add an additional test for D34888

Summary: Test for checking if the mapping is performed correctly. This is a test initially included in Patch https://reviews.llvm.org/D29905

Reviewers: Hahnfeld, carlo.bertolli, caomhin

Reviewed By: Hahnfeld

Subscribers: tra, cfe-commits

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

llvm-svn: 314210

7 years agoFix TBAA information for reference accesses
Ivan A. Kosarev [Tue, 26 Sep 2017 14:22:48 +0000 (14:22 +0000)]
Fix TBAA information for reference accesses

This patch fixes clang to decorate reference accesses as pointers
and not as "omnipotent chars".

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

llvm-svn: 314209

7 years ago[dwarfdump] Skip 'stripped' sections
Jonas Devlieghere [Tue, 26 Sep 2017 14:22:35 +0000 (14:22 +0000)]
[dwarfdump] Skip 'stripped' sections

When dsymutil generates the companion file, its strips all unnecessary
sections by omitting their body and setting the offset in their
corresponding load command to zero.

One such section is the .eh_frame section, as it contains runtime
information rather than debug information and is part of the __TEXT
segment. When reading this section, we would just read the number of
bytes specified in the load command, starting from offset 0 (i.e. the
beginning of the file).

Rather than trying to parse this obviously invalid section, dwarfdump
now skips this.

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

llvm-svn: 314208

7 years ago[X86][XOP] Merge rotation opcodes with AVX512 equivalents. NFCI.
Simon Pilgrim [Tue, 26 Sep 2017 14:12:50 +0000 (14:12 +0000)]
[X86][XOP] Merge rotation opcodes with AVX512 equivalents. NFCI.

The XOP rotations act as ROTL with +ve values and ROTR with -ve values, which means that we can treat them all as ROTL with unsigned modulo. We already check that we're only trying to lower as ROTL for XOP rotations.

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

llvm-svn: 314207

7 years ago[DSE] Merge stores when the later store only writes to memory locations the early...
Sanjay Patel [Tue, 26 Sep 2017 13:54:28 +0000 (13:54 +0000)]
[DSE] Merge stores when the later store only writes to memory locations the early store also wrote to (2nd try)

This is a 2nd attempt at:
https://reviews.llvm.org/rL310055
...which was reverted at rL310123 because of PR34074:
https://bugs.llvm.org/show_bug.cgi?id=34074

In this version, we break out of the inner loop after we successfully merge and kill a pair of stores. In the
earlier rev, we were continuing instead, which meant we could process the invalid info from a now dead store.

Original commit message (authored by Filipe Cabecinhas):

This fixes PR31777.

If both stores' values are ConstantInt, we merge the two stores
(shifting the smaller store appropriately) and replace the earlier (and
larger) store with an updated constant.

In the future we should also support vectors of integers. And maybe
float/double if we can.

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

llvm-svn: 314206

7 years ago[OPENMP] Generate implicit map|firstprivate clauses for target-based
Alexey Bataev [Tue, 26 Sep 2017 13:47:31 +0000 (13:47 +0000)]
[OPENMP] Generate implicit map|firstprivate clauses for target-based
directives.

If the variable is used in the target-based region but is not found in
any private|mapping clause, then generate implicit firstprivate|map
clauses for these implicitly mapped variables.

llvm-svn: 314205

7 years ago[ELF] - Remove wrong comment from testcase.
George Rimar [Tue, 26 Sep 2017 13:35:00 +0000 (13:35 +0000)]
[ELF] - Remove wrong comment from testcase.

It was introduced by me in D37059.
Comment was saying that Weak binding is incorrect
for 'foo' symbol and that should be true for symbol in final output.
But at that place LTO temporarily file was checked,
where Weak binding for 'foo' is fine as LTO changes binding for
'LinkerRedefined' symbols internally to prevent IPO.

Binding for 'foo' in final output is correctly set to Global
and that tested just few lines below in the same testcase.

llvm-svn: 314204

7 years ago[x86] fix pr29061
Coby Tayree [Tue, 26 Sep 2017 13:28:05 +0000 (13:28 +0000)]
[x86] fix pr29061

https://bugs.llvm.org//show_bug.cgi?id=29061
Don't try referencing REX-needed regs when not on 64bit mode
Aligns to GCC

Differetial Revision: https://reviews.llvm.org/D37801

llvm-svn: 314203

7 years agoTidyup P->getComplexPatternInfo call by moving it inside if( != NULL) test. NFCI.
Simon Pilgrim [Tue, 26 Sep 2017 12:59:01 +0000 (12:59 +0000)]
Tidyup P->getComplexPatternInfo call by moving it inside if( != NULL) test. NFCI.

llvm-svn: 314202

7 years agoDon't move llvm.localescape outside the entry block in the GCOV profiling pass
Sylvestre Ledru [Tue, 26 Sep 2017 11:56:43 +0000 (11:56 +0000)]
Don't move llvm.localescape outside the entry block in the GCOV profiling pass

Summary:
This fixes https://bugs.llvm.org/show_bug.cgi?id=34714.

Patch by Marco Castelluccio

Reviewers: rnk

Reviewed By: rnk

Subscribers: llvm-commits

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

llvm-svn: 314201

7 years ago[mips][asan] Fix preinstalled_signal.cc test for mips
Simon Dardis [Tue, 26 Sep 2017 11:49:04 +0000 (11:49 +0000)]
[mips][asan] Fix preinstalled_signal.cc test for mips

Linux for mips has a non-standard layout for the kernel sigaction struct.
Adjust the layout by the minimally amount to get the test to pass, as we
don't require the usage of the restorer function.

llvm-svn: 314200

7 years agoRevert "[X86] Make all the NOREX CodeGenOnly instructions into postRA pseudos like...
Benjamin Kramer [Tue, 26 Sep 2017 10:25:27 +0000 (10:25 +0000)]
Revert "[X86] Make all the NOREX CodeGenOnly instructions into postRA pseudos like the NOREX version of TEST."

Makes llc crash. This reverts commit r314151.

llvm-svn: 314199

7 years ago[dsymutil] Better support for symbol aliases
Jonas Devlieghere [Tue, 26 Sep 2017 08:17:28 +0000 (08:17 +0000)]
[dsymutil] Better support for symbol aliases

This patch adds logic to follow a symbol's aliases when the symbol name
cannot be found in the current object file. It checks the main binary
for the symbol's address and queries the current object for its aliases
(symbols with the same address) before printing out a warning.

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

llvm-svn: 314198

7 years agoSkip building unused parts when targeting SJLJ
Martin Storsjo [Tue, 26 Sep 2017 08:07:26 +0000 (08:07 +0000)]
Skip building unused parts when targeting SJLJ

When SJLJ exceptions are used, those functions aren't used.

This fixes build failures on ARM with SJLJ enabled (e.g. on armv7/iOS)
when built using the CMake project files.

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

llvm-svn: 314197

7 years agoCorrect data types in the _Unwind_FunctionContext struct
Martin Storsjo [Tue, 26 Sep 2017 08:07:17 +0000 (08:07 +0000)]
Correct data types in the _Unwind_FunctionContext struct

This makes it match the definition used within llvm and in libgcc,
we previously got the wrong layout in 64 bit environments.

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

llvm-svn: 314196

7 years ago[X86] Finishing broadcastf32x2 and broadcasti32x2 intrinsics lowering to IR. llvm...
Uriel Korach [Tue, 26 Sep 2017 07:39:39 +0000 (07:39 +0000)]
[X86] Finishing broadcastf32x2 and broadcasti32x2 intrinsics lowering to IR. llvm side.

Removing X86 broadcast(f/i)32x2 intrinsics from llvm.
Adding autoUpgrade support.
Moving matching tests from avx512dq-intrinsics.ll to avx512dq-intrinsics-upgrade.ll and from avx512dqvl-intrinsics.ll to avx512dqvl-intrinsics-upgrade.ll.

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

llvm-svn: 314195

7 years ago[XRay] Avoid actual linking when testing the driver
Dean Michael Berris [Tue, 26 Sep 2017 04:29:25 +0000 (04:29 +0000)]
[XRay] Avoid actual linking when testing the driver

Use -### in the command to see just look for the output of -v.

Follow-up to D38226.

llvm-svn: 314194

7 years ago[XRay] Run command once without piping to FileCheck
Dean Michael Berris [Tue, 26 Sep 2017 04:17:37 +0000 (04:17 +0000)]
[XRay] Run command once without piping to FileCheck

This allows us to debug the failures that come up from the build bots.

Follow-up to D38226.

llvm-svn: 314193

7 years agoSpeed up SymbolTable::insert().
Rui Ueyama [Tue, 26 Sep 2017 04:17:13 +0000 (04:17 +0000)]
Speed up SymbolTable::insert().

SymbolTable::insert() is a hot path function. When linking a clang debug
build, the function is called 3.7 million times. The total amount of "Name"
string contents is 300 MiB. That means this `Name.find("@@")` scans almost
300 MiB of data. That's far from negligible.

StringRef::find(StringRef) uses a sophisticated algorithm, but the
function is slow for a short needle. This patch replaces it with
StringRef::find(char).

This patch alone speeds up a clang debug build link time by 0.5 seconds
from 8.2s to 7.7s. That's 6% speed up. It seems too good for this tiny
change, but looks like it's real.

llvm-svn: 314192

7 years ago[XRay] Only run shared tests when 'enable_shared' is true
Dean Michael Berris [Tue, 26 Sep 2017 04:07:45 +0000 (04:07 +0000)]
[XRay] Only run shared tests when 'enable_shared' is true

Follow-up to D38226.

llvm-svn: 314191

7 years ago[XRay] Remove -fPIC from shared build test.
Dean Michael Berris [Tue, 26 Sep 2017 04:00:41 +0000 (04:00 +0000)]
[XRay] Remove -fPIC from shared build test.

Follow-up to D38226.

llvm-svn: 314190

7 years ago[XRay] Stop running tests for 'amd64', and remove -fPIE from tests.
Dean Michael Berris [Tue, 26 Sep 2017 03:45:37 +0000 (03:45 +0000)]
[XRay] Stop running tests for 'amd64', and remove -fPIE from tests.

Follow-up to D38226.

llvm-svn: 314189