Displaying 1 50 of 275,113 commits (0.022s)

LLVM — llvm/branches/release_60/utils/release test-release.sh

Merging r322875:
r322875 | dim | 2018-01-18 19:39:13 +0100 (Thu, 18 Jan 2018) | 9 lines

Add a -no-libcxxabi option to the test-release.sh script.

On FreeBSD, it is currently not possible to build libcxxabi and link
against it, so we have been building releases with -no-libs for quite
some time.

However, libcxx and libunwind should build without problems, so provide
an option to skip just libcxxabi.

Merging r322879:
r322879 | dim | 2018-01-18 20:30:30 +0100 (Thu, 18 Jan 2018) | 2 lines

Follow-up to rL322875 by initializing the do_libcxxabi variable properly.


LLVM — lld/trunk/COFF DriverUtils.cpp Driver.cpp, lld/trunk/test/COFF dllexport.s def-export-stdcall.s

[COFF] Keep the underscore on exported decorated stdcall functions in MSVC mode

This fixes PR35733.

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

LLVM — llvm/trunk/include/llvm/Object COFFImportFile.h, llvm/trunk/lib/Object COFFImportFile.cpp

[COFF] Keep the underscore on exported decorated stdcall functions in MSVC mode

This (together with the corresponding LLD commit, that contains the
testcase updates) fixes PR35733.

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

LLVM — llvm/trunk/include/llvm/Support GenericDomTreeConstruction.h, llvm/trunk/unittests/IR DominatorTreeBatchUpdatesTest.cpp

[Dominators] Fix some edge cases for PostDomTree updating

These fix some odd cfg cases where batch-updating the post
dom tree fails. Usually around infinite loops and roots
ending up being different.

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

LLVM — llvm/trunk/test/CodeGen/X86 vector-shuffle-v1.ll

[X86] Add some more v32i1 shuffle tests with shuffles between mask creation and mask usage 
rather than being just shuffling input arguments.

The existing tests just tested shuffles of v32i1 inputs, but arguments are promoted to 
v32i8. So it wasn't a good demonstration of v32i1 shuffle handling.

The new test cases use compares and selects to get k-register operations around the 

This is prep work for demonstrating changes from D42031.

LLVM — llvm/trunk/test/CodeGen/X86 zext-demanded.ll

[X86] Add test cases for failures to use movzx due to various issues with demanded bits.

D42265 and D42313 should help with some of these.

LLVM — lld/trunk/test/wasm entry.ll stack-pointer.ll, lld/trunk/wasm SymbolTable.cpp Writer.cpp

[WebAssembly] Remove special handling of entry point export.

Its much easier to export it via setHidden(false), now that
that is a thing.

As a side effect the start function is not longer always exports first
(becuase its being exported just like all the other function).

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

LLVM — lld/trunk/wasm Driver.cpp SymbolTable.cpp

[WebAssembly] Remove redundant function: addSyntheticUndefinedFunction.  NFC.

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

LLVM — llvm/trunk/test/CodeGen/ARM coff-no-dead-strip.ll

test: fix ARM tests harder

Remove the missed check update for the removal of the x86 specific
vector call on ARM.

LLVM — cfe/trunk/lib/Driver/ToolChains CommonArgs.cpp

Link sanitized programs on NetBSD with -lkvm

kvm - kernel memory interface

The kvm(3) functions like kvm_open(), kvm_getargv() or kvm_getenvv()
are used in programs that can request information about a kernel and
its processes. The LLVM sanitizers will make use of them on NetBSD.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, vitalybuka, dvyukov

Reviewed By: vitalybuka

Subscribers: llvm-commits, cfe-commits, #sanitizers

Tags: #sanitizers

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

LLVM — llvm/trunk/test/CodeGen/ARM coff-no-dead-strip.ll, llvm/trunk/test/CodeGen/X86 coff-no-dead-strip.ll

test: move ARM test from x86

The ARM backend is not guaranteed to be present on x86, move the test to
the ARM tests.

LLVM — lld/trunk/test/wasm undefined-entry.test, lld/trunk/wasm Driver.cpp

[WebAssembly] Remove custom handling for undefined entry

This code was needed back when we were not able to write
out the synthetic symbol for main.

Add tests to make sure we can handle this now.

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

LLVM — llvm/trunk/include/llvm/CodeGen TargetLoweringObjectFileImpl.h TargetLoweringObjectFile.h, llvm/trunk/include/llvm/IR Mangler.h

CodeGen: handle llvm.used properly for COFF

`llvm.used` contains a list of pointers to named values which the
compiler, assembler, and linker are required to treat as if there is a
reference that they cannot see.  Ensure that the symbols are preserved
by adding an explicit `-include` reference to the linker command.

LLVM — llvm/trunk/lib/Target/X86 X86ISelLowering.cpp X86Subtarget.h, llvm/trunk/test/CodeGen/X86 prefer-avx256-shift.ll prefer-avx256-mask-extend.ll

[X86] Teach X86 codegen to use vector width preference to avoid promoting to 512-bit types 
when VLX is enabled and the preference is for a smaller size.

This change applies to places where we would turn 128/256-bit code into 512-bit in order 
to get a wider element type through sext/zext. Any 512-bit types that already existed in 
the IR/DAG will be left that way.

The width preference has no effect on codegen behavior when the target does not have 
AVX512 enabled. So AVX/AVX2 codegen cannot be limited via this mechanism yet.

If the preference is lower than 256 we may still use a 256 bit type to do the operation. 
Constraining to 128 bits makes it much more difficult to support some operations. For many 
of these cases we need to change element width while keeping element count constant which 
is easiest done by switching between 256 and 128 bit.

The preference is only obeyed when AVX512 and VLX are available. This means the preference 
is not obeyed for KNL, but is obeyed for SKX, Cannonlake, and Icelake. For KNL, the only 
way to do masked operation is on 512-bit registers so we would have to completely disable 
masking to obey the preference. We would also lose support for gather, scatter, ctlz, 
vXi64 multiplies, etc. This may change in the future, but this simplifies the initial 

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

LLVM — llvm/trunk/lib/Target/X86 X86TargetMachine.cpp X86Subtarget.h, llvm/trunk/test/Transforms/LoopVectorize/X86 avx512.ll

[X86] Add support for passing 'prefer-vector-width' function attribute into X86Subtarget 
and exposing via X86's getRegisterWidth TTI interface.

This will cause the vectorizers to do some limiting of the vector widths they create. This 
is not a strict limit. There are reasons I know of that the loop vectorizer will generate 
larger vectors for.

I've written this in such a way that the interface will only return a properly supported 
width(0/128/256/512) even if the attribute says something funny like 384 or 10.

This has been split from D41895 with the remainder in a follow up commit.

LLVM — lld/trunk/ELF SyntheticSections.cpp

Avoid divisions.

Compiler doesn't know the fact that Config->WordSize * 8 is always a
power of two, so it had to use the div instruction to divide some
number with C.

LLVM — llvm/trunk/lib/Target/WebAssembly WebAssemblyRuntimeLibcallSignatures.cpp

[WebAssembly] Fix MSVC build

nullptr_t can't be used left of boolean &&

LLVM — lld/trunk/ELF SyntheticSections.cpp

Make the bloom filter a bit larger.

I created https://reviews.llvm.org/D42202 to see how large the bloom
filter should be. With that patch, I tested various bloom filter sizes
with the following commands:

  $ cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_LLD=true \
    -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-bloom-filter-bits=<some integer> \
  $ rm -f $(find . -name \*.so.7.0.0svn)
  $ ninja lld
  $ LD_BIND_NOW=1 perf stat bin/ld.lld

Here is the result:

  -bloom-filter-bits=8   0.220351609 seconds
  -bloom-filter-bits=10  0.217146597 seconds
  -bloom-filter-bits=12  0.206870826 seconds
  -bloom-filter-bits=16  0.209456312 seconds
  -bloom-filter-bits=32  0.195092075 seconds

Currently we allocate 8 bits for a symbol, but according to the above
result, that number is not optimal. Even though the numbers follow the
diminishing return rule, the point where a marginal improvement becomes

    [3 lines not shown]

LLVM — llvm/trunk/lib/Transforms/ObjCARC ObjCARC.h ObjCARCContract.cpp, llvm/trunk/test/Transforms/ObjCARC rv.ll contract-replace-arg-use.ll

[ObjCARC] Do not turn a call to @objc_autoreleaseReturnValue into a call
to @objc_autorelease if its operand is a PHI and the PHI has an
equivalent value that is used by a return instruction.

For example, ARC optimizer shouldn't replace the call in the following
example, as doing so breaks the AutoreleaseRV/RetainRV optimization:

  %v1 = bitcast i32* %v0 to i8*
  br label %bb3
  %v3 = bitcast i32* %v2 to i8*
  br label %bb3
  %p = phi i8* [ %v1, %bb1 ], [ %v3, %bb2 ]
  %retval = phi i32* [ %v0, %bb1 ], [ %v2, %bb2 ] ; equivalent to %p
  %v4 = tail call i8* @objc_autoreleaseReturnValue(i8* %p)
  ret i32* %retval

Also, make sure ObjCARCContract replaces @objc_autoreleaseReturnValue's
operand uses with its value so that the call gets tail-called.


LLVM — cfe/trunk/lib/Lex PPCaching.cpp PPLexerChange.cpp, cfe/trunk/test/CodeCompletion comments.cpp

[Lex] Fix crash on code completion in comment in included file.

This fixes PR32732 by updating CurLexerKind to reflect available lexers.
We were hitting null pointer in Preprocessor::Lex because CurLexerKind
was CLK_Lexer but CurLexer was null. And we set it to null in
Preprocessor::HandleEndOfFile when exiting a file with code completion

To reproduce the crash it is important for a comment to be inside a
class specifier. In this case in Parser::ParseClassSpecifier we improve
error recovery by pushing a semicolon token back into the preprocessor
and later on try to lex a token because we haven't reached the end of

Also clang crashes only on code completion in included file, i.e. when
IncludeMacroStack is not empty. Though we reset CurLexer even if include
stack is empty. The difference is that during pushing back a semicolon
token, preprocessor calls EnterCachingLexMode which decides it is
already in caching mode because various lexers are null and
IncludeMacroStack is not empty. As the result, CurLexerKind remains
CLK_Lexer instead of updating to CLK_CachingLexer.


Reviewers: akyrtzi, doug.gregor, arphaman

    [6 lines not shown]

LLVM — lldb/trunk/packages/Python/lldbsuite/test lldbutil.py lldbtest.py, lldb/trunk/packages/Python/lldbsuite/test/android/platform TestDefaultCacheLineSize.py

Wrap all references to build artifacts in the LLDB testsuite (NFC)

in TestBase::getBuildArtifact(). This NFC commit is in preparation for
https://reviews.llvm.org/D42281 (compile the LLDB tests out-of-tree).

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

LLVM — cfe/trunk/include/clang/Basic arm_neon_incl.td arm_neon.td, cfe/trunk/lib/Basic/Targets AArch64.cpp

[AArch64] Add ARMv8.2-A FP16 scalar intrinsics


LLVM — llvm/trunk/include/llvm/IR IntrinsicsAArch64.td

[AArch64] Add ARMv8.2-A FP16 scalar intrinsics


LLVM — llvm/trunk/lib/ExecutionEngine/RuntimeDyld RuntimeDyld.cpp

Fix -Wunused-variable.

LLVM — llvm/trunk/test/CodeGen/X86 sqrt-fastmath.ll

[x86] add tests for sqrt estimate that should respect denorms; NFC (PR34994)

LLVM — llvm/trunk/include/llvm/ExecutionEngine JITSymbol.h ExecutionEngine.h, llvm/trunk/include/llvm/ExecutionEngine/Orc RemoteObjectLayer.h CompileOnDemandLayer.h

[ORC] Re-apply r322913 with a fix for a read-after-free error.

ExternalSymbolMap now stores the string key (rather than using a StringRef),
as the object file backing the key may be removed at any time.

LLVM — llvm/trunk/test/CodeGen/X86 bswap.ll pr12360.ll

[X86] Autogenerate complete checks on a couple tests. NFC

LLVM — lldb/trunk/lit/SymbolFile/PDB typedefs.test enums-layout.test, lldb/trunk/lit/SymbolFile/PDB/Inputs SimpleTypesTest.cpp

[SymbolFilePDB] Fix null array access when parsing the type of a function without any 
arguments, i.e. 'int main()' and add support to test it

- Fix a null array access bug. This happens when creating the lldb type for a function 
that has no argument.
- Implement SymbolFilePDB::ParseTypes method. Using `lldb-test symbols` will show all 
supported types in the target.
- Create lldb types for variadic function, PDBSymbolTypePointer, PDBSymbolTypeBuiltin
- The underlying builtin type for PDBSymbolTypeEnum is always `Int`, correct it with the 
very first enumerator's encoding if any. This is more accurate when the underlying type is 
not signed or another integer type.
- Fix a bug when the compiler type is not created based on PDB_BuiltinType. For example, 
basic type `long` is of same width as `int` in a 32-bit target, and the compiler type of 
former one will be represented by the one generated for latter if using the default 
method. Introduce a static function GetBuiltinTypeForPDBEncodingAndBitSize to correct this 
- Basic type `long double` and `double` have the same bit size in MSVC and there is no 
information in a PDB to distinguish them. The compiler type of the former one is 
represented by the latter's.
- There is no line informaton about typedef, enum etc in a PDB and the source and line 
information for them are not shown.
- There is no information about scoped enumeration. The compiler type is represented as an 
unscoped one.

    [7 lines not shown]

LLVM — lld/trunk/test/wasm init-fini.ll relocatable.ll, lld/trunk/wasm Writer.cpp

[WebAssembly] Include SYMBOL_INFO for imports as well as exports

Only effects --emit-relocs/--relocatable

Patch by Nicholas Wilson!

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

LLVM — llvm/trunk/include/llvm/Support GenericDomTreeConstruction.h, llvm/trunk/test/Transforms/JumpThreading ddt-crash4.ll ddt-crash3.ll

[Dominators] Visit affected node candidates found at different root levels

This patch attempts to fix the DomTree incremental insertion bug found here [[ 
https://bugs.llvm.org/show_bug.cgi?id=35969 | PR35969 ]] .

When performing an insertion into a piece of unreachable CFG, we may find the same not at 
different levels. When this happens, the node can turn out to be affected when we find it 
starting from a node with a lower level in the tree. The level at which we start 
visitation affects if we consider a node affected or not.

This patch tracks the lowest level at which each node was visited during insertion and 
allows it to be visited multiple times, if it can cause it to be considered affected.

Reviewers: brzycki, davide, dberlin, grosser

Reviewed By: brzycki

Subscribers: llvm-commits

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

LLVM — llvm/trunk/include/llvm/IR DIBuilder.h, llvm/trunk/lib/CodeGen MachineOutliner.cpp

Add optional DICompileUnit to DIBuilder + make outliner debug info use it

Previously, the DIBuilder didn't expose functionality to set its compile unit
in any other way than calling createCompileUnit. This meant that the outliner,
which creates new functions, had to create a new compile unit for its debug

This commit adds an optional parameter in the DIBuilder's constructor which
lets you set its CU at construction.

It also changes the MachineOutliner so that it keeps track of the DISubprograms
for each outlined sequence. If debugging information is requested, then it
uses one of the outlined sequence's DISubprograms to grab a CU. It then uses
that CU to construct the DISubprogram for the new outlined function.

The test has also been updated to reflect this change.

See https://reviews.llvm.org/D42254 for more information. Also see the e-mail
discussion on D42254 in llvm-commits for more context.

LLVM — lld/trunk/test/wasm relocatable.ll, lld/trunk/wasm Writer.cpp

[WebAssembly] Include weak imports when linking with --relocatable

We need these import since relocations are generated against them.

Patch by Nicholas Wilson!

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

LLVM — llvm/trunk/lib/Target/SystemZ SystemZISelDAGToDAG.cpp, llvm/trunk/test/CodeGen/SystemZ vec-intrinsics-01.ll vec-intrinsics-02.ll

[SystemZ] Prefer LOCHI over generating IPM sequences

On current machines we have load-on-condition instructions that can be
used to directly implement the SETCC semantics.  If we have those, it is
always preferable to use them instead of generating the IPM sequence.

LLVM — llvm/trunk/lib/Target/SystemZ SystemZISelLowering.cpp SystemZISelLowering.h, llvm/trunk/test/CodeGen/SystemZ cmpxchg-01.ll cmpxchg-02.ll

[SystemZ] Directly use CC result of compare-and-swap

In order to implement a test whether a compare-and-swap succeeded, the
SystemZ back-end currently emits a rather inefficient sequence of first
converting the CC result into an integer, and then testing that integer
against zero.  This commit changes the back-end to simply directly test
the CC value set by the compare-and-swap instruction.

LLVM — llvm/trunk/lib/Target/SystemZ SystemZISelLowering.cpp SystemZISelDAGToDAG.cpp, llvm/trunk/test/CodeGen/SystemZ setcc-04.ll setcc-03.ll

[SystemZ] Rework IPM sequence generation

The SystemZ back-end uses a sequence of IPM followed by arithmetic
operations to implement the SETCC primitive.  This is currently done
early during SelectionDAG.  This patch moves generating those sequences
to much later in SelectionDAG (during PreprocessISelDAG).

This doesn't change much in generated code by itself, but it allows
further enhancements that will be checked-in as follow-on commits.

LLVM — llvm/trunk/lib/Target/SystemZ SystemZISelLowering.cpp SystemZISelLowering.h

[SystemZ] Implement computeKnownBitsForTargetNode

This provides a computeKnownBits implementation for SystemZ target
nodes.  Currently only SystemZISD::SELECT_CCMASK is supported.

LLVM — llvm/trunk/lib/CodeGen/SelectionDAG SelectionDAG.cpp

[SelectionDAG] Teach computeKnownBits about ATOMIC_CMP_SWAP_WITH_SUCCESS boolean return 

The second return value of ATOMIC_CMP_SWAP_WITH_SUCCESS is known to be a
boolean, and should therefore be treated by computeKnownBits just like
the second return values of SMULO / UMULO.

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

LLVM — cfe/trunk/lib/AST DeclBase.cpp, cfe/trunk/test/Modules odr_hash-blocks.cpp

Allow BlockDecl in CXXRecord scope to have no access specifier.

Using a BlockDecl in a default member initializer causes it to be attached to
CXXMethodDecl without its access specifier being set.  This prevents a crash
where getAccess is called on this BlockDecl, since that method expects any
Decl in CXXRecord scope to have an access specifier.

LLVM — llvm/trunk/test/CodeGen/SystemZ branch-12.ll, llvm/trunk/test/CodeGen/SystemZ/Large branch-01.ll lit.local.cfg

[SystemZ] Run branch-12.ll test only if long tests enabled

This avoids excessive test run times e.g. with expensive checks enabled.

LLVM — cfe/trunk/test/Driver x86-march.c

[X86] Add goldmont to test/Driver/x86-march.c
Delta File
+4 -0 cfe/trunk/test/Driver/x86-march.c
+4 -0 1 file

LLVM — llvm/trunk/lib/MC WasmObjectWriter.cpp, llvm/trunk/test/MC/WebAssembly global-ctor-dtor.ll weak-alias.ll

[WebAssembly] MC: Start table at offset 1 rather than 0

For consistency with the output of lld.

This is useful in runnable binaries as can them be sure the
null function pointer will never be a valid argument

Subscribers: jfb, dschuff, jgravelle-google, aheejin, sunfish, llvm-commits

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

LLVM — cfe/trunk CMakeLists.txt

[cmake] Also pass CMAKE_ASM_COMPILER_ID to next stage when bootstrapping

When setting CMAKE_ASM_COMPILER=clang, we also need to set

This is needed because cmake won't set CMAKE_ASM_COMPILER_ID if
CMAKE_ASM_COMPILER is already set.

Without CMAKE_ASM_COMPILER_ID, cmake can't set
CMAKE_ASM_COMPILER_TARGET is ignored, causing cross compiling to fail,
i.e., `--target=${CMAKE_ASM_COMPILER_TARGET}` isn't passed.

Differential Revision: https://reviews.llvm.org/D42232
Delta File
+2 -1 cfe/trunk/CMakeLists.txt
+2 -1 1 file

LLVM — lld/trunk/wasm InputFiles.cpp Writer.cpp

[WebAssembly] Allow non-zero table offset in input object

Summary: This change enables D42284 to land without breaking lld

Subscribers: jfb, dschuff, jgravelle-google, aheejin, sunfish, llvm-commits

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

LLVM — libcxx/trunk/include algorithm, libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.replace replace_copy_if.pass.cpp replace_copy.pass.cpp

More P0202 constexpr-ifying in <algorithm>. This commit handles 

LLVM — llvm/trunk/test/CodeGen/X86 gather-addresses.ll

[X86][SSE] Add SSE2 gather tests

Check codegen without PEXTRD

LLVM — llvm/trunk/cmake/modules LLVMConfig.cmake.in

[cmake] Include LLVM_LIBXML2_ENABLED in LLVMConfig.cmake, PR36006

Include the LLVM_LIBXML2_ENABLED cache variable in LLVMConfig.cmake
in order to make it available for other LLVM packages to query. This
is necessary to fix stand-alone testing of LLD.

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

LLVM — llvm/trunk/lib/Target/ARM ARMBaseInstrInfo.cpp, llvm/trunk/test/CodeGen/ARM overflow-intrinsic-optimizations.ll

[ARM] Fix perf regression in compare optimization.

Fix a performance regression caused by r322737.

While trying to make it easier to replace compares with existing adds and
subtracts, I accidentally stopped it from doing so in some cases.  This should
fix that.  I'm also fixing another potential bug in that commit.

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

LLVM — llvm/trunk/lib/Target/WebAssembly WebAssemblyRuntimeLibcallSignatures.cpp, llvm/trunk/test/CodeGen/WebAssembly libcalls.ll

[WebAssembly] Fix libcall signature lookup

RuntimeLibcallSignatures previously manually initialized all the libcall
names into an array and searched it linearly for the first match to lookup
the corresponding index.
r322802 switched that to initializing a map keyed by the libcall name.
Neither of these approaches works correctly because some libcall numbers use
the same name on different platforms (e.g. the "l" suffixed functions
use f80 or f128 or ppcf128).

This change fixes that by ensuring that each name only goes into the map
once. It also adds tests.

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

LLVM — libcxx/trunk/include algorithm, libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.transform unary_transform.pass.cpp binary_transform.pass.cpp

More P0202 constexpr-ifying in <algorithm>. This commit handles 'transform'.

LLVM — llvm/trunk/docs LangRef.rst

Additional fixes for docs in addition to r322968.
Delta File
+2 -2 llvm/trunk/docs/LangRef.rst
+2 -2 1 file