platform/upstream/llvm.git
8 years ago[SelectionDAGBuilder] Support llvm.flt.rounds on targets where i32 is not legal
Hal Finkel [Mon, 10 Oct 2016 20:45:15 +0000 (20:45 +0000)]
[SelectionDAGBuilder] Support llvm.flt.rounds on targets where i32 is not legal

Add integer expansion for FLT_ROUNDS_ for targets where i32 is not a legal
type.

Patch by Edward Jones, thanks!

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

llvm-svn: 283797

8 years ago[ADT] Use () instead of {} in an attempt to work around MSVC 2012 ICEs.
Justin Lebar [Mon, 10 Oct 2016 20:18:02 +0000 (20:18 +0000)]
[ADT] Use () instead of {} in an attempt to work around MSVC 2012 ICEs.

llvm-svn: 283796

8 years agoMake the LValue created in EmitValueForIvarAtOffset have the same Qualifiers in the...
Nick Lewycky [Mon, 10 Oct 2016 20:07:13 +0000 (20:07 +0000)]
Make the LValue created in EmitValueForIvarAtOffset have the same Qualifiers in the LValue as the QualType in the LValue. No functionality change intended.

llvm-svn: 283795

8 years ago[ADT] Don't use make_pointee_iterator in IteratorTest.
Justin Lebar [Mon, 10 Oct 2016 19:56:52 +0000 (19:56 +0000)]
[ADT] Don't use make_pointee_iterator in IteratorTest.

llvm-svn: 283794

8 years agoImplement MS read/write barriers and __faststorefence intrinsic
Albert Gutowski [Mon, 10 Oct 2016 19:40:51 +0000 (19:40 +0000)]
Implement MS read/write barriers and __faststorefence intrinsic

Reviewers: hans, rnk, majnemer

Subscribers: cfe-commits

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

llvm-svn: 283793

8 years agoUse StringRef in TableGen generated Intrinsics.gen file (NFC)
Mehdi Amini [Mon, 10 Oct 2016 19:31:09 +0000 (19:31 +0000)]
Use StringRef in TableGen generated Intrinsics.gen file (NFC)

llvm-svn: 283792

8 years ago[ADT] Remove make_pointe{e,r}_iterator, because it seems to crash MSVC 2015.
Justin Lebar [Mon, 10 Oct 2016 19:29:37 +0000 (19:29 +0000)]
[ADT] Remove make_pointe{e,r}_iterator, because it seems to crash MSVC 2015.

llvm-svn: 283791

8 years ago[AST] Don't use make_pointee_iterator in VTableBuilder.
Justin Lebar [Mon, 10 Oct 2016 19:26:22 +0000 (19:26 +0000)]
[AST] Don't use make_pointee_iterator in VTableBuilder.

Our implementation of make_pointee_iterator seems to be causing MSVC
2015 to crash, so I'm going to remove it.

llvm-svn: 283790

8 years agoRe-commit r283722, reverted in r283750, with a fix for a CUDA-specific use of
Richard Smith [Mon, 10 Oct 2016 18:54:32 +0000 (18:54 +0000)]
Re-commit r283722, reverted in r283750, with a fix for a CUDA-specific use of
past-the-end iterator.

Original commit message:

P0035R4: Semantic analysis and code generation for C++17 overaligned
allocation.

llvm-svn: 283789

8 years ago[libcxx] Add support for Fuchsia
Petr Hosek [Mon, 10 Oct 2016 18:53:32 +0000 (18:53 +0000)]
[libcxx] Add support for Fuchsia

Fuchsia is a new operating system which uses musl as the standard
C library, libc++ and libc++abi as the C++ standard library.

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

llvm-svn: 283788

8 years ago[LTO/Thin] Make the number of threads to run in the BE configurable.
Davide Italiano [Mon, 10 Oct 2016 18:12:53 +0000 (18:12 +0000)]
[LTO/Thin] Make the number of threads to run in the BE configurable.

Before the default was whatever number hardware_concurrency() returned.
Users can specify the number of threads via --lto-jobs=X option.

llvm-svn: 283787

8 years agoRemove trailing whitespace.
Rui Ueyama [Mon, 10 Oct 2016 18:10:01 +0000 (18:10 +0000)]
Remove trailing whitespace.

llvm-svn: 283786

8 years agoImplement __emul, __emulu, _mul128 and _umul128 MS intrinsics
Albert Gutowski [Mon, 10 Oct 2016 18:09:27 +0000 (18:09 +0000)]
Implement __emul, __emulu, _mul128 and _umul128 MS intrinsics

Reviewers: rnk, thakis, majnemer, hans

Subscribers: cfe-commits

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

llvm-svn: 283785

8 years agoTeach llvm::StripDebugInfo() about global variable !dbg attachments.
Adrian Prantl [Mon, 10 Oct 2016 17:53:33 +0000 (17:53 +0000)]
Teach llvm::StripDebugInfo() about global variable !dbg attachments.
This is a regression introduced by the global variable ownership
reversal performed in r281284.

rdar://problem/28448075

llvm-svn: 283784

8 years ago[ADT] Attempt to fix MSVC 2015 ICE via judicious addition of std::decay to make_point...
Justin Lebar [Mon, 10 Oct 2016 17:18:45 +0000 (17:18 +0000)]
[ADT] Attempt to fix MSVC 2015 ICE via judicious addition of std::decay to make_pointe{r,e}_iterator.

llvm-svn: 283783

8 years agoUpdate documentation after r283671 ("Turn cl::values() (for enum) from a vararg funct...
Mehdi Amini [Mon, 10 Oct 2016 17:13:14 +0000 (17:13 +0000)]
Update documentation after r283671 ("Turn cl::values() (for enum) from a vararg function to using C++ variadic template")

llvm-svn: 283782

8 years agoUpdated notes about issues; marked 2062, 2223, 2394, 2460 and 2540 as complete.
Marshall Clow [Mon, 10 Oct 2016 17:11:37 +0000 (17:11 +0000)]
Updated notes about issues; marked 2062, 2223, 2394, 2460 and 2540 as complete.

llvm-svn: 283781

8 years agoAdd tests to check that swap(std::function, std::function) is noexcept. This is LWG...
Marshall Clow [Mon, 10 Oct 2016 16:47:48 +0000 (16:47 +0000)]
Add tests to check that swap(std::function, std::function) is noexcept. This is LWG#2062, but we already do this. No changes to the library, just adding tests.

llvm-svn: 283780

8 years agoAdd llvm::apply to STLExtras.
Zachary Turner [Mon, 10 Oct 2016 16:44:09 +0000 (16:44 +0000)]
Add llvm::apply to STLExtras.

This is equivalent to the C++14 std::apply().  Since we are not
using C++14 yet, this allows us to still make use of apply anyway.

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

llvm-svn: 283779

8 years ago[Examples] Fix use of sema.LateParsedTemplateMap in clang/examples.
Justin Lebar [Mon, 10 Oct 2016 16:41:00 +0000 (16:41 +0000)]
[Examples] Fix use of sema.LateParsedTemplateMap in clang/examples.

llvm-svn: 283778

8 years ago[clang-tidy] Add a whitelist option in google-runtime-references.
Haojian Wu [Mon, 10 Oct 2016 16:38:11 +0000 (16:38 +0000)]
[clang-tidy] Add a whitelist option in google-runtime-references.

Reviewers: aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 283777

8 years agoUse StringRef in LangOptions::isNoBuiltinFunc API (NFC)
Mehdi Amini [Mon, 10 Oct 2016 16:34:07 +0000 (16:34 +0000)]
Use StringRef in LangOptions::isNoBuiltinFunc API (NFC)

llvm-svn: 283776

8 years ago[Analysis] Use unique_ptr for CallGraph::FunctionMap.
Justin Lebar [Mon, 10 Oct 2016 16:26:48 +0000 (16:26 +0000)]
[Analysis] Use unique_ptr for CallGraph::FunctionMap.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283775

8 years ago[Analysis] Use unique_ptr in AnalyaisDeclContextManager's ContextMap.
Justin Lebar [Mon, 10 Oct 2016 16:26:44 +0000 (16:26 +0000)]
[Analysis] Use unique_ptr in AnalyaisDeclContextManager's ContextMap.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283774

8 years ago[AST] Convert Marshallers to use unique_ptr.
Justin Lebar [Mon, 10 Oct 2016 16:26:40 +0000 (16:26 +0000)]
[AST] Convert Marshallers to use unique_ptr.

Reviewers: timshen

Subscribers: cfe-commits, klimek

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

llvm-svn: 283773

8 years agoUse unique_ptr for VTableBuilder::VBaseInfo map.
Justin Lebar [Mon, 10 Oct 2016 16:26:36 +0000 (16:26 +0000)]
Use unique_ptr for VTableBuilder::VBaseInfo map.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283772

8 years agoUse unique_ptr for VTableBuilder::VFTableLayouts map.
Justin Lebar [Mon, 10 Oct 2016 16:26:33 +0000 (16:26 +0000)]
Use unique_ptr for VTableBuilder::VFTableLayouts map.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283771

8 years agoUse unique_ptr for VPtrLocationsMap and VPtrInfoVector.
Justin Lebar [Mon, 10 Oct 2016 16:26:29 +0000 (16:26 +0000)]
Use unique_ptr for VPtrLocationsMap and VPtrInfoVector.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283770

8 years ago[AST] Use unique_ptr for VTableLayout.
Justin Lebar [Mon, 10 Oct 2016 16:26:24 +0000 (16:26 +0000)]
[AST] Use unique_ptr for VTableLayout.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283769

8 years ago[AST] Convert MangleNumberingContext to a unique_ptr.
Justin Lebar [Mon, 10 Oct 2016 16:26:19 +0000 (16:26 +0000)]
[AST] Convert MangleNumberingContext to a unique_ptr.

Summary: It doesn't need to be refcounted anymore, either.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283768

8 years agoUse unique_ptr in LLVMContextImpl's constant maps.
Justin Lebar [Mon, 10 Oct 2016 16:26:13 +0000 (16:26 +0000)]
Use unique_ptr in LLVMContextImpl's constant maps.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283767

8 years ago[Sema] Use unique_ptr instead of raw pointers in the late-parsed templates map.
Justin Lebar [Mon, 10 Oct 2016 16:26:08 +0000 (16:26 +0000)]
[Sema] Use unique_ptr instead of raw pointers in the late-parsed templates map.

Summary:
This is possible now that MapVector supports move-only values.

Depends on D25404.

Reviewers: timshen

Subscribers: cfe-commits

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

llvm-svn: 283766

8 years ago[ADT] Add make_pointe{e,r}_iterator.
Justin Lebar [Mon, 10 Oct 2016 16:26:03 +0000 (16:26 +0000)]
[ADT] Add make_pointe{e,r}_iterator.

Reviewers: timshen

Subscribers: llvm-commits

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

llvm-svn: 283765

8 years ago[ADT] Let MapVector handle non-copyable values.
Justin Lebar [Mon, 10 Oct 2016 16:25:59 +0000 (16:25 +0000)]
[ADT] Let MapVector handle non-copyable values.

Summary: The keys must still be copyable, because we store two copies of them.

Reviewers: timshen

Subscribers: llvm-commits

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

llvm-svn: 283764

8 years ago[ARM] Fix invalid VLDM/VSTM access when targeting Big Endian with NEON
Alexandros Lamprineas [Mon, 10 Oct 2016 16:01:54 +0000 (16:01 +0000)]
[ARM] Fix invalid VLDM/VSTM access when targeting Big Endian with NEON

The instructions VLDM/VSTM can only access word-aligned memory
locations and produce alignment fault if the condition is not met.

The compiler currently generates VLDM/VSTM for v2f64 load/store
regardless the alignment of the memory access. Instead, if a v2f64
load/store is not word-aligned, the compiler should generate
VLD1/VST1. For each non double-word-aligned VLD1/VST1, a VREV
instruction should be generated when targeting Big Endian.

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

llvm-svn: 283763

8 years ago[libcxx] Fix gcc build.
Asiri Rathnayake [Mon, 10 Oct 2016 15:56:01 +0000 (15:56 +0000)]
[libcxx] Fix gcc build.

Attempt to fix a horrible gcc include order problem.

llvm-svn: 283762

8 years agoAdd return type for checkForValidSection parsing function. NFC Intended.
Nirav Dave [Mon, 10 Oct 2016 15:24:54 +0000 (15:24 +0000)]
Add return type for checkForValidSection parsing function. NFC Intended.

llvm-svn: 283761

8 years ago[ELF] Don't emit empty PT_LOAD segment
Eugene Leviant [Mon, 10 Oct 2016 15:09:44 +0000 (15:09 +0000)]
[ELF] Don't emit empty PT_LOAD segment

Sometimes the very first PT_LOAD segment, created by lld, can be empty.
This happens when (all conditions met):

- Linker script is used
- First section in ELF image is not RO
- Not enough space for program headers.

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

llvm-svn: 283760

8 years agoFix documentation mis-spelling.
Eric Fiselier [Mon, 10 Oct 2016 14:45:06 +0000 (14:45 +0000)]
Fix documentation mis-spelling.

I promise to stop misspelling things when the English language gains a program
that does strict semantic checking.

llvm-svn: 283759

8 years ago[X86] Prefer rotate by 1 over rotate by imm
Zvi Rackover [Mon, 10 Oct 2016 14:43:55 +0000 (14:43 +0000)]
[X86] Prefer rotate by 1 over rotate by imm

Summary:
Rotate by 1 is translated to 1 micro-op, while rotate with imm8 is translated to 2 micro-ops.

Fixes pr30644.

Reviewers: delena, igorb, craig.topper, spatel, RKSimon

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

llvm-svn: 283758

8 years agoAdd whitespace to make not_fn_impl more clear. NFC.
Marshall Clow [Mon, 10 Oct 2016 14:37:18 +0000 (14:37 +0000)]
Add whitespace to make not_fn_impl more clear. NFC.

llvm-svn: 283757

8 years ago[SLPVectorizer][X86] Add 512-bit sitofp/uitofp tests
Simon Pilgrim [Mon, 10 Oct 2016 14:28:06 +0000 (14:28 +0000)]
[SLPVectorizer][X86] Add 512-bit sitofp/uitofp tests

llvm-svn: 283756

8 years ago[Sema] Prevent using member declaration diagnostic if the base class is invalid.
Eric Fiselier [Mon, 10 Oct 2016 14:26:40 +0000 (14:26 +0000)]
[Sema] Prevent using member declaration diagnostic if the base class is invalid.

Summary:
Once a base class has been made invalid (by a static_assert for example) all using-member declarations in the derived classes will result in a "not a base class" diagnostic. This diagnostic is very misleading and should not be emitted.

This change is needed to help libc++ produce reasonable diagnostics in `std::optional` and `std::variant`.

Reviewers: rsmith, majnemer, aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 283755

8 years ago[include-fixer] query-mode should be false by default.
Haojian Wu [Mon, 10 Oct 2016 14:21:55 +0000 (14:21 +0000)]
[include-fixer] query-mode should be false by default.

Makes it consistent with documentations.

llvm-svn: 283754

8 years agoRevert r283683 because r283680 got reverted.
Nico Weber [Mon, 10 Oct 2016 14:20:35 +0000 (14:20 +0000)]
Revert r283683 because r283680 got reverted.

llvm-svn: 283753

8 years agoMark issues 2544, 2567, 2569, 2686 and 2694 as ready/done.
Marshall Clow [Mon, 10 Oct 2016 14:15:56 +0000 (14:15 +0000)]
Mark issues 2544, 2567, 2569, 2686 and 2694 as ready/done.

llvm-svn: 283752

8 years ago[SLPVectorizer][X86] Add avx512 sitofp/uitofp tests
Simon Pilgrim [Mon, 10 Oct 2016 14:14:31 +0000 (14:14 +0000)]
[SLPVectorizer][X86] Add avx512 sitofp/uitofp tests

llvm-svn: 283751

8 years agoRevert "P0035R4: Semantic analysis and code generation for C++17 overaligned allocation."
Daniel Jasper [Mon, 10 Oct 2016 14:13:55 +0000 (14:13 +0000)]
Revert "P0035R4: Semantic analysis and code generation for C++17 overaligned allocation."

This reverts commit r283722. Breaks:
  Clang.SemaCUDA.device-var-init.cu
  Clang.CodeGenCUDA.device-var-init.cu

http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/884/

llvm-svn: 283750

8 years agoAdd tests for LWG2544. We already implement this; just adding tests to make sure...
Marshall Clow [Mon, 10 Oct 2016 14:10:45 +0000 (14:10 +0000)]
Add tests for LWG2544. We already implement this; just adding tests to make sure that we keep doing it.

llvm-svn: 283749

8 years ago[SLPVectorizer][X86] Fixed alignments of scalar loads in sitofp/uitofp tests
Simon Pilgrim [Mon, 10 Oct 2016 14:10:41 +0000 (14:10 +0000)]
[SLPVectorizer][X86] Fixed alignments of scalar loads in sitofp/uitofp tests

Fixed copy+paste vector alignment to correct for per-element scalar loads

Increased to 512-bit data sizes in preparation of avx512 tests

llvm-svn: 283748

8 years agoRevert r283680.
Nico Weber [Mon, 10 Oct 2016 14:10:00 +0000 (14:10 +0000)]
Revert r283680.

Breaks bootstrap builds on (at least) Windows:
In file included from D:\buildslave\clang-x64-ninja-win7\llvm\lib\Support\Allocator.cpp:14:
In file included from D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/Support/Allocator.h:24:
In file included from D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/SmallVector.h:20:
In file included from D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/Support/MathExtras.h:19:
D:\buildslave\clang-x64-ninja-win7\stage1.install\bin\..\lib\clang\4.0.0\include\algorithm(63,8) :
    error: unknown type name '__device__'
    inline __device__ const __T &

llvm-svn: 283747

8 years ago[Driver] Make -print-libgcc-file-name print compiler-rt lib when used
Michal Gorny [Mon, 10 Oct 2016 12:23:40 +0000 (12:23 +0000)]
[Driver] Make -print-libgcc-file-name print compiler-rt lib when used

Make the -print-libgcc-file-name option print an appropriate compiler
runtime library, that is libgcc.a if gcc runtime is used
and an appropriate compiler-rt library if that runtime is used.

The main use for this is to allow linking executables built with
-nodefaultlibs (e.g. to avoid linking to the standard C++ library) to
the compiler runtime library, e.g. using:

  clang++ ... -nodefaultlibs $(clang++ ... -print-libgcc-file-name)

in which case currently a program built like this linked to the gcc
runtime unconditionally. The patch fixes it to use compiler-rt libraries
instead when compiler-rt is the active runtime.

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

llvm-svn: 283746

8 years ago[DepInfo] Print -debug output outside of max-operations scope.
Michael Kruse [Mon, 10 Oct 2016 11:45:59 +0000 (11:45 +0000)]
[DepInfo] Print -debug output outside of max-operations scope.

ISL tries to simplify the polyhedral operations before printing its objects.
This increases the operations counter and therefore can contribute to hitting
the operations limit. Therefore the result could be different when -debug output
is enabled, making debugging harder.

llvm-svn: 283745

8 years ago[Support/DepInfo] Introduce IslMaxOperationsGuard and make DepInfo use it. NFC.
Michael Kruse [Mon, 10 Oct 2016 11:45:54 +0000 (11:45 +0000)]
[Support/DepInfo] Introduce IslMaxOperationsGuard and make DepInfo use it. NFC.

IslMaxOperationsGuard defines a scope where ISL may abort operations because if
it takes too many operations. Replace the call to the raw ISL interface by a
use of the guard.

IslMaxOperationsGuard provides a uniform way to define a maximal computation
time for a code region in C++ using RAII.

llvm-svn: 283744

8 years agoRevert "[x86][inline-asm][clang] accept 'v' constraint"
Daniel Jasper [Mon, 10 Oct 2016 11:40:28 +0000 (11:40 +0000)]
Revert "[x86][inline-asm][clang] accept 'v' constraint"

This reverts commit r283716.

Breaks buildbot:
http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_check/9155/testReport/junit/Clang/CodeGen/x86_inline_asm_v_constraint_c/

llvm-svn: 283743

8 years ago[ELF] Change argument type for findSections. NFC
Eugene Leviant [Mon, 10 Oct 2016 11:23:12 +0000 (11:23 +0000)]
[ELF] Change argument type for findSections. NFC

llvm-svn: 283742

8 years agoFixed windows stdout/stderr redirection in inline asm constraint tests
Simon Pilgrim [Mon, 10 Oct 2016 11:11:27 +0000 (11:11 +0000)]
Fixed windows stdout/stderr redirection in inline asm constraint tests

llvm-svn: 283741

8 years ago[Object/ELF] - Do not crash on invalid Header->e_shoff value.
George Rimar [Mon, 10 Oct 2016 10:51:38 +0000 (10:51 +0000)]
[Object/ELF] - Do not crash on invalid Header->e_shoff value.

sections_begin() may return unalignment pointer when Header->e_shoff isinvalid.
That may result in a crash in clients, for example we have one in LLD:

assert((PtrWord & ~PointerBitMask) == 0 &&
       "Pointer is not sufficiently aligned");
fails when trying to push_back Elf_Shdr* (unaligned) into TinyPtrVector.

Patch forces check for alignment of Header->e_shoff.

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

llvm-svn: 283740

8 years ago[LLDB][MIPS] All tests get errors in dotest after this test.
Nitesh Jain [Mon, 10 Oct 2016 10:47:53 +0000 (10:47 +0000)]
[LLDB][MIPS] All tests get errors in dotest after this test.

Subscribers: jaydeep, bhushan, slthakur, llvm-commits
llvm-svn: 283739

8 years agoRecommit r283733 "[ELF] - Do not crash if common symbol alignment set to value greate...
George Rimar [Mon, 10 Oct 2016 10:31:03 +0000 (10:31 +0000)]
Recommit r283733 "[ELF] - Do not crash if common symbol alignment set to value greater than UINT32_MAX.

With fix: commit changes from InputFiles.cpp too.

Original commit message:
We have following code in lld, that truncates the alignment value to 32 bit. Big alignment in this case
may give result 0 and crash later.

template <class ELFT>
CommonInputSection<ELFT>::CommonInputSection(std::vector<DefinedCommon *> Syms)
    : InputSection<ELFT>(nullptr, &Hdr, "") {
....
  for (DefinedCommon *Sym : Syms) {
    this->Alignment = std::max<uintX_t>(this->Alignment, Sym->Alignment);
...
  }
}

Patch fixes the issue.

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

llvm-svn: 283738

8 years agoRevert r283733 "[ELF] - Do not crash if common symbol alignment set to value greater...
George Rimar [Mon, 10 Oct 2016 10:27:38 +0000 (10:27 +0000)]
Revert r283733 "[ELF] - Do not crash if common symbol alignment set to value greater than UINT32_MAX."

Broke BB because forgot to commit source file.

llvm-svn: 283737

8 years agoUse `let' instead of `let*' in one place where `let*' isn't necessary
Manuel Klimek [Mon, 10 Oct 2016 10:22:40 +0000 (10:22 +0000)]
Use `let' instead of `let*' in one place where `let*' isn't necessary

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

Patch by Philipp Stephani.

llvm-svn: 283736

8 years ago[ELF][ARM] Fix formatting mistake, removed extra space before ) NFC.
Peter Smith [Mon, 10 Oct 2016 10:18:58 +0000 (10:18 +0000)]
[ELF][ARM] Fix formatting mistake, removed extra space before ) NFC.

llvm-svn: 283735

8 years ago[ELF][ARM] Garbage collection support for .ARM.exidx sections
Peter Smith [Mon, 10 Oct 2016 10:10:27 +0000 (10:10 +0000)]
[ELF][ARM] Garbage collection support for .ARM.exidx sections

.ARM.exidx sections have a reverse dependency on the section they have
a SHF_LINK_ORDER dependency on. In other words a .ARM.exidx section is
live only if the executable section it describes is live. We implement
this with a reverse dependency field in InputSection.

Adding the dependency to InputSection is the simplest implementation
but it could be moved out to a separate map if it were found to decrease
performance for non ARM targets.

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

llvm-svn: 283734

8 years ago[ELF] - Do not crash if common symbol alignment set to value greater than UINT32_MAX.
George Rimar [Mon, 10 Oct 2016 10:10:09 +0000 (10:10 +0000)]
[ELF] - Do not crash if common symbol alignment set to value greater than UINT32_MAX.

We have following code in lld, that truncates the alignment value to 32 bit. Big alignment in this case
may give result 0 and crash later.

template <class ELFT>
CommonInputSection<ELFT>::CommonInputSection(std::vector<DefinedCommon *> Syms)
    : InputSection<ELFT>(nullptr, &Hdr, "") {
....
  for (DefinedCommon *Sym : Syms) {
    this->Alignment = std::max<uintX_t>(this->Alignment, Sym->Alignment);
...
  }
}

Patch fixes the issue.

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

llvm-svn: 283733

8 years ago[LLDB][MIPS] Skip some test case which were causing LLDB to go into infinite loop
Nitesh Jain [Mon, 10 Oct 2016 10:02:09 +0000 (10:02 +0000)]
[LLDB][MIPS] Skip some test case which were causing LLDB to go into infinite loop

Reviewers: clayborg, labath

Subscribers: jaydeep, bhushan, slthakur, llvm-commits

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

llvm-svn: 283732

8 years ago[ELF] - Do not crash on absolute local symbol starting from ".L".
George Rimar [Mon, 10 Oct 2016 09:59:34 +0000 (09:59 +0000)]
[ELF] - Do not crash on absolute local symbol starting from ".L".

Absolute local symbols with name staring from ".L" were reason of crash.
The same could happen when using some broken inputs found by AFL.

Patch fixes that.

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

llvm-svn: 283731

8 years ago[ELF][ARM] Initial implentation of ARM exceptions support
Peter Smith [Mon, 10 Oct 2016 09:39:26 +0000 (09:39 +0000)]
[ELF][ARM] Initial implentation of ARM exceptions support

The .ARM.exidx sections contain a table. Each entry has two fields:
- PREL31 offset to the function the table entry describes
- Action to take, either cantunwind, inline unwind, or PREL31 offset to
  .ARM.extab section

The table entries must be sorted in order of the virtual addresses the
first entry of the table describes. Traditionally this is implemented by
the SHF_LINK_ORDER dependency. Instead of implementing this directly we
sort the table entries post relocation.

The .ARM.exidx OutputSection is described by the PT_ARM_EXIDX program
header

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

llvm-svn: 283730

8 years ago[LLDB][MIPS] Fix TestReturnValue failure for MIPS
Nitesh Jain [Mon, 10 Oct 2016 09:16:20 +0000 (09:16 +0000)]
[LLDB][MIPS] Fix TestReturnValue failure for MIPS

Reviewers: clayborg, labath, bhushan

Subscribers: jaydeep, slthakur, llvm-commits

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

llvm-svn: 283729

8 years ago[LLDB][MIPS] Fix register read/write for 32 bit big endian system
Nitesh Jain [Mon, 10 Oct 2016 09:02:41 +0000 (09:02 +0000)]
[LLDB][MIPS] Fix register read/write for 32 bit big endian system

Reviewers: clayborg, labath

Subscribers: jaydeep, bhushan, mohit.bhakkad, slthakur, llvm-commits

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

llvm-svn: 283728

8 years agoThis pass, fixing an erratum in some LEON 2 processors ensures that the SDIV instruct...
Chris Dewhurst [Mon, 10 Oct 2016 08:53:06 +0000 (08:53 +0000)]
This pass, fixing an erratum in some LEON 2 processors ensures that the SDIV instruction is not issued, but replaced by SDIVcc instead, which does not exhibit the error. Unit test included.

Differential Review: https://reviews.llvm.org/D24660

llvm-svn: 283727

8 years ago[libcxx] Add the missing limits.h header
Asiri Rathnayake [Mon, 10 Oct 2016 08:38:51 +0000 (08:38 +0000)]
[libcxx] Add the missing limits.h header

The implementation of [depr.c.headers] in D12747 introduced the necessary
C headers into libc++. This patch adds one more missing headers: limits.h

We spotted this due to a failing C++03 test [limits_h.pass.cpp] in our libc++
configuration; when the limits.h header is included from a C++ program, it now
bypassed the __config header and went directly into the underlying C library's
limits.h header, which is problematic for us because we use __config header to
configure the underlying C library's behaviour when used from a C++ context.

Reviewers: mclow.lists, rsmith

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

llvm-svn: 283726

8 years agoFix style issue. Spaces in argument list.
Daniel Marjamaki [Mon, 10 Oct 2016 07:39:39 +0000 (07:39 +0000)]
Fix style issue. Spaces in argument list.

llvm-svn: 283725

8 years agoMark aligned allocation as done.
Richard Smith [Mon, 10 Oct 2016 06:55:42 +0000 (06:55 +0000)]
Mark aligned allocation as done.

llvm-svn: 283724

8 years agoFix WebAssembly build after r283702.
Daniel Jasper [Mon, 10 Oct 2016 06:49:55 +0000 (06:49 +0000)]
Fix WebAssembly build after r283702.

llvm-svn: 283723

8 years agoP0035R4: Semantic analysis and code generation for C++17 overaligned
Richard Smith [Mon, 10 Oct 2016 06:42:31 +0000 (06:42 +0000)]
P0035R4: Semantic analysis and code generation for C++17 overaligned
allocation.

llvm-svn: 283722

8 years agoCleanup CMake status output
Eric Fiselier [Mon, 10 Oct 2016 06:31:00 +0000 (06:31 +0000)]
Cleanup CMake status output

llvm-svn: 283721

8 years ago[AVX-512] Add missing pattern sext or zext from bytes to quad words with a 128-bit...
Craig Topper [Mon, 10 Oct 2016 06:25:48 +0000 (06:25 +0000)]
[AVX-512] Add missing pattern sext or zext from bytes to quad words with a 128-bit load as input.

llvm-svn: 283720

8 years ago[AVX-512] Add test cases for AVX512 sign/zero extend instructions derived from the...
Craig Topper [Mon, 10 Oct 2016 06:25:45 +0000 (06:25 +0000)]
[AVX-512] Add test cases for AVX512 sign/zero extend instructions derived from the sse41 and avx2 test cases. Code will be improved in future commits.

llvm-svn: 283719

8 years ago[AVX-512] Add an AVX512VL/BW command line to sse41-pmovxrm.ll and avx2-pmovxrm.ll...
Craig Topper [Mon, 10 Oct 2016 06:25:42 +0000 (06:25 +0000)]
[AVX-512] Add an AVX512VL/BW command line to sse41-pmovxrm.ll and avx2-pmovxrm.ll. Also disable peephole so we really test pattern matching.

llvm-svn: 283718

8 years ago[x86][inline-asm][llvm] accept 'v' constraint
Michael Zuckerman [Mon, 10 Oct 2016 05:48:56 +0000 (05:48 +0000)]
[x86][inline-asm][llvm] accept 'v' constraint

Commit in the name of:Coby Tayree
1.'v' constraint for (x86) non-avx arch imitates the already implemented 'x' constraint, i.e. allows XMM{0-15} & YMM{0-15} depending on the apparent arch & mode (32/64).
2.for the avx512 arch it allows [X,Y,Z]MM{0-31} (mode dependent)

This patch applies the needed changes to clang
 clang patch: https://reviews.llvm.org/D25004

Differential Revision: D25005

llvm-svn: 283717

8 years ago[x86][inline-asm][clang] accept 'v' constraint
Michael Zuckerman [Mon, 10 Oct 2016 05:45:54 +0000 (05:45 +0000)]
[x86][inline-asm][clang] accept 'v' constraint

Commit in the name of: Coby Tayree

1.'v' constraint for (x86) non-avx arch imitates the already implemented 'x' constraint, i.e. allows XMM{0-15} & YMM{0-15} depending on the apparent arch & mode (32/64).
2.for the avx512 arch it allows [X,Y,Z]MM{0-31} (mode dependent)

This patch applies the needed changes to clang
 LLVM patch: https://reviews.llvm.org/D25005

Differential Revision: D25004

llvm-svn: 283716

8 years agoProvide a constexpr addressof with GCC 7.
Eric Fiselier [Mon, 10 Oct 2016 05:34:18 +0000 (05:34 +0000)]
Provide a constexpr addressof with GCC 7.

__builtin_addressof was added to the GCC trunk in the past week. This patch
teaches libc++ about it so it can correctly provide constexpr addressof.

Unfortunately this patch will break users of earlier GCC 7 builds, since
we expect __builtin_addressof but one won't be provided. One option would be
to only use __builtin_addressof for GCC 7.1 and above, but that means
waiting for another release.

Instead I've specifically chosen to break older GCC 7 versions. Since GCC 7
has yet to be released, and the 7.0 release is a development release, I
believe that anybody currently using GCC 7.0 will have no issue upgrading.

llvm-svn: 283715

8 years agoWorkaround missing C++14 constexpr semantics in filesystem
Eric Fiselier [Mon, 10 Oct 2016 05:19:59 +0000 (05:19 +0000)]
Workaround missing C++14 constexpr semantics in filesystem

llvm-svn: 283714

8 years agoRemove use of int128_t inside the filesystem implementation
Eric Fiselier [Mon, 10 Oct 2016 04:22:58 +0000 (04:22 +0000)]
Remove use of int128_t inside the filesystem implementation

llvm-svn: 283712

8 years ago[AVR] Enable generation of the TableGen assembly writer tables
Dylan McKay [Mon, 10 Oct 2016 01:28:45 +0000 (01:28 +0000)]
[AVR] Enable generation of the TableGen assembly writer tables

This also changes the order of the statements in CMakeLists.txt to be
alphabetical.

llvm-svn: 283711

8 years ago[lit] Remove (or allow specific) unused imports
Brian Gesiak [Mon, 10 Oct 2016 01:22:06 +0000 (01:22 +0000)]
[lit] Remove (or allow specific) unused imports

Summary:
Using Python linter flake8 on the utils/lit reveals several linter
warnings designated "F401: Unused import". Fix or silence these
warnings.

Some of these unused imports are legitimate, while some are part of lit's API.
For example, users of lit expect to be able to access `lit.formats.ShTest` in
their `lit.cfg`, despite the module hierarchy for that symbol actually being
`lit.formats.shtest.ShTest`. To silence linter errors for these lines,
include a "noqa" directive.

Reviewers: echristo, delcypher, beanz, ddunbar

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 283710

8 years ago[lit] Remove unused TestingProgressDisplay attr
Brian Gesiak [Mon, 10 Oct 2016 01:20:43 +0000 (01:20 +0000)]
[lit] Remove unused TestingProgressDisplay attr

Summary:
`TestingProgressDisplay` initializes its `current` attribute to `None`, but
never reads or writes the value again. Remove it.

Reviewers: echristo, delcypher, beanz, ddunbar

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283709

8 years ago[lit] Fix undefined symbol ArgumentError
Brian Gesiak [Mon, 10 Oct 2016 01:19:27 +0000 (01:19 +0000)]
[lit] Fix undefined symbol ArgumentError

Summary:
`ArgumentError` is not defined by the Python standard library.
Executing this line of code would throw a exception, but not the
intended one. It would throw a `NameError` exception, since `ArgumentError`
is undefined.

Use `ValueError` instead, which is defined by the Python standard
library.

Reviewers: echristo, delcypher, beanz, ddunbar

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283708

8 years ago[lit] Remove semicolons in Python code
Brian Gesiak [Mon, 10 Oct 2016 01:18:14 +0000 (01:18 +0000)]
[lit] Remove semicolons in Python code

Summary:
Semicolons aren't necessary as statement terminators in Python, and
each of these uses are superfluous as they appear at the end of a line.
The convention is to not use semicolons where not needed, so remove them.

Reviewers: echristo, delcypher, beanz, ddunbar

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283707

8 years ago[lit] Remove unused variable in googletest format
Brian Gesiak [Mon, 10 Oct 2016 01:15:33 +0000 (01:15 +0000)]
[lit] Remove unused variable in googletest format

Summary: `prefix` is written to but never read.

Reviewers: echristo, delcypher, beanz, ddunbar

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283706

8 years ago[lit] Remove Python 2.6 and below exec workaround
Brian Gesiak [Mon, 10 Oct 2016 01:11:52 +0000 (01:11 +0000)]
[lit] Remove Python 2.6 and below exec workaround

Summary:
The minimum version of Python required to run LLVM's test suite is 2.7.
Remove a workaround for older Python versions.

Reviewers: echristo, delcypher, beanz, ddunbar

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283705

8 years ago[AVX-512] Port 128 and 256-bit memory->register sign/zero extend patterns from SSE...
Craig Topper [Sun, 9 Oct 2016 23:08:39 +0000 (23:08 +0000)]
[AVX-512] Port 128 and 256-bit memory->register sign/zero extend patterns from SSE file. Also add a minimal set for 512-bit.

llvm-svn: 283704

8 years ago[X86] Remove redundant patterns. The same pattern appears a few lines up.
Craig Topper [Sun, 9 Oct 2016 23:08:33 +0000 (23:08 +0000)]
[X86] Remove redundant patterns. The same pattern appears a few lines up.

llvm-svn: 283703

8 years agoMove the global variables representing each Target behind accessor function
Mehdi Amini [Sun, 9 Oct 2016 23:00:34 +0000 (23:00 +0000)]
Move the global variables representing each Target behind accessor function

This avoids "static initialization order fiasco"

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

llvm-svn: 283702

8 years agoRemove debug output from gen_linker_script.py
Eric Fiselier [Sun, 9 Oct 2016 21:43:30 +0000 (21:43 +0000)]
Remove debug output from gen_linker_script.py

llvm-svn: 283701

8 years agoFix linker script generation for in-tree builds
Eric Fiselier [Sun, 9 Oct 2016 21:34:03 +0000 (21:34 +0000)]
Fix linker script generation for in-tree builds

llvm-svn: 283700

8 years ago[libc++abi] Fix bug which cased the static libunwind to always be chosen
Eric Fiselier [Sun, 9 Oct 2016 20:44:48 +0000 (20:44 +0000)]
[libc++abi] Fix bug which cased the static libunwind to always be chosen

llvm-svn: 283699

8 years ago[CMake] Correct configuration order of the sub-projects based on ther dependancies
Eric Fiselier [Sun, 9 Oct 2016 20:38:29 +0000 (20:38 +0000)]
[CMake] Correct configuration order of the sub-projects based on ther dependancies

llvm-svn: 283698

8 years ago[llvm-link] Fix description of -disable-lazy-loading option
Davide Italiano [Sun, 9 Oct 2016 17:15:04 +0000 (17:15 +0000)]
[llvm-link] Fix description of -disable-lazy-loading option

Patch by Will Dietz!

llvm-svn: 283697