Displaying 1 50 of 255,368 commits (0.054s)

LLVM — cfe/trunk/include/clang/AST StmtCXX.h, cfe/trunk/include/clang/Basic DiagnosticSemaKinds.td

[coroutines] Handle get_return_object_on_allocation_failure

If promise_type has get_return_object_on_allocation_failure defined,
check if an allocation function returns nullptr, and if so,
return the result of get_return_object_on_allocation_failure().

Reviewers: rsmith, EricWF

Reviewed By: EricWF

Subscribers: mehdi_amini, cfe-commits

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

LLVM — llvm/trunk/include/llvm/Transforms/Utils ModuleUtils.h, llvm/trunk/lib/Transforms/Instrumentation AddressSanitizer.cpp

Revert "[asan] Delay creation of asan ctor."

Speculative revert. Some libfuzzer tests are affected.

This reverts commit r298731.

LLVM — llvm/trunk/lib/Transforms/Instrumentation AddressSanitizer.cpp, llvm/trunk/test/Instrumentation/AddressSanitizer no-globals.ll instrument_global.ll

Revert "[asan] Put ctor/dtor in comdat."

Speculative revert, some libfuzzer tests are affected.

This reverts commit r298756.

LLVM — llvm/trunk/lib/Target/PowerPC PPCInstrInfo.cpp

Remove an oddly unnecessary temporary.

LLVM — llvm/trunk/test/CodeGen/Generic MachineBranchProb.ll

[ARM] Mark falky test unsupported until we find the cause

LLVM — llvm/trunk/lib/Fuzzer/test fuzzer-oom.test

[libfuzzer] Remove XFAIL for OutOfMemory test.

This test is now passing on Darwin.

See rdar://problem/31282257.

LLVM — llvm/trunk/include/llvm/CodeGen TargetSchedule.h, llvm/trunk/include/llvm/Target TargetSchedule.td

Improve machine schedulers for in-order processors

This patch enables schedulers to specify instructions that 
cannot be issued with any other instructions.
It also fixes BeginGroup/EndGroup.

Reviewed by: Andrew Trick
Differential Revision: https://reviews.llvm.org/D30744

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

Add the error handling for Mach-O dyld compact lazy bind, weak bind and
rebase entry errors and test cases for each of the error checks.

Also verified with Nick Kledzik that a BIND_OPCODE_SET_ADDEND_SLEB
opcode is legal in a lazy bind table, so code that had that as an error
check was removed.

With MachORebaseEntry and MachOBindEntry classes now returning
an llvm::Error in all cases for malformed input the variables Malformed
and logic to set use them is no longer needed and has been removed
from those classes.

Also in a few places, removed the redundant Done assignment to true
when also calling moveToEnd() as it does that assignment.

This only leaves the dyld compact export entries left to have
error handling yet to be added for the dyld compact info.
Delta File
+274 -46 llvm/trunk/lib/Object/MachOObjectFile.cpp
+58 -1 llvm/trunk/test/tools/llvm-objdump/macho-bad-bind.test
+19 -5 llvm/trunk/include/llvm/Object/MachO.h
+0 -0 llvm/trunk/test/tools/llvm-objdump/Inputs/macho-bind-missing-done
+0 -0 llvm/trunk/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-uleb-times-skipping-uleb
+0 -0 llvm/trunk/test/tools/llvm-objdump/Inputs/macho-lazy-do_bind_add_addr_uleb
+0 -0 16 files not shown
+351 -52 22 files

LLVM — llvm/trunk/lib/Transforms/Vectorize LoopVectorize.cpp, llvm/trunk/test/Transforms/LoopVectorize induction.ll

[LV] Transform truncations of non-primary induction variables

The vectorizer tries to replace truncations of induction variables with new
induction variables having the smaller type. After r295063, this optimization
was applied to all integer induction variables, including non-primary ones.
When optimizing the truncation of a non-primary induction variable, we still
need to transform the new induction so that it has the correct start value.
This should fix PR32419.

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

LLVM — llvm/trunk/include/llvm/ADT APInt.h, llvm/trunk/lib/Support APInt.cpp

[APInt] Move operator=(uint64_t) inline as its pretty simple and is often used with small 
constants that the compiler can optimize.

While there recognize that we only need to clearUnusedBits on the single word case.

LLVM — cfe/trunk/include/clang/Basic AttrDocs.td Attr.td, cfe/trunk/lib/Sema SemaStmtAttr.cpp SemaDeclAttr.cpp

Add [[clang::suppress(rule, ...)]] attribute

This patch implements parsing of [[clang::suppress(rule, ...)]]
and [[gsl::suppress(rule, ...)]] attributes.

C++ Core Guidelines depend heavily on tool support for
rule enforcement. They also propose a way to suppress
warnings [1] which is by annotating any ancestor in AST
with the C++11 attribute [[gsl::suppress(rule1,...)]].
To have a mechanism to suppress non-C++ Core
Guidelines specific, an additional spelling of [[clang::suppress]]
is defined.

For example, to suppress the warning cppcoreguidelines-slicing,
one could do
void f() { ... code that does slicing ... }
void g() {
  Derived b;

    [33 lines not shown]

LLVM — cfe/trunk/include/clang/AST Expr.h ExprCXX.h, cfe/trunk/include/clang/Basic LangOptions.h

Encapsulate FPOptions and use it consistently

Sema holds the current FPOptions which is adjusted by 'pragma STDC
FP_CONTRACT'.  This then gets propagated into expression nodes as they are

This encapsulates FPOptions so that this propagation happens opaquely rather
than directly with the fp_contractable on/off bit.  This allows controlled
transitioning of fp_contractable to a ternary value (off, on, fast).  It will
also allow adding more fast-math flags later.

This is toward moving fp-contraction=fast from an LLVM TargetOption to a
FastMathFlag in order to fix PR25721.

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

LLVM — lldb/trunk/source/Utility FileSpec.cpp, lldb/trunk/unittests/Host FileSpecTest.cpp

In FileSpec::Equal, short-cut GetNormalizedPath.

GetNormalizedPath seems to be slow, so it's worth
shortcutting it if possible.  This change does so
when the filenames and not equal and we can tell
GetNormalizedPath would not make them equal.

Also added a test for "." final component since that
was missing.

LLVM — llvm/trunk/utils/TableGen CodeGenRegisters.cpp CodeGenRegisters.h

[TableGen] Print #nnn as a name of an non-native reg unit with id nnn

When using -debug with -gen-register-info, tablegen will crash when
trying to print a name of a non-native register unit. This patch only
affects the debug information generated while running llvm-tblgen,
and has no impact on the compilable code coming out of it.

LLVM — lldb/trunk/lldb.xcodeproj project.pbxproj

Fix the Xcode project for OpenBSD additions.

LLVM — llvm/trunk/lib/Target/AMDGPU SIMachineScheduler.cpp SIMachineScheduler.h

[AMDGPU] SISched: Detect dependency types between blocks

Patch by Axel Davy (axel.davy at normalesup.org)

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

LLVM — llvm/trunk/lib/Support/Unix Signals.inc

[Support] Avoid concurrency hazard in signal handler registration

Several static functions from the signal API can be invoked
simultaneously; RemoveFileOnSignal for instance can be called indirectly
by multiple parallel loadModule() invocations, which might lead to
the assertion:

Assertion failed: (NumRegisteredSignals < array_lengthof(RegisteredSignalInfo) && "Out of 
space for signal handlers!"),
  function RegisterHandler, file /llvm/lib/Support/Unix/Signals.inc, line 105.

RemoveFileOnSignal calls RegisterHandlers(), which isn't currently
mutex protected, leading to the behavior above. This potentially affect
a few other users of RegisterHandlers() too.


LLVM — llvm/trunk/include/llvm/ADT APInt.h, llvm/trunk/lib/Support APInt.cpp

[APInt] Move operator&=(uint64_t) inline and use memset to clear the upper words.

This method is pretty new and probably isn't use much in the code base so this should have 
a negligible size impact. The OR and XOR operators are already inline.

LLVM — llvm/trunk/lib/Target/AArch64 AArch64InstructionSelector.cpp

[GlobalISel][AArch64] Extract a variable out of an NDEBUG block. NFC.

r298863 used PtrReg, but that's never defined in release builds. Fix it.

LLVM — llvm/trunk/include/llvm/ADT APInt.h, llvm/trunk/unittests/ADT APIntTest.cpp

[APInt] Use memset in setAllBits.

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter CodeViewDebug.cpp

Remove redundant check for nullptr.

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter DwarfExpression.h

Remove unneccessary virtual destructor from DwarfExpression.

LLVM — llvm/trunk/lib/Target/AArch64 AArch64InstructionSelector.cpp, llvm/trunk/test/CodeGen/AArch64/GlobalISel select-load.mir select-store.mir

[GlobalISel][AArch64] Fold FI into LDR/STR ui addressing mode.

A majority of loads and stores at O0 access an alloca.

It's trivial to fold the G_FRAME_INDEX into the instruction; do it.

LLVM — llvm/trunk/lib/Target/AArch64 AArch64InstructionSelector.cpp, llvm/trunk/test/CodeGen/AArch64/GlobalISel select-load.mir select-store.mir

[GlobalISel][AArch64] Fold G_GEP into LDR/STR ui addressing mode.

We're not to the point of supporting the load/store patterns yet
(because they extensively use PatFrags).

But in the meantime, we can implement some of the simplest addressing

LLVM — llvm/trunk/lib/Target/AArch64 AArch64InstructionSelector.cpp, llvm/trunk/test/CodeGen/AArch64/GlobalISel select-store.mir

[GlobalISel][AArch64] Select store of zero to WZR/XZR.

These occur very frequently, and are quite trivial to catch.

LLVM — llvm/trunk/lib/Target/AMDGPU SIMachineScheduler.cpp

[AMDGPU] SISched: Update colorEndsAccordingToDependencies

Patch by Axel Davy (axel.davy at normalesup.org)

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

LLVM — llvm/trunk/include/llvm/ADT APInt.h, llvm/trunk/lib/Support APInt.cpp

[APInt] Move the >64 bit case for flipAllBits out of line.

This is more consistent with what we do for other operations. This shrinks the opt binary 
on my build by ~72k.

LLVM — llvm/trunk/lib/Target/AMDGPU SIMachineScheduler.cpp SIMachineScheduler.h

[AMDGPU] Fix SI scheduler LiveOut Refcount issue

Patch by Axel Davy (axel.davy at normalesup.org)

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

LLVM — llvm/trunk/lib/Target/AArch64 AArch64InstructionSelector.cpp AArch64InstructionSelector.h, llvm/trunk/test/CodeGen/AArch64/GlobalISel select-cbz.mir

[GlobalISel][AArch64] Select CBZ.

CBZ/CBNZ represent a substantial portion of all conditional branches.
Look through G_ICMP to select them.

We can't use tablegen yet because the existing patterns match an
AArch64ISD node.

LLVM — llvm/trunk/include/llvm/CodeGen/GlobalISel InstructionSelector.h, llvm/trunk/lib/CodeGen/GlobalISel InstructionSelector.cpp

[GlobalISel] Add a 'getConstantVRegVal' helper.

Use it to compare immediate operands.

LLVM — llvm/trunk/test/CodeGen/AArch64/GlobalISel select-xor.mir

[GlobalISel][AArch64] Use proper constant types in test. NFC.

LLVM — cfe/trunk/lib/Sema SemaStmt.cpp, cfe/trunk/test/SemaCXX warn-unused-value.cpp

Look through CXXBindTemporaryExprs when checking CXXFunctionCastExprs
for unused values.

This fixes a regression caused by r298676, where constructor calls to
classes with non-trivial dtor were marked as unused if the first
argument is an initializer list. This is inconsistent (as the test
shows) and also warns on a reasonbly common code pattern where people
just call constructors to create and immediately destroy an object.

LLVM — llvm/trunk/lib/Target/AMDGPU VOP1Instructions.td AMDGPUISelDAGToDAG.cpp, llvm/trunk/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp

[AMDGPU][MC] Fix for Bug 28207 + LIT tests

Enabled clamp and omod for v_cvt_* opcodes which have src0 of an integer type

Reviewers: vpykhtin, arsenm

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

LLVM — llvm/trunk/lib/Target/AArch64 AArch64ExpandPseudoInsts.cpp AArch64InstrInfo.td, llvm/trunk/test/CodeGen/AArch64 thread-pointer.ll

[AArch64] Mark mrs of TPIDR_EL0 (thread pointer) as not having side effects.

Among other things, this allows Machine LICM to hoist a costly 'mrs'
instruction from within a loop.

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

LLVM — cfe/trunk/include/clang/Driver Options.td, cfe/trunk/lib/Driver/ToolChains/Arch AArch64.cpp ARM.cpp

[ARM] Add a driver option for +no-neg-immediates

Reviewers: olista01, rengolin, javed.absar, samparker

Reviewed By: samparker

Subscribers: samparker, llvm-commits, aemerson

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

LLVM — llvm/trunk/lib/Target/AMDGPU SIISelLowering.cpp R600ISelLowering.cpp, llvm/trunk/lib/Target/AMDGPU/MCTargetDesc AMDGPUCodeObjectMetadataStreamer.cpp AMDGPUCodeObjectMetadataStreamer.h

[AMDGPU] Get address space mapping by target triple environment

As we introduced target triple environment amdgiz and amdgizcl, the address
space values are no longer enums. We have to decide the value by target triple.

The basic idea is to use struct AMDGPUAS to represent address space values.
For address space values which are not depend on target triple, use static
const members, so that they don't occupy extra memory space and is equivalent
to a compile time constant.

Since the struct is lightweight and cheap, it can be created on the fly at
the point of usage. Or it can be added as member to a pass and created at
the beginning of the run* function.

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

LLVM — llvm/trunk/lib/Transforms/InstCombine InstructionCombining.cpp, llvm/trunk/test/Transforms/InstCombine phi-select-constexpr.ll

[InstCombine] Avoid incorrect folding of select into phi nodes when incoming element is a 
vector type

We are incorrectly folding selects into phi nodes when the incoming value of a phi
node is a constant vector. This optimization is done in `FoldOpIntoPhi` when the
select condition is a phi node with constant incoming values.
Without the fix, we are miscompiling (i.e. incorrectly folding the
select into the phi node) when the vector contains non-zero
This patch fixes the miscompile and we will correctly fold based on the
select vector operand (see added test cases).

Reviewers: majnemer, sanjoy, spatel

Subscribers: llvm-commits

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

LLVM — llvm/trunk/lib/Support CommandLine.cpp

Correct OptionCategoryCompare() in the command line library.

It should return <0, 0, or >0 for less-than, equal, and greater-than like
strcmp() (according to the history, it used to be implemented with
strcmp()) but it actually returned 0, or 1 for not-equal and equal.

Reviewers: qcolombet

Reviewed By: qcolombet

Subscribers: qcolombet, llvm-commits

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

LLVM — llvm/trunk/utils/TableGen CodeGenTarget.cpp DAGISelMatcherEmitter.cpp

[tablegen] Use categories on options that only matter to one emitter.

The categories are emitted in a strange order in this patch due to a bug in the
CommandLine library.

Reviewers: ab

Reviewed By: ab

Subscribers: ab, llvm-commits

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

LLVM — cfe/trunk/include/clang/Parse RAIIObjectsForParser.h, cfe/trunk/lib/Parse Parser.cpp

Publish one more parser RAII for external use.

LLVM — llvm/trunk/include/llvm/ADT iterator.h, llvm/trunk/unittests/ADT IteratorTest.cpp

ADT: Add range helpers for pointer_ and pointee_iterator

LLVM — llvm/trunk/lib/Target/X86 X86ISelLowering.cpp, llvm/trunk/test/CodeGen/X86 vector-interleave.ll vector-shuffle-256-v8.ll

[X86][AVX2] bugzilla bug 21281 Performance regression in vector interleave in AVX2
This is a patch for an on-going bugzilla bug 21281 on the generated X86 code for a matrix 
transpose8x8 subroutine which requires vector interleaving. The generated code in AVX2 is 
currently non-optimal and requires 60 instructions as opposed to only 40 instructions 
generated for AVX1.
 The patch includes a fix for the AVX2 case where vector unpack instructions use less 
operations than the vector blend operations available in AVX2.
 In this case using vector unpack instructions is more efficient.


LLVM — cfe/trunk/lib/Frontend CompilerInvocation.cpp, cfe/trunk/test/CodeGenOpenCL relaxed-fpmath.cl

[OpenCL] Extended mapping of parcing CodeGen arguments

Summary: Enable cl_mad_enamle and cl_no_signed_zeros options when user turns on 
cl_unsafe_math_optimizations or cl_fast_relaxed_math options.

Reviewers: Anastasia, cfe-commits

Reviewed By: Anastasia

Subscribers: bader, yaxunl

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

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

[XRay][clang] Remove dependency on libatomic for XRay builds

This change depends on D31381 where we change the implementation to use
sanitizer_common provided atomic operations library.

Fixes http://llvm.org/PR32274.

Reviewers: pelikan, dblaikie

Subscribers: cfe-commits

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

LLVM — llvm/trunk/utils/TableGen CodeGenMapTable.cpp

[TableGen] Make CodeGenMapTable understand the namespace field of an instruction

Do not force the backends to use target name as namespace.

Original patch by Mattias Eriksson

Reviewers: stoklund, craig.topper

Reviewed By: stoklund

Subscribers: materi, llvm-commits

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

LLVM — llvm/trunk/include/llvm/IR Value.h GlobalIndirectSymbol.h, llvm/trunk/lib/IR Value.cpp Globals.cpp

[IR] Implement pairs of non-const and const methods using the const version instead of the 
non-const version. NFCI

This removes a const_cast of the this pointer.

LLVM — llvm/trunk/include/llvm/IR Instruction.h BasicBlock.h, llvm/trunk/lib/IR Instruction.cpp BasicBlock.cpp

[IR] Share implementation for pairs of const and non-const methods using const_cast. NFCI

LLVM — lld/trunk/ELF DriverUtils.cpp

Delta File
+5 -5 lld/trunk/ELF/DriverUtils.cpp
+5 -5 1 file