platform/upstream/llvm.git
4 years ago[X86] Try to avoid casts around logical vector ops recursively.
Florian Hahn [Mon, 20 Jan 2020 01:11:43 +0000 (17:11 -0800)]
[X86] Try to avoid casts around logical vector ops recursively.

Currently PromoteMaskArithemtic only looks at a single operation to
skip casts. This means we miss cases where we combine multiple masks.

This patch updates PromoteMaskArithemtic to try to recursively promote
AND/XOR/AND nodes that terminate in truncates of the right size or
constant vectors.

Reviewers: craig.topper, RKSimon, spatel

Reviewed By: RKSimon

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

4 years ago[BranchRelaxation] Simplify offset computation and fix a bug in adjustBlockOffsets()
Fangrui Song [Sun, 19 Jan 2020 22:53:45 +0000 (14:53 -0800)]
[BranchRelaxation] Simplify offset computation and fix a bug in adjustBlockOffsets()

If Start!=0, adjustBlockOffsets() may unnecessarily adjust the offset of
Start. There is no correctness issue, but it can create more block
splits.

4 years agofix doc typos to cycle bots
Nico Weber [Sun, 19 Jan 2020 23:13:08 +0000 (18:13 -0500)]
fix doc typos to cycle bots

4 years ago[TargetRegisterInfo] Default trackLivenessAfterRegAlloc() to true
Fangrui Song [Sun, 19 Jan 2020 21:35:54 +0000 (13:35 -0800)]
[TargetRegisterInfo] Default trackLivenessAfterRegAlloc() to true

Except AMDGPU/R600RegisterInfo (a bunch of MIR tests seem to have
problems), every target overrides it with true. PostMachineScheduler
requires livein information. Not providing it can cause assertion
failures in ScheduleDAGInstrs::addSchedBarrierDeps().

4 years ago[ORC] Add weak symbol support to defineMaterializing, fix for PR40074.
Lang Hames [Fri, 17 Jan 2020 22:48:48 +0000 (14:48 -0800)]
[ORC] Add weak symbol support to defineMaterializing, fix for PR40074.

The MaterializationResponsibility::defineMaterializing method allows clients to
add new definitions that are in the process of being materialized to the JIT.
This patch adds support to defineMaterializing for symbols with weak linkage
where the new definitions may be rejected if another materializer concurrently
defines the same symbol. If a weak symbol is rejected it will not be added to
the MaterializationResponsibility's responsibility set. Clients can check for
membership in the responsibility set via the
MaterializationResponsibility::getSymbols() method before resolving any
such weak symbols.

This patch also adds code to RTDyldObjectLinkingLayer to tag COFF comdat symbols
introduced during codegen as weak, on the assumption that these are COFF comdat
constants. This fixes http://llvm.org/PR40074.

4 years agoFix gcc `-Wunused-variable` warning. NFC.
Michael Liao [Sun, 19 Jan 2020 17:23:11 +0000 (12:23 -0500)]
Fix gcc `-Wunused-variable` warning. NFC.

4 years agoRemove extra "\01" prefix in EH docs
Reid Kleckner [Sun, 19 Jan 2020 16:20:17 +0000 (08:20 -0800)]
Remove extra "\01" prefix in EH docs

These escapes haven't been necessary since f8b51c5f90c60. Remove them to
declutter the docs.

4 years ago[clang-format] Expand the SpacesAroundConditions option to include catch statements
mydeveloperday [Sun, 19 Jan 2020 15:56:04 +0000 (15:56 +0000)]
[clang-format] Expand the SpacesAroundConditions option to include catch statements

Summary: This diff expands the SpacesAroundConditions option added in D68346 to include adding spaces to catch statements.

Reviewed By: MyDeveloperDay

Patch by: timwoj

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

4 years ago[clang-format] Add IndentCaseBlocks option
mydeveloperday [Sun, 19 Jan 2020 15:52:26 +0000 (15:52 +0000)]
[clang-format] Add IndentCaseBlocks option

Summary:
The documentation for IndentCaseLabels claimed that the "Switch
statement body is always indented one level more than case labels". This
is technically false for the code block immediately following the label.
Its closing bracket aligns with the start of the label.

If the case label are not indented, it leads to a style where the
closing bracket of the block aligns with the closing bracket of the
switch statement, which can be hard to parse.

This change introduces a new option, IndentCaseBlocks, which when true
treats the block as a scope block (which it technically is).

(Note: regenerated ClangFormatStyleOptions.rst using tools/dump_style.py)

Reviewed By: MyDeveloperDay

Patch By: capn

Tags: #clang-format, #clang

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

4 years agoAllow space after C-style cast in C# code
mydeveloperday [Sun, 19 Jan 2020 15:41:40 +0000 (15:41 +0000)]
Allow space after C-style cast in C# code

Reviewed By: MyDeveloperDay, krasimir

Patch By: jbcoe

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

4 years ago[gn build] Port a0f50d73163
LLVM GN Syncbot [Sun, 19 Jan 2020 14:54:02 +0000 (14:54 +0000)]
[gn build] Port a0f50d73163

4 years agofix doc typos to cycle bots
Nico Weber [Sun, 19 Jan 2020 14:51:25 +0000 (09:51 -0500)]
fix doc typos to cycle bots

4 years ago[CodeGen] Move fentry-insert, xray-instrumentation and patchable-function before...
Fangrui Song [Sun, 19 Jan 2020 05:44:06 +0000 (21:44 -0800)]
[CodeGen] Move fentry-insert, xray-instrumentation and patchable-function before addPreEmitPass()

This intention is to move patchable-function before aarch64-branch-targets
(configured in AArch64PassConfig::addPreEmitPass) so that we emit BTI before NOPs
(see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92424).

This also allows addPreEmitPass() passes to know the precise instruction sizes if they want.

Tried x86-64 Debug/Release builds of ccls with -fxray-instrument -fxray-instruction-threshold=1.
No output difference with this commit and the previous commit.

4 years ago[XRay] Set hasSideEffects flag of PATCHABLE_FUNCTION_{ENTER,EXIT}
Fangrui Song [Sun, 19 Jan 2020 06:36:33 +0000 (22:36 -0800)]
[XRay] Set hasSideEffects flag of PATCHABLE_FUNCTION_{ENTER,EXIT}

Otherwise they may be picked as the delay slot by mips-delay-slot-filler, if we move patchable-function before mips-delay-slot-filler.

4 years ago[DebugInfo][test] Change two MIR tests to use -start-before=livedebugvalues instead...
Fangrui Song [Sun, 19 Jan 2020 07:12:22 +0000 (23:12 -0800)]
[DebugInfo][test] Change two MIR tests to use -start-before=livedebugvalues instead of -start-after=patchable-function

To break order dependency between livedebugvalues and patchable-function.

4 years ago[X86] Remove X86ISD::FILD_FLAG and stop gluing nodes together.
Craig Topper [Sun, 19 Jan 2020 05:25:17 +0000 (23:25 -0600)]
[X86] Remove X86ISD::FILD_FLAG and stop gluing nodes together.

Summary:
I think whatever problem the gluing was fixing has long since been fixed. We don't have any of the restrictions on FP stack stuff that existed back when this was first added.

I had to change which type we use for FILD in BuildFILD when X86 was enabled because most of the isel patterns block f32/f64 instructions when SSE1/SSE2 are enabled. So I needed to use the f80 pattern, but this shouldn't have an effect the generated code since there is only one FILD instruction anyway. We already use f80 explicitly in other other places.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: andrew.w.kaylor, scanon, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[X86][BranchAlign] Suppress branch alignment for {,_}__tls_get_addr
Fangrui Song [Thu, 16 Jan 2020 22:08:31 +0000 (14:08 -0800)]
[X86][BranchAlign] Suppress branch alignment for {,_}__tls_get_addr

The x86-64 General Dynamic TLS code sequence uses prefixes to allow
linker relaxation.  Adding segment override prefix or NOPs can break
linker relaxation (ld -pie/-no-pie).

i386 General Dynamic and x86-64 Local Dynamic do not use prefixes, but
for simplicity, just disable auto padding consistently.

Reviewed By: skan, LuoYuanke

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

4 years ago[AsmPrinter] Delete dead takeDeletedSymbsForFunction()
Fangrui Song [Sun, 19 Jan 2020 00:59:11 +0000 (16:59 -0800)]
[AsmPrinter] Delete dead takeDeletedSymbsForFunction()

The code added in r98579 is dead now.

4 years ago[Concepts] Fix name-type conflict compilation issues
Saar Raz [Sat, 18 Jan 2020 22:45:25 +0000 (00:45 +0200)]
[Concepts] Fix name-type conflict compilation issues

D50360 caused some platforms to not compile due to a parameter with the name of a type.

Rename the parameter.

4 years ago[Concepts] Requires Expressions
Saar Raz [Sat, 18 Jan 2020 07:11:43 +0000 (09:11 +0200)]
[Concepts] Requires Expressions

Implement support for C++2a requires-expressions.

Re-commit after compilation failure on some platforms due to alignment issues with PointerIntPair.

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

4 years ago[llvm-exegesis][mips] Fix -Wunused-function after D72858
Fangrui Song [Sat, 18 Jan 2020 21:54:11 +0000 (13:54 -0800)]
[llvm-exegesis][mips] Fix -Wunused-function after D72858

4 years ago[lldb/Test] XFAIL TestRequireHWBreakpoints when HW BPs are avialable
Jonas Devlieghere [Sat, 18 Jan 2020 21:12:45 +0000 (13:12 -0800)]
[lldb/Test] XFAIL TestRequireHWBreakpoints when HW BPs are avialable

Resolves PR44055

4 years ago[mlir] NFC: Rename index_t to index_type
Rainer Orth [Sat, 18 Jan 2020 21:10:46 +0000 (22:10 +0100)]
[mlir] NFC: Rename index_t to index_type

mlir currently fails to build on Solaris:

  /vol/llvm/src/llvm-project/dist/mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp:78:20: error: reference to 'index_t' is ambiguous
    IndexHandle zero(index_t(0)), one(index_t(1));
                     ^
  /usr/include/sys/types.h:103:16: note: candidate found by name lookup is 'index_t'
  typedef short           index_t;
                          ^
  /vol/llvm/src/llvm-project/dist/mlir/include/mlir/EDSC/Builders.h:27:8: note: candidate found by name lookup is 'mlir::edsc::index_t'
  struct index_t {
         ^

and many more.

Given that POSIX reserves all identifiers ending in `_t` 2.2.2 The Name Space <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html>, it seems
quite unwise to use such identifiers in user code, even more so without a distinguished
prefix.

The following patch fixes this by renaming `index_t` to `index_type`.
cases.

Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`.

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

4 years ago[mlir] Fix compilation with VS2019.
Alexandre Ganea [Sat, 18 Jan 2020 17:57:16 +0000 (12:57 -0500)]
[mlir] Fix compilation with VS2019.

4 years ago[debugserver] Share code between Enable/DisableHardwareWatchpoint (NFC)
Jonas Devlieghere [Sat, 18 Jan 2020 19:36:28 +0000 (11:36 -0800)]
[debugserver] Share code between Enable/DisableHardwareWatchpoint (NFC)

This extract the common functionality of enabling and disabling hardware
watchpoints into a single function.

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

4 years ago[test] clang/test/InterfaceStubs/externstatic.c requires x86-registered-target
Fangrui Song [Sat, 18 Jan 2020 17:54:35 +0000 (09:54 -0800)]
[test] clang/test/InterfaceStubs/externstatic.c requires x86-registered-target

4 years agoRevert "[Support] Explicitly instantiate BumpPtrAllocatorImpl"
Reid Kleckner [Sat, 18 Jan 2020 17:33:00 +0000 (09:33 -0800)]
Revert "[Support] Explicitly instantiate BumpPtrAllocatorImpl"

This reverts commit add95990508ee0aec90d07bcce1bba47b4f46622.

Buildbots don't seem to like it.

4 years ago[Support] Explicitly instantiate BumpPtrAllocatorImpl
Reid Kleckner [Sat, 18 Jan 2020 17:20:20 +0000 (09:20 -0800)]
[Support] Explicitly instantiate BumpPtrAllocatorImpl

Most clients only ever use the default BumpPtrAllocator.

4 years agoRevert "[ms] [llvm-ml] Add placeholder for llvm-ml, based on llvm-mc"
Eric Astor [Sat, 18 Jan 2020 14:50:32 +0000 (09:50 -0500)]
Revert "[ms] [llvm-ml] Add placeholder for llvm-ml, based on llvm-mc"

This reverts commit 22af2cbefc86dbef6e11ddaa96a08956e0baf22b, due to breakages on ARM platforms.

4 years agoRevert "[Concepts] Requires Expressions"
Saar Raz [Sat, 18 Jan 2020 12:58:01 +0000 (14:58 +0200)]
Revert "[Concepts] Requires Expressions"

This reverts commit 027931899763409e2c61a84bdee6057b5e838ffa.

There have been some failing tests on some platforms, reverting while investigating.

4 years ago[X86] Rename lowerShuffleAsRotate -> lowerShuffleAsVALIGN
Simon Pilgrim [Sat, 18 Jan 2020 11:29:14 +0000 (11:29 +0000)]
[X86] Rename lowerShuffleAsRotate -> lowerShuffleAsVALIGN

Since it can only ever create VALIGN nodes.

4 years ago[X86][SSE] Add some v16i8 reverse + endian swap style shuffle tests
Simon Pilgrim [Sat, 18 Jan 2020 10:55:09 +0000 (10:55 +0000)]
[X86][SSE] Add some v16i8 reverse + endian swap style shuffle tests

4 years ago[Concepts] Requires Expressions
Saar Raz [Sat, 18 Jan 2020 07:11:43 +0000 (09:11 +0200)]
[Concepts] Requires Expressions

Implement support for C++2a requires-expressions.

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

4 years ago[DAG] Add helper for creating constant vector index with correct type. NFC.
Michael Liao [Wed, 15 Jan 2020 07:06:57 +0000 (02:06 -0500)]
[DAG] Add helper for creating constant vector index with correct type. NFC.

4 years ago[lldb/testsuite] Modernize 2 test Makefiles
Fred Riss [Sat, 18 Jan 2020 04:49:08 +0000 (20:49 -0800)]
[lldb/testsuite] Modernize 2 test Makefiles

Those old Makefiles used completely ad-hoc rules for building files,
which means they didn't obey the test harness' variants.

They were somewhat tricky to update as they use very peculiar build
flags for some files. For this reason I was careful to compare the
build commands before and after the change, which is how I found the
discrepancy fixed by the previous commit.

While some of the make syntax used here might not be easy to grasp for
newcomers (per-target variable overrides), it seems better than to
have to repliacte the Makefile.rules logic for the test variants and
platform support.

4 years ago[lldb/Makefile.rules] Force the default target to be 'all'
Fred Riss [Sat, 18 Jan 2020 04:34:16 +0000 (20:34 -0800)]
[lldb/Makefile.rules] Force the default target to be 'all'

The test harness invokes the test Makefiles with an explicit 'all'
target, but it's handy to be able to recursively call Makefile.rules
without speficying a goal.

Some time ago, we rewrote some tests in terms of recursive invocations
of Makefile.rules. It turns out this had an unintended side
effect. While using $(MAKE) for a recursive invocation passes all the
variables set on the command line down, it doesn't pass the make
goals. This means that those recursive invocations would invoke the
default rule. It turns out the default rule of Makefile.rules is not
'all', but $(EXE). This means that ti would work becuase the
executable is always needed, but it also means that the created
binaries would not follow some of the other top-level build
directives, like MAKE_DSYM.

Forcing 'all' to be the default target seems easier than making sure
all the invocations are correct going forward. This patch does this
using the .DEFAULT_GOAL directive rather than hoisting the 'all' rule
to be the first one of the file. It seems like this explicit approach
will be less prone to be broken in the future. Hopefully all the make
implementations we use support it.

4 years agoDebugInfo: Move SectionLabel tracking into CU's addRange
David Blaikie [Sat, 18 Jan 2020 02:12:34 +0000 (18:12 -0800)]
DebugInfo: Move SectionLabel tracking into CU's addRange

This makes the SectionLabel handling more resilient - specifically for
future PROPELLER work which will have more CU ranges (rather than just
one per function).

Ultimately it might be nice to make this more general/resilient to
arbitrary labels (rather than relying on the labels being created for CU
ranges & then being reused by ranges, loclists, and possibly other
addresses). It's possible that other (non-rnglist/loclist) uses of
addresses will need the addresses to be in SectionLabels earlier (eg:
move the CU.addRange to be done on function begin, rather than function
end, so during function emission they are already populated for other
use).

4 years ago[IR] Remove some unnecessary cleanup in Module's dtor, and use a unique_ptr to simpli...
David Blaikie [Sat, 18 Jan 2020 01:29:34 +0000 (17:29 -0800)]
[IR] Remove some unnecessary cleanup in Module's dtor, and use a unique_ptr to simplify some

Follow on from D72812, based on Mehdi Amini's feedback.

4 years ago[WebAssembly] Track frame registers through VReg and local allocation
Derek Schuff [Wed, 18 Dec 2019 22:50:19 +0000 (14:50 -0800)]
[WebAssembly] Track frame registers through VReg and local allocation

This change has 2 components:

Target-independent: add a method getDwarfFrameBase to TargetFrameLowering. It
describes how the Dwarf frame base will be encoded.  That can be a register (the
default), the CFA (which replaces NVPTX-specific logic in DwarfCompileUnit), or
a DW_OP_WASM_location descriptr.

WebAssembly: Allow WebAssemblyFunctionInfo::getFrameRegister to return the
correct virtual register instead of FP32/SP32 after WebAssemblyReplacePhysRegs
has run.  Make WebAssemblyExplicitLocals store the local it allocates for the
frame register. Use this local information to implement getDwarfFrameBase

The result is that the DW_AT_frame_base attribute is correctly encoded for each
subprogram, and each param and local variable has a correct DW_AT_location that
uses DW_OP_fbreg to refer to the frame base.

This is a reland of rG3a05c3969c18 with fixes for the expensive-checks
and Windows builds

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

4 years ago[MLIR] LLVM dialect: modernize and cleanups
Frank Laub [Sat, 18 Jan 2020 01:11:04 +0000 (17:11 -0800)]
[MLIR] LLVM dialect: modernize and cleanups

Summary:
Modernize some of the existing custom parsing code in the LLVM dialect.
While this reduces some boilerplate code, it also reduces the precision
of the diagnostic error messges.

Reviewers: ftynse, nicolasvasilache, rriddle

Reviewed By: rriddle

Subscribers: merge_guards_bot, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, liufengdb, llvm-commits

Tags: #llvm

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

4 years agoTableGen/GlobalISel: Don't check exact intrinsic opcode value
Matt Arsenault [Sat, 18 Jan 2020 01:02:51 +0000 (20:02 -0500)]
TableGen/GlobalISel: Don't check exact intrinsic opcode value

4 years agoConsolidate internal denormal flushing controls
Matt Arsenault [Sat, 2 Nov 2019 00:57:29 +0000 (17:57 -0700)]
Consolidate internal denormal flushing controls

Currently there are 4 different mechanisms for controlling denormal
flushing behavior, and about as many equivalent frontend controls.

- AMDGPU uses the fp32-denormals and fp64-f16-denormals subtarget features
- NVPTX uses the nvptx-f32ftz attribute
- ARM directly uses the denormal-fp-math attribute
- Other targets indirectly use denormal-fp-math in one DAGCombine
- cl-denorms-are-zero has a corresponding denorms-are-zero attribute

AMDGPU wants a distinct control for f32 flushing from f16/f64, and as
far as I can tell the same is true for NVPTX (based on the attribute
name).

Work on consolidating these into the denormal-fp-math attribute, and a
new type specific denormal-fp-math-f32 variant. Only ARM seems to
support the two different flush modes, so this is overkill for the
other use cases. Ideally we would error on the unsupported
positive-zero mode on other targets from somewhere.

Move the logic for selecting the flush mode into the compiler driver,
instead of handling it in cc1. denormal-fp-math/denormal-fp-math-f32
are now both cc1 flags, but denormal-fp-math-f32 is not yet exposed as
a user flag.

-cl-denorms-are-zero, -fcuda-flush-denormals-to-zero and
-fno-cuda-flush-denormals-to-zero will be mapped to
-fp-denormal-math-f32=ieee or preserve-sign rather than the old
attributes.

Stop emitting the denorms-are-zero attribute for the OpenCL flag. It
has no in-tree users. The meaning would also be target dependent, such
as the AMDGPU choice to treat this as only meaning allow flushing of
f32 and not f16 or f64. The naming is also potentially confusing,
since DAZ in other contexts refers to instructions implicitly treating
input denormals as zero, not necessarily flushing output denormals to
zero.

This also does not attempt to change the behavior for the current
attribute. The LangRef now states that the default is ieee behavior,
but this is inaccurate for the current implementation. The clang
handling is slightly hacky to avoid touching the existing
denormal-fp-math uses. Fixing this will be left for a future patch.

AMDGPU is still using the subtarget feature to control the denormal
mode, but the new attribute are now emitted. A future change will
switch this and remove the subtarget features.

4 years agoAMDGPU/GlobalISel: Select llvm.amdgcn.update.dpp
Matt Arsenault [Fri, 17 Jan 2020 15:22:36 +0000 (10:22 -0500)]
AMDGPU/GlobalISel: Select llvm.amdgcn.update.dpp

The existing test is overly reliant on -mattr=-flat-for-global, and
some missing optimizations to re-use.

4 years agoAMDGPU/GlobalISel: Select DS append/consume
Matt Arsenault [Fri, 17 Jan 2020 03:27:31 +0000 (22:27 -0500)]
AMDGPU/GlobalISel: Select DS append/consume

4 years agoRemove unneeded FoldingSet.h include from Attributes.h
Reid Kleckner [Sat, 18 Jan 2020 00:04:02 +0000 (16:04 -0800)]
Remove unneeded FoldingSet.h include from Attributes.h

Avoids 637 extra FoldingSet.h and Allocator.h includes. FoldingSet.h
needs Allocator.h, which is relatively expensive.

4 years ago[libc] Replace the use of gtest with a new light weight unittest framework.
Siva Chandra Reddy [Fri, 10 Jan 2020 21:43:20 +0000 (13:43 -0800)]
[libc] Replace the use of gtest with a new light weight unittest framework.

Header files included wrongly using <...> are now included using the
internal path names as the new unittest framework allows us to do so.

Reviewers: phosek, abrachet

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

4 years agoRemove AllTargetsAsmPrinters
Nico Weber [Sat, 18 Jan 2020 00:04:06 +0000 (19:04 -0500)]
Remove AllTargetsAsmPrinters

It's been an empty target since r360498 and friends
(`git log --grep='Move InstPrinter files to MCTargetDesc.' llvm/lib/Target`),
but due to hwo the way these targets are structured it was silently
an empty target without anyone noticing.

No behavior change.

4 years agoRemove redundant CXXScopeSpec from TemplateIdAnnotation.
Richard Smith [Fri, 17 Jan 2020 23:42:11 +0000 (15:42 -0800)]
Remove redundant CXXScopeSpec from TemplateIdAnnotation.

A TemplateIdAnnotation represents only a template-id, not a
nested-name-specifier plus a template-id. Don't make a redundant copy of
the CXXScopeSpec and store it on the template-id annotation.

This slightly improves error recovery by more properly handling the case
where we would form an invalid CXXScopeSpec while parsing a typename
specifier, instead of accidentally putting the token stream into a
broken "annot_template_id with a scope specifier, but with no preceding
annot_cxxscope token" state.

4 years ago[gn build] Port d3db13af7e5
LLVM GN Syncbot [Fri, 17 Jan 2020 23:26:29 +0000 (23:26 +0000)]
[gn build] Port d3db13af7e5

4 years ago[gn build] fix build after 22af2cbefc
Nico Weber [Fri, 17 Jan 2020 23:25:49 +0000 (18:25 -0500)]
[gn build] fix build after 22af2cbefc

4 years agoMerge memtag instructions with adjacent stack slots.
Evgenii Stepanov [Wed, 8 Jan 2020 22:48:37 +0000 (14:48 -0800)]
Merge memtag instructions with adjacent stack slots.

Summary:
Detect a run of memory tagging instructions for adjacent stack frame slots,
and replace them with a shorter instruction sequence
* replace STG + STG with ST2G
* replace STGloop + STGloop with STGloop

This code needs to run when stack slot offsets are already known, but before
FrameIndex operands in STG instructions are eliminated; that's the
reason for the new hook in PrologueEpilogue.

This change modifies STGloop and STZGloop pseudos to take the size as an
immediate integer operand, and adds _untied variants of those pseudos
that are allowed to take the base address as a FI operand. This is needed to
simplify recognizing an STGloop instruction as operating on a stack slot
post-regalloc.

This improves memtag code size by ~0.25%, and it looks like an additional ~0.1%
is possible by rearranging the stack frame such that consecutive STG
instructions reference adjacent slots (patch pending).

Reviewers: pcc, ostannard

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[MemDepAnalysis/VNCoercion] Move static method to its only use. [NFCI]
Alina Sbirlea [Fri, 17 Jan 2020 23:02:32 +0000 (15:02 -0800)]
[MemDepAnalysis/VNCoercion] Move static method to its only use. [NFCI]

Static method MemoryDependenceResults::getLoadLoadClobberFullWidthSize
does not have or use any info specific to MemoryDependenceResults.
Move it to its only user: VNCoercion.

4 years ago[CMake] Prefer multi-target variables over generic target variables in runtimes build
James Nagurne [Fri, 17 Jan 2020 23:16:34 +0000 (15:16 -0800)]
[CMake] Prefer multi-target variables over generic target variables in runtimes build

Runtimes variables in a multi-target environment are defined like:

RUNTIMES_target_VARIABLE_NAME
RUNTIMES_target+multi_VARIABLE_NAME

In my case, I have a downstream runtimes cache that does the following:

set(RUNTIMES_${target}+except_LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")

I found that I was always getting the 'target' variable value (OFF) in
my 'target+except' build, which was unexpected.  This behavior was
caused by the loop in llvm/runtimes/CMakeLists.txt that runs through all
variable names, adding '-DVARIABLE_NAME=' options to the subsequent
external project's cmake command.

The issue is that the loop does a single pass, such that if the 'target'
value appears in the cache after the 'target+except' value, the 'target'
value will take precedence. I suggest in my change here that the more
specific 'target+except' value should take precedence always, without
relying on CMake cache ordering.

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

Patch By: JamesNagurne

4 years agohwasan: Remove dead code. NFCI.
Peter Collingbourne [Fri, 17 Jan 2020 02:10:03 +0000 (18:10 -0800)]
hwasan: Remove dead code. NFCI.

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

4 years ago[profile] Support counter relocation at runtime
Petr Hosek [Fri, 4 Oct 2019 20:29:56 +0000 (13:29 -0700)]
[profile] Support counter relocation at runtime

This is an alternative to the continous mode that was implemented in
D68351. This mode relies on padding and the ability to mmap a file over
the existing mapping which is generally only available on POSIX systems
and isn't suitable for other platforms.

This change instead introduces the ability to relocate counters at
runtime using a level of indirection. On every counter access, we add a
bias to the counter address. This bias is stored in a symbol that's
provided by the profile runtime and is initially set to zero, meaning no
relocation. The runtime can mmap the profile into memory at abitrary
location, and set bias to the offset between the original and the new
counter location, at which point every subsequent counter access will be
to the new location, which allows updating profile directly akin to the
continous mode.

The advantage of this implementation is that doesn't require any special
OS support. The disadvantage is the extra overhead due to additional
instructions required for each counter access (overhead both in terms of
binary size and performance) plus duplication of counters (i.e. one copy
in the binary itself and another copy that's mmapped).

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

4 years ago[CMake] Use LinuxRemoteTI instead of LinuxLocalTI in CrossWinToARMLinux cmake cache
Sergej Jaskiewicz [Fri, 17 Jan 2020 22:28:51 +0000 (01:28 +0300)]
[CMake] Use LinuxRemoteTI instead of LinuxLocalTI in CrossWinToARMLinux cmake cache

Summary: Depends on D72847

Reviewers: vvereschaka, aorlov, andreil99

Reviewed By: vvereschaka

Subscribers: mgorny, kristof.beyls, cfe-commits

Tags: #clang

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

4 years ago[libcxx] Introduce LinuxRemoteTI for remote testing
Sergej Jaskiewicz [Fri, 17 Jan 2020 22:26:58 +0000 (01:26 +0300)]
[libcxx] Introduce LinuxRemoteTI for remote testing

Summary:
This patch adds a new target info object called LinuxRemoteTI.
Unlike LinuxLocalTI, which asks the host system about various things
like available locales, distribution name etc. which don't make sense
if we're testing on a remote board, LinuxRemoteTI uses SSHExecutor
to get information from the target system.

Reviewers: jroelofs, ldionne, bcraig, EricWF, danalbert, mclow.lists

Reviewed By: jroelofs

Subscribers: christof, dexonsmith, libcxx-commits

Tags: #libc

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

4 years ago[lldb/Docs] Fix formatting for the variable formatting page
Jonas Devlieghere [Fri, 17 Jan 2020 22:17:00 +0000 (14:17 -0800)]
[lldb/Docs] Fix formatting for the variable formatting page

4 years ago[mlir][Linalg] Extend linalg vectorization to MatmulOp
Nicolas Vasilache [Fri, 17 Jan 2020 19:26:50 +0000 (14:26 -0500)]
[mlir][Linalg] Extend linalg vectorization to MatmulOp

Summary:
This is a simple extension to allow vectorization to work not only on GenericLinalgOp
but more generally across named ops too.
For now, this still only vectorizes matmul-like ops but is a step towards more
generic vectorization of Linalg ops.

Reviewers: ftynse

Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits

Tags: #llvm

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

4 years ago[libc++] Optimize / partially inline basic_string copy constructor
Eric Fiselier [Fri, 17 Jan 2020 21:53:47 +0000 (16:53 -0500)]
[libc++] Optimize / partially inline basic_string copy constructor

Splits copy constructor up inlining short initialization, outlining long
initialization into __init_long() which is the externally instantiated slow
path initialization.

Subsequently changing the copy ctor to be inlined (not externally instantiated)
provides significant speed ups for short string initialization.

Generated code given:

void StringCopyCtor(void* mem, const std::string& s) {
    std::string*p = new(mem) std::string{s};
}

asm:
        cmp     byte ptr [rsi + 23], 0
        js      .LBB0_2
        mov     rax, qword ptr [rsi + 16]
        mov     qword ptr [rdi + 16], rax
        movups  xmm0, xmmword ptr [rsi]
        movups  xmmword ptr [rdi], xmm0
        ret
.LBB0_2:
        jmp     std::basic_string::__init_long # TAILCALL

Benchmark:
BM_StringCopy_Empty                                           5.19ns ± 6%             1.50ns ± 8%  -71.02%        (p=0.000 n=10+10)
BM_StringCopy_Small                                           5.14ns ± 8%             1.53ns ± 7%  -70.17%        (p=0.000 n=10+10)
BM_StringCopy_Large                                           18.9ns ± 0%             19.3ns ± 0%   +1.92%        (p=0.000 n=10+10)
BM_StringCopy_Huge                                             309ns ± 1%              316ns ± 5%     ~            (p=0.633 n=8+10)

Patch from Martijn Vels (mvels@google.com)
Reviewed as D72160.

4 years agohwasan: Move .note.hwasan.globals note to hwasan.module_ctor comdat.
Peter Collingbourne [Fri, 17 Jan 2020 17:49:40 +0000 (09:49 -0800)]
hwasan: Move .note.hwasan.globals note to hwasan.module_ctor comdat.

As of D70146 lld GCs comdats as a group and no longer considers notes in
comdats to be GC roots, so we need to move the note to a comdat with a GC root
section (.init_array) in order to prevent lld from discarding the note.

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

4 years ago[InstSimplify] add test for select of vector constants; NFC
Sanjay Patel [Fri, 17 Jan 2020 21:26:24 +0000 (16:26 -0500)]
[InstSimplify] add test for select of vector constants; NFC

4 years ago[InstSimplify] add test for select of FP constants; NFC
Sanjay Patel [Fri, 17 Jan 2020 16:57:50 +0000 (11:57 -0500)]
[InstSimplify] add test for select of FP constants; NFC

4 years ago[mlir] [VectorOps] Rename Utils.h into VectorUtils.h
aartbik [Fri, 17 Jan 2020 21:11:56 +0000 (13:11 -0800)]
[mlir] [VectorOps] Rename Utils.h into VectorUtils.h

Summary:
First step towards the consolidation
of a lot of vector related utilities
that are now all over the place
(or even duplicated).

Reviewers: nicolasvasilache, andydavis1

Reviewed By: nicolasvasilache, andydavis1

Subscribers: merge_guards_bot, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, liufengdb, llvm-commits

Tags: #llvm

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

4 years agoPass length of string in Go binding of CreateCompileUnit
Adrian Prantl [Fri, 17 Jan 2020 21:34:46 +0000 (13:34 -0800)]
Pass length of string in Go binding of CreateCompileUnit

4 years ago[xray] Allow instrumenting only function entry and/or only function exit
Ian Levesque [Fri, 17 Jan 2020 21:24:27 +0000 (13:24 -0800)]
[xray] Allow instrumenting only function entry and/or only function exit

Extend -fxray-instrumentation-bundle to split function-entry and
function-exit into two separate options, so that it is possible to
instrument only function entry or only function exit.  For use cases
that only care about one or the other this will save significant overhead
and code size.

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

4 years ago[clang][xray] Add -fxray-ignore-loops option
Ian Levesque [Fri, 17 Jan 2020 21:24:16 +0000 (13:24 -0800)]
[clang][xray] Add -fxray-ignore-loops option

XRay allows tuning by minimum function size, but also always instruments
functions with loops in them. If the minimum function size is set to a
large value the loop instrumention ends up causing most functions to be
instrumented anyway. This adds a new flag, -fxray-ignore-loops, to disable
the loop detection logic.

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

4 years ago[xray] Add xray-ignore-loops option
Ian Levesque [Fri, 17 Jan 2020 21:24:07 +0000 (13:24 -0800)]
[xray] Add xray-ignore-loops option

XRay allows tuning by minimum function size, but also always instruments
functions with loops in them.  If the minimum function size is set to a
large value the loop instrumention ends up causing most functions to be
instrumented anyway.  This adds a new flag, xray-ignore-loops, to disable
the loop detection logic.

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

4 years ago[ms] [llvm-ml] Add placeholder for llvm-ml, based on llvm-mc
Eric Astor [Fri, 17 Jan 2020 20:15:53 +0000 (15:15 -0500)]
[ms] [llvm-ml] Add placeholder for llvm-ml, based on llvm-mc

Summary:
As discussed on the mailing list, I plan to introduce an ml-compatible MASM assembler as part of providing more of the Windows build tools. This will be similar to llvm-mc, but with different command-line parameters.

This placeholder is purely a stripped-down version of llvm-mc; we'll eventually add support for the Microsoft-style command-line flags, and back it with a MASM parser.

Reviewers: rnk, thakis

Reviewed By: thakis

Subscribers: merge_guards_bot, mgorny, jfb, llvm-commits

Tags: #llvm

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

4 years agodebugserver: Pass -arch flags to mig invocation as needed
Vedant Kumar [Fri, 17 Jan 2020 21:06:17 +0000 (13:06 -0800)]
debugserver: Pass -arch flags to mig invocation as needed

Specify -isysroot and any necessary -arch flags in the `mig` invocation
when CMAKE_OSX_ARCHITECTURES is set (needed for the bridgeOS build).

4 years ago[ELF] Allow R_PLT_PC (R_PC) to a hidden undefined weak symbol
Fangrui Song [Fri, 17 Jan 2020 19:50:00 +0000 (11:50 -0800)]
[ELF] Allow R_PLT_PC (R_PC) to a hidden undefined weak symbol

This essentially reverts b841e119d77ed0502e3a2e710f26a899bef28b3c.

Such code construct can be used in the following way:

  // glibc/stdlib/exit.c
  // clang -fuse-ld=lld => succeeded
  // clang -fuse-ld=lld -fpie -pie => relocation R_PLT_PC cannot refer to absolute symbol
  __attribute__((weak, visibility("hidden"))) extern void __call_tls_dtors();
  void __run_exit_handlers() {
    if (__call_tls_dtors)
        __call_tls_dtors();
  }

Since we allow R_PLT_PC in -no-pie mode, it makes sense to allow it in
-pie mode as well.

Reviewed By: pcc

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

4 years agoMove the sysroot attribute from DIModule to DICompileUnit
Adrian Prantl [Tue, 14 Jan 2020 21:37:04 +0000 (13:37 -0800)]
Move the sysroot attribute from DIModule to DICompileUnit

[this re-applies c0176916a4824812d25a5a22c4ff7c95857b0cd6
 with the correct commit message and phabricator link]

This addresses point 1 of PR44213.
https://bugs.llvm.org/show_bug.cgi?id=44213

The DW_AT_LLVM_sysroot attribute is used for Clang module debug info,
to allow LLDB to import a Clang module from source. Currently it is
part of each DW_TAG_module, however, it is the same for all modules in
a compile unit. It is more efficient and less ambiguous to store it
once in the DW_TAG_compile_unit.

This should have no effect on DWARF consumers other than LLDB.

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

4 years agoRevert "Rename DW_AT_LLVM_isysroot to DW_AT_LLVM_sysroot"
Adrian Prantl [Fri, 17 Jan 2020 20:52:36 +0000 (12:52 -0800)]
Revert "Rename DW_AT_LLVM_isysroot to DW_AT_LLVM_sysroot"

This reverts commit 12e479475a896f664fb721f98c2d6805185ac352.

I accidentally landed this patch with the wrong commit message ...

4 years agoRevert "Attempt to fix Go syntax error"
Adrian Prantl [Fri, 17 Jan 2020 20:52:25 +0000 (12:52 -0800)]
Revert "Attempt to fix Go syntax error"

This reverts commit c0176916a4824812d25a5a22c4ff7c95857b0cd6.

4 years agoAttempt to fix Go syntax error
Adrian Prantl [Fri, 17 Jan 2020 20:37:15 +0000 (12:37 -0800)]
Attempt to fix Go syntax error

4 years ago[MLIR] LLVM dialect: Add llvm.atomicrmw
Frank Laub [Fri, 17 Jan 2020 20:09:53 +0000 (21:09 +0100)]
[MLIR] LLVM dialect: Add llvm.atomicrmw

Summary:
This op is the counterpart to LLVM's atomicrmw instruction. Note that
volatile and syncscope attributes are not yet supported.

This will be useful for upcoming parallel versions of `affine.for` and generally
for reduction-like semantics.

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

4 years ago[Flang][mlir] add a band-aid to support the creation of mutually recursive types...
Eric Schweitz [Fri, 17 Jan 2020 20:07:58 +0000 (21:07 +0100)]
[Flang][mlir] add a band-aid to support the creation of mutually recursive types when lowering to LLVM IR

Summary:
This is a temporary implementation to support Flang.  The LLVM-IR parser
will need to be extended in some way to support recursive types.  The
exact approach here is still a work-in-progress.

Unfortunately, this won't pass roundtrip testing yet. Adding a comment
to the test file as a reminder.

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

4 years ago[libFuzzer] Allow discarding output in ExecuteCommand in Fuchsia.
Marco Vanotti [Fri, 17 Jan 2020 01:20:20 +0000 (17:20 -0800)]
[libFuzzer] Allow discarding output in ExecuteCommand in Fuchsia.

Summary:
This commit modifies the way `ExecuteCommand` works in fuchsia by adding
special logic to handle `/dev/null`.

The FuzzerCommand interface does not have a way to "discard" the output,
so other parts of the code just set the output file to `getDevNull()`.
The problem is that fuchsia does not have a named file that is
equivalent to `/dev/null`, so opening that file just fails.

This commit detects whether the specified output file is `getDevNull`,
and if that's the case, it will not copy the file descriptor for stdout
in the spawned process.

NOTE that modifying `FuzzerCommand` to add a "discardOutput" function
involves a significant refactor of all the other platforms, as they all
rely on the `toString()` method of `FuzzerCommand`.

This allows libfuzzer in fuchsia to run with `fork=1`, as the merge
process (`FuzzerMerge.cpp`) invoked `ExecuteCommand` with `/dev/null` as the
output.

Reviewers: aarongreen, phosek

Reviewed By: aarongreen

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

4 years agoRevert "[SVE] Pass Scalable argument to VectorType::get in Bitcode Reader"
Eli Friedman [Fri, 17 Jan 2020 20:13:49 +0000 (12:13 -0800)]
Revert "[SVE] Pass Scalable argument to VectorType::get in Bitcode Reader"

This reverts commit 5df53a22592729e631c4030f38c599b9f37095b7.

Caused test failures.

4 years ago[mlir][spirv] Explicitly construct ArrayRef from static array
Lei Zhang [Fri, 17 Jan 2020 19:53:51 +0000 (14:53 -0500)]
[mlir][spirv] Explicitly construct ArrayRef from static array

Again for pleasing GCC 5.

4 years ago[SVE] Pass Scalable argument to VectorType::get in Bitcode Reader
Christopher Tetreault [Fri, 17 Jan 2020 19:32:52 +0000 (11:32 -0800)]
[SVE] Pass Scalable argument to VectorType::get in Bitcode Reader

Summary:
* Pass the Scalability test to VectorType::get in order to be
able to deserialize bitcode that contains scalable vector operations

Change-Id: I37fe5b1c0c237a9153130deefdc1a6d595c7f12e

Reviewers: efriedma, pcc, sdesmalen, apazos, huihuiz, chrisj

Reviewed By: sdesmalen

Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

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

4 years ago[OPENMP]Improve debug locations in OpenMP regions.
Alexey Bataev [Fri, 17 Jan 2020 19:05:40 +0000 (14:05 -0500)]
[OPENMP]Improve debug locations in OpenMP regions.

Emit more precise debug locations for the OpenMP outlined regions.

4 years ago[Hexagon] Use itinerary for assembler HVX resource checking
Mike Lambert [Fri, 17 Jan 2020 19:13:28 +0000 (13:13 -0600)]
[Hexagon] Use itinerary for assembler HVX resource checking

4 years agoUpdate clang test.
Alina Sbirlea [Fri, 17 Jan 2020 19:08:33 +0000 (11:08 -0800)]
Update clang test.

4 years agoUpdate testcase for LLVM IR change (sysroot)
Adrian Prantl [Fri, 17 Jan 2020 18:58:33 +0000 (10:58 -0800)]
Update testcase for LLVM IR change (sysroot)

4 years ago[TestQuoting] Use the fully qualified path for remote platforms.
Davide Italiano [Fri, 17 Jan 2020 18:57:35 +0000 (10:57 -0800)]
[TestQuoting] Use the fully qualified path for remote platforms.

Patch by Jason Molenda, fixes a test failure on arm64 devices.

4 years ago[UnitTests] Add invalidate methods.
Alina Sbirlea [Wed, 15 Jan 2020 22:30:21 +0000 (14:30 -0800)]
[UnitTests] Add invalidate methods.

4 years ago[LazyCallGraph] Add invalidate method.
Alina Sbirlea [Wed, 15 Jan 2020 22:07:58 +0000 (14:07 -0800)]
[LazyCallGraph] Add invalidate method.

Summary: Add invalidate method in LazyCallGraph.

Reviewers: chandlerc, silvas

Subscribers: hiraditya, sanjoy.google, llvm-commits

Tags: #llvm

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

4 years ago[CallGraph] Add invalidate method.
Alina Sbirlea [Wed, 15 Jan 2020 22:05:56 +0000 (14:05 -0800)]
[CallGraph]  Add invalidate method.

Summary: Add invalidate method in CallGraph.

Reviewers: Eugene.Zelenko, chandlerc

Subscribers: hiraditya, sanjoy.google, llvm-commits

Tags: #llvm

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

4 years ago[BrachProbablityInfo] Add invalidate method.
Alina Sbirlea [Wed, 15 Jan 2020 22:02:33 +0000 (14:02 -0800)]
[BrachProbablityInfo] Add invalidate method.

Summary: Add invalidate method for BrachProbablityInfo.

Reviewers: Eugene.Zelenko, chandlerc

Subscribers: hiraditya, sanjoy.google, llvm-commits

Tags: #llvm

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

4 years ago[AMDGPU] allow multi-dword flat scratch access since GFX9
Stanislav Mekhanoshin [Thu, 16 Jan 2020 20:43:22 +0000 (12:43 -0800)]
[AMDGPU] allow multi-dword flat scratch access since GFX9

This is supported starting with GFX9.

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

4 years ago[mlir][spirv] Explicitly construct ArrayRef from array
Lei Zhang [Fri, 17 Jan 2020 18:44:37 +0000 (13:44 -0500)]
[mlir][spirv] Explicitly construct ArrayRef from array

Hopefully this pleases GCC 5.

4 years ago[Hexagon] Move testcase from c1873631d0a8f2acc to proper location
Krzysztof Parzyszek [Fri, 17 Jan 2020 18:32:28 +0000 (12:32 -0600)]
[Hexagon] Move testcase from c1873631d0a8f2acc to proper location

4 years ago[GlobalsModRef] Add invalidate method
Alina Sbirlea [Wed, 15 Jan 2020 22:10:37 +0000 (14:10 -0800)]
[GlobalsModRef] Add invalidate method

Summary: Add invalidate method to GlobalsAA.

Reviewers: tejohnson, chandlerc

Subscribers: hiraditya, sanjoy.google, llvm-commits

Tags: #llvm

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

4 years ago[InterfaceStubs][test] Add -triple to clang/test/InterfaceStubs/externstatic.c to...
Fangrui Song [Fri, 17 Jan 2020 18:30:54 +0000 (10:30 -0800)]
[InterfaceStubs][test] Add -triple to clang/test/InterfaceStubs/externstatic.c to make it robust

llvm-nm on Linux prints 0 line while llvm-nm on macOS prints 1 line.

4 years ago[Hexagon] Refactor HexagonShuffle
Brian Cain [Fri, 17 Jan 2020 18:18:59 +0000 (12:18 -0600)]
[Hexagon] Refactor HexagonShuffle

The check() in HexagonShuffle has been decomposed into smaller steps.
No functionality change is intended with this commit.

4 years ago[mlir] Replace AbstractOperation::classof with a ClassID instance.
River Riddle [Fri, 17 Jan 2020 07:56:34 +0000 (23:56 -0800)]
[mlir] Replace AbstractOperation::classof with a ClassID instance.

Summary: This field is currently not used by anything, and using a ClassID instance provides better support for more efficient classof.

Reviewers: mehdi_amini, nicolasvasilache

Reviewed By: mehdi_amini

Subscribers: merge_guards_bot, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, llvm-commits

Tags: #llvm

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

4 years ago[test] Fix test/ELF/lto/thinlto-obj-path.ll after D52810
Fangrui Song [Fri, 17 Jan 2020 18:13:09 +0000 (10:13 -0800)]
[test] Fix test/ELF/lto/thinlto-obj-path.ll after D52810

4 years ago[clang] Set function attributes on SEH filter functions correctly.
Sanne Wouda [Fri, 13 Dec 2019 14:45:46 +0000 (14:45 +0000)]
[clang] Set function attributes on SEH filter functions correctly.

Summary:
When compiling with -munwind-tables, the SEH filter funclet needs the uwtable
function attribute, which gets automatically added if we use
SetInternalFunctionAttributes.  The filter funclet is internal so this seems
appropriate.

Reviewers: rnk

Subscribers: cfe-commits

Tags: #clang

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

4 years agoReland "[llvm-nm] Don't report "no symbols" error for files that contain symbols"
Fangrui Song [Fri, 17 Jan 2020 18:04:00 +0000 (10:04 -0800)]
Reland "[llvm-nm] Don't report "no symbols" error for files that contain symbols"