platform/upstream/llvm.git
3 years ago[SyntaxTree][List] Fix: `ParameterDeclarationList` is the `List` inside `ParametersAn...
Eduardo Caldas [Mon, 14 Sep 2020 07:56:39 +0000 (07:56 +0000)]
[SyntaxTree][List] Fix: `ParameterDeclarationList` is the `List` inside `ParametersAndQualifiers`

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

3 years ago[ARM][MVE] Tail-predication: check get.active.lane.mask's TC value
Sjoerd Meijer [Wed, 9 Sep 2020 13:39:51 +0000 (14:39 +0100)]
[ARM][MVE] Tail-predication: check get.active.lane.mask's TC value

This adds additional checks for the original scalar loop tripcount value, i.e.
get.active.lane.mask second argument, and perform several sanity checks to see
if it is of the form that we expect similarly like we already do for the IV
which is the first argument of get.active.lane.

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

3 years ago[SVE] In LoopIdiomRecognize::isLegalStore bail out for scalable vectors
David Sherwood [Thu, 10 Sep 2020 07:40:17 +0000 (08:40 +0100)]
[SVE] In LoopIdiomRecognize::isLegalStore bail out for scalable vectors

The function LoopIdiomRecognize::isLegalStore looks for stores in loops
that could be transformed into memset or memcpy. However, the algorithm
currently requires that we know how big the store is at runtime, i.e.
that the store size will not overflow an unsigned integer. For scalable
vectors we cannot guarantee this so I have changed the code to bail out
for now. In addition, even if we add a way to query the maximum value of
vscale in future we will still need to update the algorithm to cope with
non-constant strides. The additional cost associated with calculating
the memset and memcpy arguments will need to be taken into account as
well.

This patch also fixes up an implicit TypeSize -> uint64_t cast,
thereby removing a warning. I've added tests here showing a fixed
width vector loop being transformed into memcpy, and a scalable
vector loop remaining unchanged:

  Transforms/LoopIdiom/memcpy-vectors.ll

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

3 years agoAMDGPU/GlobalISel Check for NoNaNsFPMath in isKnownNeverSNaN
Petar Avramovic [Mon, 14 Sep 2020 10:03:36 +0000 (12:03 +0200)]
AMDGPU/GlobalISel Check for NoNaNsFPMath in isKnownNeverSNaN

Check for NoNaNsFPMath function attribute in isKnownNeverSNaN.
Function attributes are in held in 'TargetMachine.Options'.
Among other things, this allows selection of some patterns imported
in D87351 since G_FCANONICALIZE is not generated when isKnownNeverSNaN
returns true in lowerFMinNumMaxNum.

However we notice some incorrect results since function attributes are
not correctly written in TargetMachine.Options when next function is
processed. Take a look at @v_test_no_global_nnans_med3_f32_pat0_srcmod0,
it has "no-nans-fp-math"="false" but TargetMachine.Options still has it
set to true since first function in test file had this attribute set to
true. This will be fixed in D87511.

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

3 years agoAMDGPU/GlobalISel/Emitter Recognize additional 'same operand checks'
Petar Avramovic [Mon, 14 Sep 2020 09:37:14 +0000 (11:37 +0200)]
AMDGPU/GlobalISel/Emitter Recognize additional 'same operand checks'

The "name" of a non-leaf complex pattern (MY_PAT $op1, $op2) is
"MY_PAT:op1:op2" and the ones with same "name" represent same operand.
Add 'same operand check' for this case.

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

3 years agoAMDGPU/GlobalISel Add test for non-leaf complex patterns
Petar Avramovic [Mon, 14 Sep 2020 09:18:21 +0000 (11:18 +0200)]
AMDGPU/GlobalISel Add test for non-leaf complex patterns

GlobalIsel emitter does not import patterns where complex sub-operand
of a non-leaf complex pattern is referenced more then once. Multiple
references of complex patterns with same name and same sub-operands
represent the same operand. Document this with a test.

3 years ago[LegalizeDAG] Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warni...
Simon Pilgrim [Mon, 14 Sep 2020 10:09:15 +0000 (11:09 +0100)]
[LegalizeDAG] Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.

3 years ago[clangd] makeStringError,make_error<StringError> -> error()
Sam McCall [Mon, 14 Sep 2020 09:33:12 +0000 (11:33 +0200)]
[clangd] makeStringError,make_error<StringError> -> error()

3 years ago[CodeGen][X86] Regenerate minmax reduction sequence tests to match arithmetic tests.
Simon Pilgrim [Mon, 14 Sep 2020 09:27:35 +0000 (10:27 +0100)]
[CodeGen][X86] Regenerate minmax reduction sequence tests to match arithmetic tests.

avx512-reduceIntrin.c wasn't bothering with the exhaustive alloca/store/load/bitcast checks and avx512-reduceMinMaxIntrin.c shouldn't need to either.

This makes it a lot easier to maintain as the update script still doesn't work properly on x86 targets

3 years ago[clangd] Track tweaks that fail the apply stage
Kadir Cetinkaya [Fri, 11 Sep 2020 09:40:54 +0000 (11:40 +0200)]
[clangd] Track tweaks that fail the apply stage

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

3 years ago[DebugInstrRef][1/9] Add fields for instr-ref variable locations
Jeremy Morse [Mon, 14 Sep 2020 08:55:38 +0000 (09:55 +0100)]
[DebugInstrRef][1/9] Add fields for instr-ref variable locations

Add a DBG_INSTR_REF instruction and a "debug instruction number" field to
MachineInstr. The two allow variable values to be specified by
identifying where the value is computed, rather than the register it lies
in, like so:

  %0 = fooinst, debug-instr-number 1
  [...]
  DBG_INSTR_REF 1, 0

See the original RFC for motivation:
http://lists.llvm.org/pipermail/llvm-dev/2020-February/139440.html

This patch is NFCI; it only adds fields and other boiler plate.

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

3 years ago[gn build] Port 30667c967d3
LLVM GN Syncbot [Mon, 14 Sep 2020 08:53:33 +0000 (08:53 +0000)]
[gn build] Port 30667c967d3

3 years ago[clangd] Add error() function for creating formatv-style llvm::Errors. NFC
Sam McCall [Wed, 8 Jul 2020 19:49:38 +0000 (21:49 +0200)]
[clangd] Add error() function for creating formatv-style llvm::Errors. NFC

Summary:
This is considerably terser than the makeStringError and friends, and
avoids verbosity cliffs that discourage adding log information.

It follows the syntax used in log/elog/vlog/dlog that have been successful.

The main caveats are:
 - it's strictly out-of-place in logger.h, though kind of fits thematically and
   in implementation
 - it claims the "error" identifier, which seems a bit too opinionated
   to put higher up in llvm

I've updated some users of StringError mostly at random - there are lots
more mechanical changes but I'd like to get this reviewed before making
them all.

Reviewers: kbobyrev, hokein

Subscribers: mgorny, ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

3 years agoAMDGPU/GlobalISel/Emitter Support for predicate code that uses operands
Petar Avramovic [Mon, 14 Sep 2020 08:39:25 +0000 (10:39 +0200)]
AMDGPU/GlobalISel/Emitter Support for predicate code that uses operands

Predicates with 'let PredicateCodeUsesOperands = 1' want to examine
matched operands. When we encounter predicate code that uses operands,
analyze its named operand arguments and create a map between argument
index and name. Later, when leaf node with name is encountered, emit
GIM_RecordNamedOperand that will store that operand at its argument
index in operand list. This operand list will be an argument to c++
code of the predicate.

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

3 years ago[JumpThreading] Fix an incorrect Modified status
David Stenberg [Mon, 14 Sep 2020 07:38:54 +0000 (09:38 +0200)]
[JumpThreading] Fix an incorrect Modified status

This fixes PR47297.

When ProcessBlock() was able to constant fold the terminator's
condition, but not do any more transformations, the function would
return false, which would lead to the JumpThreading pass returning an
incorrect modified status. This patch makes so that ProcessBlock()
returns true in such cases. This will trigger an unnecessary invocation
of ProcessBlock() in such cases, but this should be rare to occur.

This was caught using the check introduced by D80916.

Reviewed By: efriedma

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

3 years ago[compiler-rt] [netbsd] Use internal_ptrace() instead of ptrace()
Kamil Rytarowski [Mon, 14 Sep 2020 08:10:49 +0000 (10:10 +0200)]
[compiler-rt] [netbsd] Use internal_ptrace() instead of ptrace()

3 years ago[UnifyLoopExits] Fix non-deterministic iteration order
Jay Foad [Fri, 11 Sep 2020 21:00:36 +0000 (22:00 +0100)]
[UnifyLoopExits] Fix non-deterministic iteration order

This was causing random minor codegen differences in shaders compiled
with the AMDGPU backend.

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

3 years ago[ARM] Fix so immediates and pc relative checks
Simon Wallis [Mon, 14 Sep 2020 07:52:59 +0000 (08:52 +0100)]
[ARM] Fix so immediates and pc relative checks

Treating an SoImm offset as a multiple of 4 between -1020 and 1020
mis-handles the second of a pair of 16-bit constants where the offset is a multiple of 2 but not a multiple of 4,
leading to an LLVM ERROR: out of range pc-relative fixup value

For 32-bit and larger (64-bit) constants, continue to treat an SoImm offset as a multiple of 4 between -1020 and 1020.
For smaller (16-bit) constants, treat an SoImm offset as a multiple of 1 between -255 and 255.

Reviewed By: efriedma

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

3 years ago[CodeGen] Fix bug in IncrementPointer
David Sherwood [Thu, 10 Sep 2020 10:54:58 +0000 (11:54 +0100)]
[CodeGen] Fix bug in IncrementPointer

In an earlier patch I meant to add the correct flags to the ADD
node when incrementing the pointer, but forgot to pass them to
SelectionDAG::getNode.

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

3 years ago[analyzer][z3] Use more elaborate Z3 variable names
Balazs Benics [Mon, 14 Sep 2020 06:43:56 +0000 (08:43 +0200)]
[analyzer][z3] Use more elaborate Z3 variable names

Previously, it was a tedious task to comprehend Z3 dumps.
We will use the same name prefix just as we use in the corresponding dump method

For all `SymbolData` values:
    `$###` -> `conj_$###`
    `$###` -> `derived_$###`
    `$###` -> `extent_$###`
    `$###` -> `meta_$###`
    `$###` -> `reg_$###`

Reviewed By: xazax.hun,mikhail.ramalho

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

3 years ago[analyzer][docs][NFC] Document the ento namespace in the llvm/Lexicon
Balazs Benics [Mon, 14 Sep 2020 06:43:56 +0000 (08:43 +0200)]
[analyzer][docs][NFC] Document the ento namespace in the llvm/Lexicon

Document the `ento` namespace in the Lexicon according to @nicolas17 on the
mailing list (http://lists.llvm.org/pipermail/cfe-dev/2020-August/066577.html).

The analyzer lived at different namespaces at different times.
Originally lived at the `GR` aka. (Graph Reachability)  namespace [7], later it
moved under the `ento` namespace [9].

The Static Analyzer's code lived at many other places as well:
`Analysis` -[2]-> `Checker` -[5]-> `GR` -[10]> `entoSA` -[11]-> `StaticAnalyzer`

The relevant code motion, refactor commits, cfe-dev mailing in chronological
order:
 1) 2008-03-15 Make a major restructuring of the clang tree: introduce a ...
    7a51313d8a0a358bb92eb5dbf8fd846b7c48e7fe
 2) 2010-01-25 Split libAnalysis into two libraries: libAnalysis and libChecker
    d6b8708643219776b1f0f41df32c5eccf065ed5b
 3) 2010-12-21 Reorganization of Checker files
    http://lists.llvm.org/pipermail/cfe-dev/2010-December/012694.html
 4) 2010-12-22 Refactoring: include/clang/Checker -> include/clang/GR
    8d602a8aa8e6697509465d8a5473fc41cb1a382e
 5) 2010-12-22 Refactoring: lib/Checker -> lib/GR
    2ff5ab1516e48c2fff0138f953d887b5e695214b
 6) 2010-12-22 Refactoring: Move checkers into lib/GR/Checkers and their own
    a700e976b658860418bc145ec0bdacd4f1db3264
 7) 2010-12-22 Refactoring: Move stuff into namespace 'GR'
    ca08fba4141f1d3ae6193b3c81fb6ba8fb10d7dc
 8) 2010-12-22 Refactoring: Drop the 'GR' prefix.
    1696f508e2fe95793ca8bb70d78b88023b6b8625
 9) 2010-12-23 Rename static analyzer namespace 'GR' to 'ento'
    98857c986078c6e6a10910628dbabf75ae735b76
10) 2010-12-23 Rename headers: 'clang/GR' 'clang/EntoSA' and update Makefile
    ef33f0996c6a625767690395f3cfb41afb84db5a
11) 2010-12-23 Chris Lattner has strong opinions about directory
    d99bd55a5e092774214ba31fc5a871bfc31e711c
12) 2010-12-24 Remove the EntoSA directories.
    9d6af5328e3a61641a125b17125952fa1a6bf11d

Reviewed By: Szelethus,martong,ASDenysPetrov,xazax.hun

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

3 years ago[analyzer] Evaluate PredefinedExpressions
Balazs Benics [Mon, 14 Sep 2020 06:43:56 +0000 (08:43 +0200)]
[analyzer] Evaluate PredefinedExpressions

We did not evaluate such expressions, just returned `Unknown` for such cases.
After this patch, we will be able to access a unique value identifying a template instantiation via the value of the `PRETTY_FUNCTION` predefined expression.

Reviewed By: vsavchenko

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

3 years ago[llvm-cov gcov] Refactor counting and reporting
Fangrui Song [Mon, 14 Sep 2020 06:00:59 +0000 (23:00 -0700)]
[llvm-cov gcov] Refactor counting and reporting

The current organization of FileInfo and its referenced utility functions of
(GCOVFile, GCOVFunction, GCOVBlock) is messy. Some members of FileInfo are just
copied from GCOVFile. FileInfo::print (.gcov output and --intermediate output)
is interleaved with branch statistics and computation of line execution counts.
--intermediate has to do redundant .gcov output to gather branch statistics.

This patch deletes lots of code and introduces a clearer work flow:

```
fn collectFunction
  for each block b
    for each line lineNum
      let line be LineInfo of the file on lineNum
      line.exists = 1
      increment function's lines & linesExec if necessary
      increment line.count
      line.blocks.push_back(&b)

fn collectSourceLine
  compute cycle counts
  count = incoming_counts + cycle_counts
  if line.exists
    ++summary->lines
    if line.count
      ++summary->linesExec

fn collectSource
  for each line
    call collectSourceLine

fn main
  for each function
    call collectFunction
    print function summary
  for each source file
    call collectSource
    print file summary
    annotate the source file with line execution counts
  if -i
    print intermediate file
```

The output order of functions and files now follows the original order in
.gcno files.

3 years ago[AST][FPEnv] Keep FP options in trailing storage of CastExpr
Serge Pavlov [Sat, 12 Sep 2020 14:54:14 +0000 (21:54 +0700)]
[AST][FPEnv] Keep FP options in trailing storage of CastExpr

This is recommit of 6c8041aa0f, reverted in de044f7562 because of some
fails. Original commit message is below.

This change allow a CastExpr to have optional FPOptionsOverride object,
stored in trailing storage. Of all cast nodes only ImplicitCastExpr,
CStyleCastExpr, CXXFunctionalCastExpr and CXXStaticCastExpr are allowed
to have FPOptions.

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

3 years ago[CodeGenPrepare] Fix zapping dead operands of assume
Yevgeny Rouban [Mon, 14 Sep 2020 04:42:23 +0000 (11:42 +0700)]
[CodeGenPrepare] Fix zapping dead operands of assume

This patch fixes a problem of the commit 52cc97a0.
A test case is created to demonstrate the crash caused by
the instruction iterator invalidated by the recursive
removal of dead operands of assume. The solution restarts
from the blocks's first instruction in case CurInstIterator
is invalidated by RecursivelyDeleteTriviallyDeadInstructions().

Reviewed By: bkramer

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

3 years ago[docs] Document LLVM_EXTERNALIZE_DEBUGINFO CMake option
Dave Lee [Sun, 13 Sep 2020 23:54:47 +0000 (16:54 -0700)]
[docs] Document LLVM_EXTERNALIZE_DEBUGINFO CMake option

Add `LLVM_EXTERNALIZE_DEBUGINFO` to CMake.rst. This should help make dSYM
generation more discoverable.

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

3 years ago[SelectionDAG] Move ISD:PARITY formation from DAGCombine to SimplifyDemandedBits.
Craig Topper [Mon, 14 Sep 2020 02:51:20 +0000 (19:51 -0700)]
[SelectionDAG] Move ISD:PARITY formation from DAGCombine to SimplifyDemandedBits.

Previously, we formed ISD::PARITY by looking for (and (ctpop X), 1)
but the AND might be separated from the ctpop. For example if the
parity result is multiplied by 2, we'll pull the AND through the
shift.

So to handle more cases, move to SimplifyDemandedBits where we
can handle more cases that result in only the LSB of the CTPOP
being used.

3 years ago[JITLink] Improve formatting for Edge, Block and Symbol debugging output.
Lang Hames [Sun, 13 Sep 2020 21:22:20 +0000 (14:22 -0700)]
[JITLink] Improve formatting for Edge, Block and Symbol debugging output.

3 years ago[llvm-cov gcov][test] Unsupport Windows
Fangrui Song [Sun, 13 Sep 2020 22:17:14 +0000 (15:17 -0700)]
[llvm-cov gcov][test] Unsupport Windows

3 years ago[llvm-cov gcov] Add -r (--relative-only) && -s (--source-prefix)
Fangrui Song [Sun, 13 Sep 2020 21:54:20 +0000 (14:54 -0700)]
[llvm-cov gcov] Add -r (--relative-only) && -s (--source-prefix)

gcov 4.7 introduced the two options.
https://sourceware.org/pipermail/gcc-patches/2011-November/328782.html

-r only dumps files with relative paths or absolute paths with the prefix
specified by -s. The two options are useful filtering out system header files.

3 years ago[ARM] Add some fmin/fmax tests with commuted operands (NFC)
Nikita Popov [Sun, 13 Sep 2020 20:16:24 +0000 (22:16 +0200)]
[ARM] Add some fmin/fmax tests with commuted operands (NFC)

As well as vector commuted operands.

3 years agoPPCInstrInfo: Fix readability-inconsistent-declaration-parameter-name clang-tidy...
David Blaikie [Sun, 13 Sep 2020 20:08:17 +0000 (13:08 -0700)]
PPCInstrInfo: Fix readability-inconsistent-declaration-parameter-name clang-tidy warning

Reduces the chance of confusion when calling the function with
autocomplete (will show the more accurate/informative variable name),
etc.

3 years agoCorrect end-of-namespace comment to be clang-tidy/LLVM style appropriate
David Blaikie [Sun, 13 Sep 2020 20:07:58 +0000 (13:07 -0700)]
Correct end-of-namespace comment to be clang-tidy/LLVM style appropriate

3 years agoGCOVProfiling: Avoid use-after-move
David Blaikie [Sun, 13 Sep 2020 19:54:36 +0000 (12:54 -0700)]
GCOVProfiling: Avoid use-after-move

Turns out this was use-after-move of function_ref, which is trivially
copyable and movable, so the move did nothing and use after move was
safe.

But since this function_ref is being copied into a std::function, change
the function_ref to be std::function to avoid extra layers of type
erasure indirection - and then it's a real use after move, and fix that
by referring to the moved-to member variable rather than the moved-from
parameter.

3 years ago[SelectionDAG] Remove default for 'unsigned' Alignment for getLoad/getStore/getExtLoa...
Craig Topper [Sun, 13 Sep 2020 18:49:14 +0000 (11:49 -0700)]
[SelectionDAG] Remove default for 'unsigned' Alignment for getLoad/getStore/getExtLoad/getTruncStore. Add default for MaybeAlign version. NFCI

We want to remove the unsigned signatures eventually. This change
migrates any that don't explicitly pass an alignment.

3 years ago[ASTImporter] Add basic support for comparing Stmts and compare function bodies
Raphael Isemann [Sat, 12 Sep 2020 19:49:48 +0000 (21:49 +0200)]
[ASTImporter] Add basic support for comparing Stmts and compare function bodies

Right now the ASTImporter assumes for most Expr nodes that they are always equal
which leads to non-compatible declarations ending up being merged. This patch
adds the basic framework for comparing Stmts (and with that also Exprs) and
implements the custom checks for a few Stmt subclasses. I'll implement the
remaining subclasses in follow up patches (mostly because there are a lot of
subclasses and some of them require further changes like having GNU language in
the testing framework)

The motivation for this is that in LLDB we try to import libc++ source code and
some of the types we are importing there contain expressions (e.g. because they
use `enable_if<expr>`), so those declarations are currently merged even if they
are completely different (e.g. `enable_if<value> ...` and `enable_if<!value>
...` are currently considered equal which is clearly not true).

Reviewed By: martong, balazske

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

3 years ago[DAGCombiner] Propagate FMF flags in FMA folding
Qiu Chaofan [Sun, 13 Sep 2020 16:19:06 +0000 (00:19 +0800)]
[DAGCombiner] Propagate FMF flags in FMA folding

DAG combiner folds (fma a 1.0 b) into (fadd a b) but the flag isn't
propagated into new fadd. This patch fixes that.

Some code in visitFMA is redundant and such support for vector constants
is missing. Need follow-up patch to clean.

Reviewed By: spatel

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

3 years ago[CGP] Prevent optimizePhiType from iterating forever
David Green [Sun, 13 Sep 2020 15:11:01 +0000 (16:11 +0100)]
[CGP] Prevent optimizePhiType from iterating forever

The recently added optimizePhiType algorithm had no checks to make sure
it didn't continually iterate backward and forth between float and int
types. This means that given an input like store(phi(bitcast(load))), we
could convert that back and forth to store(bitcast(phi(load))). This
particular case would usually have been simplified to a different load
type (folding the bitcast into the load) before CGP, but other cases can
occur. The one that came up was phi(bitcast(phi)), where the two phi's
of different types were bitcast between. That was not helped by a dead
bitcast being kept around which could make conversion look profitable.

This adds an extra check of the bitcast Uses or Defs, to make sure that
at least one is grounded and will not end up being converted back. It
also makes sure that dead bitcasts are removed, and there is a minor
change to include newly created Phi nodes in the Visited set so that
they do not need to be revisited.

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

3 years ago[ARM] Add tests for fmin/max with largest/smallest float (NFC)
Nikita Popov [Sun, 13 Sep 2020 15:04:53 +0000 (17:04 +0200)]
[ARM] Add tests for fmin/max with largest/smallest float (NFC)

3 years ago[X86] Add test cases for PR11210
Simon Pilgrim [Sun, 13 Sep 2020 12:38:05 +0000 (13:38 +0100)]
[X86] Add test cases for PR11210

Demonstrates that redundant masked stores may be removed, as long as we're able to replace the AVX/AVX2 masked store with a generic masked store (constant mask or sign-extended bool vector mask).

3 years agoReland "[PowerPC] Implement instruction clustering for stores"
Qiu Chaofan [Sun, 13 Sep 2020 11:39:49 +0000 (19:39 +0800)]
Reland "[PowerPC] Implement instruction clustering for stores"

Commit 3c0b3250 introduced store fusion for PowerPC target, but it
brought failure under UB sanitizer and was reverted. This patch fixes
them.

3 years ago[gcov] Fix memory leak due to BranchProbabilityInfoWrapperPass
Fangrui Song [Sun, 13 Sep 2020 07:44:32 +0000 (00:44 -0700)]
[gcov] Fix memory leak due to BranchProbabilityInfoWrapperPass

This is weird.

3 years ago[gcov] Add spanning tree optimization
Fangrui Song [Sun, 13 Sep 2020 07:07:31 +0000 (00:07 -0700)]
[gcov] Add spanning tree optimization

gcov is an "Edge Profiling with Edge Counters" application according to
Optimally Profiling and Tracing Programs (1994).

The minimum number of counters necessary is |E|-(|V|-1). The unmeasured edges
form a spanning tree. Both GCC --coverage and clang -fprofile-generate leverage
this optimization. This patch implements the optimization for clang --coverage.
The produced .gcda files are much smaller now.

3 years ago[gcov] Assign names to some types and loaded values used in @__llvm_internal*
Fangrui Song [Sun, 13 Sep 2020 05:42:37 +0000 (22:42 -0700)]
[gcov] Assign names to some types and loaded values used in @__llvm_internal*

This makes the generated IR much more readable.

3 years ago[llvm-cov gcov] Improve accuracy when some edges are not measured
Fangrui Song [Sun, 13 Sep 2020 05:33:41 +0000 (22:33 -0700)]
[llvm-cov gcov] Improve accuracy when some edges are not measured

Also guard against infinite recursion if GCOV_ARC_ON_TREE edges contain a cycle.

3 years ago[Docs] Fix --print-supported-cpus option rendering
Travis Finkenauer [Sun, 13 Sep 2020 05:26:08 +0000 (05:26 +0000)]
[Docs] Fix --print-supported-cpus option rendering

Adds link/code sample to avoid rendering two dashes as non-ASCII "en dash".
Also make wording a complete sentence.

Reviewed By: nickdesaulniers, tmfink

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

3 years ago[LegalizeTypes] Remove a few cases from SplitVectorOperand that should never happen...
Craig Topper [Sun, 13 Sep 2020 03:54:48 +0000 (20:54 -0700)]
[LegalizeTypes] Remove a few cases from SplitVectorOperand that should never happen. NFC

CTTZ, CTLZ, CTPOP, and FCANONICALIZE all have the same input and
output types so the operand should have already been legalized when the
result type was legalized.

3 years ago[X86] Use ISD::PARITY directly instead of emitting CTPOP and AND from combineHorizont...
Craig Topper [Sun, 13 Sep 2020 01:09:27 +0000 (18:09 -0700)]
[X86] Use ISD::PARITY directly instead of emitting CTPOP and AND from combineHorizontalPredicateResult.

We have a PARITY ISD node now so might as well use it. It will
get re-expanded later.

3 years ago[Hexagon] Avoid widening vectors with non-HVX element types
Krzysztof Parzyszek [Sat, 12 Sep 2020 21:32:24 +0000 (16:32 -0500)]
[Hexagon] Avoid widening vectors with non-HVX element types

3 years ago[gn build] Port cc2da5554b5
LLVM GN Syncbot [Sat, 12 Sep 2020 23:13:20 +0000 (23:13 +0000)]
[gn build] Port cc2da5554b5

3 years ago[lld][WebAssembly] Add initial support for -Map/--print-map
Sam Clegg [Fri, 27 Mar 2020 23:52:27 +0000 (16:52 -0700)]
[lld][WebAssembly] Add initial support for -Map/--print-map

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

3 years ago[ARM] Add tests for fmin/max + inf folds (NFC)
Nikita Popov [Sat, 12 Sep 2020 22:21:39 +0000 (00:21 +0200)]
[ARM] Add tests for fmin/max + inf folds (NFC)

3 years ago[lld][WebAssembly] Error on import/export of mutable global without `mutable-globals...
Sam Clegg [Thu, 23 Jul 2020 22:06:21 +0000 (15:06 -0700)]
[lld][WebAssembly] Error on import/export of mutable global without `mutable-globals` feature

Also add the +mutable-globals features in clang when
building with `-fPIC` since the linker will generate mutable
globals imports and exports in that case.

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

3 years ago[gcov] Process .gcda immediately after the accompanying .gcno instead of doing all...
Fangrui Song [Sat, 12 Sep 2020 20:51:53 +0000 (13:51 -0700)]
[gcov] Process .gcda immediately after the accompanying .gcno instead of doing all .gcda after all .gcno

i.e. change the work flow from

* .gcno for function A
* .gcno for function B
* .gcno for function C
* .gcda for function A
* .gcda for function B
* .gcda for function C

to

* .gcno for function A
* .gcda for function A
* .gcno for function B
* .gcda for function B
* .gcno for function C
* .gcda for function C

Currently there is duplicate logic in .gcno & .gcda processing: how functions
are filtered, which edges are instrumented, etc. This refactor enables simplification.

Since we always process .gcno, in -fprofile-arcs -fno-test-coverage mode,
__llvm_internal_gcov_emit_function_args.0 will have non-zero checksums.

3 years ago[ARM] Add additional vecreduce float legalization test (NFC)
Nikita Popov [Sat, 12 Sep 2020 20:39:39 +0000 (22:39 +0200)]
[ARM] Add additional vecreduce float legalization test (NFC)

3 years agoUpdate TableGen test files to use the new '...' range punctuation.
Paul C. Anagnostopoulos [Fri, 11 Sep 2020 14:26:26 +0000 (10:26 -0400)]
Update TableGen test files to use the new '...' range punctuation.

3 years agoChange range operator from deprecated '-' to '...'
Paul C. Anagnostopoulos [Fri, 11 Sep 2020 13:49:27 +0000 (09:49 -0400)]
Change range operator from deprecated '-' to '...'

3 years agoRevert "[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's...
Fangrui Song [Sat, 12 Sep 2020 19:34:43 +0000 (12:34 -0700)]
Revert "[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid duplicated filtering"

This reverts commit 412c9c0bf2a8ccbda2d925575891a51ef5df846e.

3 years ago[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid...
Fangrui Song [Sat, 12 Sep 2020 19:17:40 +0000 (12:17 -0700)]
[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid duplicated filtering

3 years ago[gcov] Clean up by getting llvm.dbg.cu earlier
Fangrui Song [Sat, 12 Sep 2020 19:05:25 +0000 (12:05 -0700)]
[gcov] Clean up by getting llvm.dbg.cu earlier

3 years ago[InstCombine] Add extra use tests for abs canonicalization (NFC)
Nikita Popov [Sat, 12 Sep 2020 18:31:46 +0000 (20:31 +0200)]
[InstCombine] Add extra use tests for abs canonicalization (NFC)

3 years ago[MinGW][libclang] Allow simultaneous shared and static lib
Mateusz Mikuła [Sat, 12 Sep 2020 19:03:22 +0000 (22:03 +0300)]
[MinGW][libclang] Allow simultaneous shared and static lib

It builds fine for MinGW on Windows.

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

3 years ago[MinGW][clang-shlib] Build by default on MinGW
Mateusz Mikuła [Sat, 12 Sep 2020 19:02:11 +0000 (22:02 +0300)]
[MinGW][clang-shlib] Build by default on MinGW

It builds without errors and makes possible to use
CLANG_LINK_CLANG_DYLIB=1.

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

3 years ago[MinGW] Use lib prefix for libraries
Mateusz Mikuła [Sat, 12 Sep 2020 19:00:42 +0000 (22:00 +0300)]
[MinGW] Use lib prefix for libraries

In MinGW world, UNIX like lib prefix is preferred for the libraries.
This patch adjusts CMake files to do that.

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

3 years ago[SelectionDAG][X86][ARM][AArch64] Add ISD opcode for __builtin_parity. Expand it...
Craig Topper [Sat, 12 Sep 2020 18:42:18 +0000 (11:42 -0700)]
[SelectionDAG][X86][ARM][AArch64] Add ISD opcode for __builtin_parity. Expand it to shifts and xors.

Clang emits (and (ctpop X), 1) for __builtin_parity. If ctpop
isn't natively supported by the target, this leads to poor codegen
due to the expansion of ctpop being more complex than what is needed
for parity.

This adds a DAG combine to convert the pattern to ISD::PARITY
before operation legalization. Type legalization is updated
to handled Expanding and Promoting this operation. If after type
legalization, CTPOP is supported for this type, LegalizeDAG will
turn it back into CTPOP+AND. Otherwise LegalizeDAG will emit a
series of shifts and xors followed by an AND with 1.

I've avoided vectors in this patch to avoid more legalization
complexity for this patch.

X86 previously had a custom DAG combiner for this. This is now
moved to Custom lowering for the new opcode. There is a minor
regression in vector-reduce-xor-bool.ll, but a follow up patch
can easily fix that.

Fixes PR47433

Reviewed By: efriedma

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

3 years ago[DSE] Adjust coroutines test after e082dee2b588.
Florian Hahn [Sat, 12 Sep 2020 18:19:49 +0000 (19:19 +0100)]
[DSE] Adjust coroutines test after e082dee2b588.

3 years ago[DSE] Bail out on MemoryPhis when deleting stores at end of function.
Florian Hahn [Sat, 12 Sep 2020 17:57:26 +0000 (18:57 +0100)]
[DSE] Bail out on MemoryPhis when deleting stores at end of function.

When deleting stores at the end of a function, we have to do PHI
translation, otherwise we might miss reads in different iterations of a
loop. See multiblock-loop-carried-dependence.ll for details.

This fixes a mis-compile and surprisingly also increases the number of
eliminated stores from 26047 to 26572 for MultiSource/SPEC2000/SPEC2006
on X86 with -O3 -flto. This is most likely because we save budget by not
exploring through MemoryPhis, which are less likely to result in valid
candidates for elimination.

The issue was reported post-commit for fb109c42d91c.

3 years ago[DSE] Precommit test case with loop carried dependence.
Florian Hahn [Sat, 12 Sep 2020 17:28:57 +0000 (18:28 +0100)]
[DSE] Precommit test case with loop carried dependence.

3 years ago[LV][ARM] Add preferInloopReduction target hook.
David Green [Sat, 12 Sep 2020 16:47:04 +0000 (17:47 +0100)]
[LV][ARM] Add preferInloopReduction target hook.

This allows the backend to tell the vectorizer to produce inloop
reductions through a TTI hook.

For the moment on ARM under MVE this means allowing integer add
reductions of the correct size. In the future this can include integer
min/max too, under -Os.

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

3 years agoTableGen: change a couple of member names to clarify their use.
Paul C. Anagnostopoulos [Sat, 12 Sep 2020 15:50:01 +0000 (11:50 -0400)]
TableGen: change a couple of member names to clarify their use.

3 years ago[InstCombine][X86] Covert masked load/stores with (sign extended) bool vector masks...
Simon Pilgrim [Sat, 12 Sep 2020 14:02:30 +0000 (15:02 +0100)]
[InstCombine][X86] Covert masked load/stores with (sign extended) bool vector masks to generic intrinsics.

As detailed on PR11210, if the mask is known to come from a (sign extended) bool vector (e.g. comparisons) then we can represent with a generic masked load/store without losing anything.

We already do something similar for BLENDV -> SELECT conversion.

3 years ago[Clang] Add option to allow marking pass-by-value args as noalias.
Florian Hahn [Sat, 12 Sep 2020 13:23:36 +0000 (14:23 +0100)]
[Clang] Add option to allow marking pass-by-value args as noalias.

After the recent discussion on cfe-dev 'Can indirect class parameters be
noalias?' [1], it seems like using using noalias is problematic for
current C++, but should be allowed for C-only code.

This patch introduces a new option to let the user indicate that it is
safe to mark indirect class parameters as noalias. Note that this also
applies to external callers, e.g. it might not be safe to use this flag
for C functions that are called by C++ functions.

In targets that allocate indirect arguments in the called function, this
enables more agressive optimizations with respect to memory operations
and brings a ~1% - 2% codesize reduction for some programs.

[1] : http://lists.llvm.org/pipermail/cfe-dev/2020-July/066353.html

Reviewed By: rjmccall

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

3 years ago[MachineScheduler] Fix operand scheduling for pre/post-increment loads
Evgeny Leviant [Sat, 12 Sep 2020 13:53:12 +0000 (16:53 +0300)]
[MachineScheduler] Fix operand scheduling for pre/post-increment loads

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

3 years agoReland [AssumeBundles] Use operand bundles to encode alignment assumptions
Tyker [Sat, 12 Sep 2020 11:36:45 +0000 (13:36 +0200)]
Reland [AssumeBundles] Use operand bundles to encode alignment assumptions

NOTE: There is a mailing list discussion on this: http://lists.llvm.org/pipermail/llvm-dev/2019-December/137632.html

Complemantary to the assumption outliner prototype in D71692, this patch
shows how we could simplify the code emitted for an alignemnt
assumption. The generated code is smaller, less fragile, and it makes it
easier to recognize the additional use as a "assumption use".

As mentioned in D71692 and on the mailing list, we could adopt this
scheme, and similar schemes for other patterns, without adopting the
assumption outlining.

3 years ago[InstCombine][X86] Add tests for masked load/stores with comparisons.
Simon Pilgrim [Sat, 12 Sep 2020 13:31:26 +0000 (14:31 +0100)]
[InstCombine][X86] Add tests for masked load/stores with comparisons.

As detailed on PR11210, if the mask is known to come from a (sign extended) bool vector (e.g. comparisons) then we can represent with a generic masked load/store without losing anything.

3 years ago[ARM] Fixup single source mla reductions.
David Green [Sat, 12 Sep 2020 13:31:26 +0000 (14:31 +0100)]
[ARM] Fixup single source mla reductions.

This fixes a complication on top of D87276. If we are sign extending
around a mul with the two operands that are the same, instcombine will
helpfully convert one of the sext to a zext. Reverse that so that we
again generate a reduction.

Differnetial Revision: https://reviews.llvm.org/D87287

3 years ago[Intrinsics] define semantics for experimental fmax/fmin vector reductions
Sanjay Patel [Sat, 12 Sep 2020 13:08:07 +0000 (09:08 -0400)]
[Intrinsics] define semantics for experimental fmax/fmin vector reductions

As discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2020-April/140729.html

This is hopefully the final remaining showstopper before we can remove
the 'experimental' from the reduction intrinsics.

No behavior was specified for the FP min/max reductions, so we have a
mess of different interpretations.

There are a few potential options for the semantics of these max/min ops.
I think this is the simplest based on current behavior/implementation:
make the reductions inherit from the existing llvm.maxnum/minnum intrinsics.
These correspond to libm fmax/fmin, and those are similar to the (now
deprecated?) IEEE-754 maxNum/minNum functions (NaNs are treated as missing
data). So the default expansion creates calls to libm functions.

Another option would be to inherit from llvm.maximum/minimum (NaNs propagate),
but most targets just crash in codegen when given those nodes because no
default expansion was ever implemented AFAICT.

We could also just assume 'nnan' semantics by default (we are already
assuming 'nsz' semantics in the maxnum/minnum intrinsics), but some targets
(AArch64, PowerPC) support the more defined behavior, so it doesn't make much
sense to not allow a tighter spec. Fast-math-flags (nnan) can be used to
loosen the semantics.

(Note that D67507 was proposed to update the LangRef to acknowledge the more
recent IEEE-754 2019 standard, but that patch seems to have stalled. If we do
update based on the new standard, the reduction instructions can seamlessly
inherit from whatever updates are made to the max/min intrinsics.)

x86 sees a regression here on 'nnan' tests because we have underlying,
longstanding bugs in FMF creation/propagation. Those need to be fixed apart
from this change (for example: https://llvm.org/PR35538). The expansion
sequence before this patch may not have been correct.

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

3 years ago[InstCombine][X86] getNegativeIsTrueBoolVec - use ConstantExpr evaluators. NFCI.
Simon Pilgrim [Sat, 12 Sep 2020 12:51:25 +0000 (13:51 +0100)]
[InstCombine][X86] getNegativeIsTrueBoolVec - use ConstantExpr evaluators. NFCI.

Don't do this manually, we can just use the ConstantExpr evaluators to do it more tidily for us.

3 years ago[ARM] Recognize "double extend" reduction patterns
David Green [Sat, 12 Sep 2020 12:51:42 +0000 (13:51 +0100)]
[ARM] Recognize "double extend" reduction patterns

We can sometimes get code that does:
  xe = zext i16 x to i32
  ye = zext i16 y to i32
  m = mul i32 xe, ye
  me = zext i32 m to i64
  r = vecreduce.add(me)
This "double extend" can trip up the reduction identification, but
should give identical results.

This extends the pattern matching to handle them.

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

3 years ago[InstCombine] Fix incorrect SimplifyWithOpReplaced transform (PR47322)
Nikita Popov [Thu, 10 Sep 2020 10:19:16 +0000 (12:19 +0200)]
[InstCombine] Fix incorrect SimplifyWithOpReplaced transform (PR47322)

This is a followup to D86834, which partially fixed this issue in
InstSimplify. However, InstCombine repeats the same transform while
dropping poison flags -- which does not cover cases where poison is
introduced in some other way.

The fix here is a bit more comprehensive, because things are quite
entangled, and it's hard to only partially address it without
regressing optimization. There are really two changes here:

 * Export the SimplifyWithOpReplaced API from InstSimplify, with an
   added AllowRefinement flag. For replacements inside the TrueVal
   we don't actually care whether refinement occurs or not, the
   replacement is always legal. This part of the transform is now
   done in InstSimplify only. (It should be noted that the current
   AllowRefinement check is not sufficient -- that's an issue we
   need to address separately.)
 * Change the InstCombine fold to work by temporarily dropping
   poison generating flags, running the fold and then restoring the
   flags if it didn't work out. This will ensure that the InstCombine
   fold is correct as long as the InstSimplify fold is correct.

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

3 years ago[X86][SSE] lowerShuffleAsDecomposedShuffleBlend - support decomposed unpacks for...
Simon Pilgrim [Sat, 12 Sep 2020 12:39:33 +0000 (13:39 +0100)]
[X86][SSE] lowerShuffleAsDecomposedShuffleBlend - support decomposed unpacks for some vXi8/vXi16 cases

Follow up to D86429 to handle the remaining regressions.

This patch generalizes lowerShuffleAsDecomposedShuffleBlend to lowerShuffleAsDecomposedShuffleMerge, and attempts to use an UNPCKL shuffle mask instead of a blend for the cases where the inputs are coming from alternating vXi8/vXi16 sources. Technically they don't have to be alternating (just as long as they can fit into a lower lane half for the unpack) but I didn't find as many general cases and it needed a lot more of the function to be altered.

For vXi32/vXi64 cases this could still be beneficial but in most cases the existing permute+blend approach was better.

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

3 years ago[gn build] Port 19531a81f1d
LLVM GN Syncbot [Sat, 12 Sep 2020 10:08:18 +0000 (10:08 +0000)]
[gn build] Port 19531a81f1d

3 years agoRevert "[AST][FPEnv] Keep FP options in trailing storage of CastExpr"
Serge Pavlov [Sat, 12 Sep 2020 10:05:26 +0000 (17:05 +0700)]
Revert "[AST][FPEnv] Keep FP options in trailing storage of CastExpr"

This reverts commit 6c8041aa0ffed827636935e59c489b1e390c8542.
It caused some fails on buildbots.

3 years agoAdd a header file to support ssize_t for windows
Jianzhou Zhao [Sat, 12 Sep 2020 08:49:22 +0000 (08:49 +0000)]
Add a header file to support ssize_t for windows

fixing
https://github.com/llvm/llvm-project/commit/0ece51c60c51f0d4c285dbda3b6cff794041bdd7

3 years agoMissing change from previous commit
Serge Pavlov [Sat, 12 Sep 2020 08:10:09 +0000 (15:10 +0700)]
Missing change from previous commit

3 years agoAdd raw_fd_stream_test.cpp into CMakeLists.txt
Jianzhou Zhao [Sat, 12 Sep 2020 07:48:12 +0000 (07:48 +0000)]
Add raw_fd_stream_test.cpp into CMakeLists.txt

Fixing https://github.com/llvm/llvm-project/commit/0ece51c60c51f0d4c285dbda3b6cff794041bdd7

3 years agoAdd raw_fd_stream that supports reading/seeking/writing
Jianzhou Zhao [Tue, 1 Sep 2020 07:16:07 +0000 (07:16 +0000)]
Add raw_fd_stream that supports reading/seeking/writing

This is used by https://reviews.llvm.org/D86905 to support bitcode
writer's incremental flush.

3 years ago[AST][FPEnv] Keep FP options in trailing storage of CastExpr
Serge Pavlov [Sat, 12 Sep 2020 07:30:44 +0000 (14:30 +0700)]
[AST][FPEnv] Keep FP options in trailing storage of CastExpr

This change allow a CastExpr to have optional FPOptionsOverride object,
stored in trailing storage. Of all cast nodes only ImplicitCastExpr,
CStyleCastExpr, CXXFunctionalCastExpr and CXXStaticCastExpr are allowed
to have FPOptions.

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

3 years ago[Power10] Enable the heuristic for Power10 and switch the sched model
QingShan Zhang [Sat, 12 Sep 2020 02:49:47 +0000 (02:49 +0000)]
[Power10] Enable the heuristic for Power10 and switch the sched model
with P9 Model

Enable the pre-ra and post-ra scheduler strategy for Power10 as we want
to customize the heuristic later. And switch the scheduler model with P9
model before P10 Model is available. The NoSchedModel is modelled as
in-order cpu and the pre-ra scheduler is not bi-directional which will
have big impact on the scheduler.

Reviewed By: jji

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

3 years ago[PowerPC] Set the mayRaiseFPException for FCMPUS/FCMPUD
QingShan Zhang [Sat, 12 Sep 2020 02:42:22 +0000 (02:42 +0000)]
[PowerPC] Set the mayRaiseFPException for FCMPUS/FCMPUD

From ISA, fcmpu will raise the Floating-Point Invalid Operation
Exception (SNaN) if either of the operands is a Signaling NaN by setting
the bit VXSNAN. But the instruction description didn't set the
mayRaiseFPException which might have impact on the scheduling or some
backend optimization.

Reviewed By: qiucf

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

3 years ago[gn build] Port ad99e34c59b
LLVM GN Syncbot [Sat, 12 Sep 2020 01:54:23 +0000 (01:54 +0000)]
[gn build] Port ad99e34c59b

3 years agoRevert "[NewPM][CodeGen] Introduce CodeGenPassBuilder to help build codegen pipeline"
Yuanfang Chen [Sat, 12 Sep 2020 01:51:54 +0000 (18:51 -0700)]
Revert "[NewPM][CodeGen] Introduce CodeGenPassBuilder to help build codegen pipeline"

This reverts commit 31ecf8d29d81d196374a562c6d2bd2c25a62861e.
This reverts commit 3fdaa8602a086a3fca5f0fc8527536ac659079d0.

There is laying violation for Target->CodeGen.

3 years ago[gn] Remove unneeded MC dep from llvm-tblgen
Reid Kleckner [Sat, 12 Sep 2020 00:43:49 +0000 (17:43 -0700)]
[gn] Remove unneeded MC dep from llvm-tblgen

Tablegen does not have link time dependencies on MC. Having llvm-tblgen
depend on it causes it to be rebuilt in the gn build every time somebody
touches any cpp file in llvm/lib/MC* or llvm/lib/DebugInfo/Codeview*.
Touching tablegen invalidates most of the rest of the build, and
re-running it takes a while. This is is annoying for me when swapping
between branches that touch CodeView logic.

This dep was added to LLVMBuild.txt back in 2018, and presumably it was
carried over into the gn build.

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

3 years agoFix a couple of tests that relied on the clang binary having 'clang' somewhere in...
David Blaikie [Sat, 12 Sep 2020 00:44:49 +0000 (17:44 -0700)]
Fix a couple of tests that relied on the clang binary having 'clang' somewhere in the name

Because why would that be necessary? (I joke - I hadn't actually
expected this to be an issue but a content-hash-named filesystem means
the clang binary's just a bunch of numbers, and doesn't have 'clang'
anywhere in the name)

3 years ago[lldb] Use GetNonKVOClassDescriptor to get the NSDictionary class descriptor
Jonas Devlieghere [Fri, 11 Sep 2020 20:25:40 +0000 (13:25 -0700)]
[lldb] Use GetNonKVOClassDescriptor to get the NSDictionary class descriptor

On macOS Big Sur the class descriptor contains the NSKVONotifying_
prefix. This is covered by TestDataFormatterObjCKVO.

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

3 years ago[ConstantFold] Make areGlobalsPotentiallyEqual less aggressive.
Eli Friedman [Fri, 4 Sep 2020 03:58:56 +0000 (20:58 -0700)]
[ConstantFold] Make areGlobalsPotentiallyEqual less aggressive.

In particular, we shouldn't make assumptions about globals which are
unnamed_addr: we can fold them together with other globals.

Also while I'm here, use isInterposable() instead of trying to
explicitly name all the different kinds of weak linkage.

Fixes https://bugs.llvm.org/show_bug.cgi?id=47090

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

3 years ago[gn build] Port 31ecf8d29d8
LLVM GN Syncbot [Fri, 11 Sep 2020 23:54:25 +0000 (23:54 +0000)]
[gn build] Port 31ecf8d29d8

3 years agoFix a typo in 31ecf8d29d81d196374a562c6d2bd2c25a62861e
Yuanfang Chen [Fri, 11 Sep 2020 23:50:36 +0000 (16:50 -0700)]
Fix a typo in 31ecf8d29d81d196374a562c6d2bd2c25a62861e

3 years ago[NFC] Remove unused static function
Vitaly Buka [Fri, 11 Sep 2020 23:49:20 +0000 (16:49 -0700)]
[NFC] Remove unused static function

3 years ago[ConstantFold] Fold binary arithmetic on scalable vector splats.
Eli Friedman [Wed, 9 Sep 2020 22:22:38 +0000 (15:22 -0700)]
[ConstantFold] Fold binary arithmetic on scalable vector splats.

It's a nice simplification, and it confuses instcombine if we don't do
it.

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