platform/upstream/llvm.git
4 years ago[CGP] Convert phi types
David Green [Sun, 21 Jun 2020 10:28:31 +0000 (11:28 +0100)]
[CGP] Convert phi types

If a collection of interconnected phi nodes is only ever loaded, stored
or bitcast then we can convert the whole set to the bitcast type,
potentially helping to reduce the number of register moves needed as the
phi's are passed across basic block boundaries. This has to be done in
CodegenPrepare as it naturally straddles basic blocks.

The alorithm just looks from phi nodes, looking at uses and operands for
a collection of nodes that all together are bitcast between float and
integer types. We record visited phi nodes to not have to process them
more than once. The whole subgraph is then replaced with a new type.
Loads and Stores are bitcast to the correct type, which should then be
folded into the load/store, changing it's type.

This comes up in the biquad testcase due to the way MVE needs to keep
values in integer registers. I have also seen it come up from aarch64
partner example code, where a complicated set of sroa/inlining produced
integer phis, where float would have been a better choice.

I also added undef and extract element handling which increased the
potency in some cases.

This adds it with an option that defaults to off, and disabled for 32bit
X86 due to potential issues around canonicalizing NaNs.

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

4 years ago[CGP][AArch64] Convert Phi type tests. NFC
David Green [Sun, 21 Jun 2020 10:07:07 +0000 (11:07 +0100)]
[CGP][AArch64] Convert Phi type tests. NFC

4 years ago[ValueTracking, BasicAA] Don't simplify instructions
Nikita Popov [Sat, 20 Jun 2020 11:59:24 +0000 (13:59 +0200)]
[ValueTracking, BasicAA] Don't simplify instructions

GetUnderlyingObject() (and by required symmetry
DecomposeGEPExpression()) will call SimplifyInstruction() on the
passed value if other checks fail. This simplification is very
expensive, but has little effect in practice. This patch removes
the SimplifyInstruction call(), and replaces it with a check for
single-argument phis (which can occur in canonical IR in LCSSA
form), which is the only useful simplification case I was able to
identify.

At O3 the geomean CTMark improvement is -1.7%. The largest
improvement is SPASS with ThinLTO at -6%.

In test-suite, I see only two tests with a hash difference and
no code size difference (PAQ8p, Ptrdist), which indicates that
the simplification only ends up being useful very rarely. (I would
have liked to figure out which simplification is responsible here,
but wasn't able to spot it looking at transformation logs.)

The AMDGPU test case that is update was using two selects with
undef condition, in which case GetUnderlyingObject will return
the first select operand as the underlying object. This will of
course not happen with non-undef conditions, so this was not
testing anything realistic. Additionally this illustrates potential
unsoundness: While GetUnderlyingObject will pick the first operand,
the select might be later replaced by the second operand, resulting
in inconsistent assumptions about the undef value.

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

4 years agoRevert "Add --hot-func-list to llvm-profdata show for sample profiles"
Bruno Ricci [Sun, 21 Jun 2020 13:30:39 +0000 (14:30 +0100)]
Revert "Add --hot-func-list to llvm-profdata show for sample profiles"

This reverts commit 7348b951fe74f306970f6ac567fe5dddbb1c42d4.
It is causing Asan failures.

4 years ago[ValueTracking] improve analysis for fdiv with same operands
Sanjay Patel [Sun, 21 Jun 2020 12:50:29 +0000 (08:50 -0400)]
[ValueTracking] improve analysis for fdiv with same operands

(The 'nnan' variant of this pattern is already tested to produce '1.0'.)

https://alive2.llvm.org/ce/z/D4hPBy

define i1 @src(float %x, i32 %y) {
%0:
  %d = fdiv float %x, %x
  %uge = fcmp uge float %d, 0.000000
  ret i1 %uge
}
=>
define i1 @tgt(float %x, i32 %y) {
%0:
  ret i1 1
}
Transformation seems to be correct!

4 years ago[InstSimplify] add test for fdiv signbit; NFC
Sanjay Patel [Sun, 21 Jun 2020 12:18:24 +0000 (08:18 -0400)]
[InstSimplify] add test for fdiv signbit; NFC

4 years ago[clang][test][NFC] Also test for serialization in AST dump tests, part 3/n.
Bruno Ricci [Sun, 21 Jun 2020 12:49:27 +0000 (13:49 +0100)]
[clang][test][NFC] Also test for serialization in AST dump tests, part 3/n.

The outputs between the direct ast-dump test and the ast-dump test after
deserialization should match modulo a few differences.

For hand-written tests, strip the "<undeserialized declarations>"s and
the "imported"s with sed.

For tests generated with "make-ast-dump-check.sh", regenerate the output.

Part 3/n.

4 years ago[clang][test][NFC] Also test for serialization in AST dump tests, part 2/n.
Bruno Ricci [Sun, 21 Jun 2020 12:35:15 +0000 (13:35 +0100)]
[clang][test][NFC] Also test for serialization in AST dump tests, part 2/n.

The outputs between the direct ast-dump test and the ast-dump test after
deserialization should match modulo a few differences.

For hand-written tests, strip the "<undeserialized declarations>"s and
the "imported"s with sed.

For tests generated with "make-ast-dump-check.sh", regenerate the
output.

Part 2/n.

4 years ago[clang][NFC] Regenerate test/AST/ast-dump-lambda.cpp with --match-full-lines.
Bruno Ricci [Sun, 21 Jun 2020 12:32:10 +0000 (13:32 +0100)]
[clang][NFC] Regenerate test/AST/ast-dump-lambda.cpp with --match-full-lines.

4 years ago[clang][utils] Minor tweak to make-ast-dump-check.sh
Bruno Ricci [Sun, 21 Jun 2020 12:29:06 +0000 (13:29 +0100)]
[clang][utils] Minor tweak to make-ast-dump-check.sh

Remove the space after the "CHECK:" on each line. This space makes the use
of FileCheck --match-full-lines impossible.

4 years ago[clang][Serialization] Fix the serialization of ConstantExpr.
Bruno Ricci [Sun, 21 Jun 2020 12:02:48 +0000 (13:02 +0100)]
[clang][Serialization] Fix the serialization of ConstantExpr.

The serialization of ConstantExpr has currently a number of problems:

- Some fields are just not serialized (ConstantExprBits.APValueKind and
  ConstantExprBits.IsImmediateInvocation).

- ASTStmtReader::VisitConstantExpr forgets to add the trailing APValue
  to the list of objects to be destroyed when the APValue needs cleanup.

While we are at it, bring the serialization of ConstantExpr more in-line
with what is done with the other expressions by doing the following NFCs:

- Get rid of ConstantExpr::DefaultInit. It is better to not initialize
  the fields of an empty ConstantExpr since this will allow msan to
  detect if a field was not deserialized.

- Move the initialization of the fields of ConstantExpr to the constructor;
  ConstantExpr::Create allocates the memory and ConstantExpr::ConstantExpr
  is responsible for the initialization.

Review after commit since this is a straightforward mechanical fix
similar to the other serialization fixes.

4 years ago[clang][NFC] Fix typos/wording in the comments of ConstantExpr.
Bruno Ricci [Sun, 21 Jun 2020 11:47:18 +0000 (12:47 +0100)]
[clang][NFC] Fix typos/wording in the comments of ConstantExpr.

It is "trailing objects" and "tail-allocated storage".

4 years ago[LangRef] Fix sphinx warnings
Nikita Popov [Sun, 21 Jun 2020 11:51:07 +0000 (13:51 +0200)]
[LangRef] Fix sphinx warnings

4 years ago[Docs] Fix code block in MemorySSA docs (NFC)
Nikita Popov [Sun, 21 Jun 2020 11:45:43 +0000 (13:45 +0200)]
[Docs] Fix code block in MemorySSA docs (NFC)

4 years ago[X86][SSE] Add SimplifyDemandedVectorEltsForTargetShuffle to handle target shuffle...
Simon Pilgrim [Sun, 21 Jun 2020 10:16:07 +0000 (11:16 +0100)]
[X86][SSE] Add SimplifyDemandedVectorEltsForTargetShuffle to handle target shuffle variable masks

Pulled out from the ongoing work on D66004, currently we don't do a good job of simplifying variable shuffle masks that have already lowered to constant pool entries.

This patch adds SimplifyDemandedVectorEltsForTargetShuffle (a custom x86 helper) to first try SimplifyDemandedVectorElts (which we already do) and then constant pool simplification to help mark undefined elements.

To prevent lowering/combines infinite loops, we only handle basic constant pool loads instead of creating new BUILD_VECTOR nodes for lowering - e.g. we don't try to convert them to broadcast/vzext_load - there might be some benefit to this but if so I'd rather we come up with some way to reuse existing code than reimplement a lot of BUILD_VECTOR code.

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

4 years ago[Attributor][NFC] Fix indentation
clfbbn [Sun, 21 Jun 2020 06:18:47 +0000 (14:18 +0800)]
[Attributor][NFC] Fix indentation

Summary: The patch D81022 seems to break the indentation of the `cleanupIR()` function. This patch fixes this problem

Reviewers: jdoerfert, sstefan1, uenoku

Reviewed By: jdoerfert

Subscribers: hiraditya, uenoku, kuter, llvm-commits

Tags: #llvm

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

4 years ago[Remarks] Add callsite locations to inline remarks
Wenlei He [Fri, 19 Jun 2020 17:25:31 +0000 (10:25 -0700)]
[Remarks] Add callsite locations to inline remarks

Summary:
Add call site location info into inline remarks so we can differentiate inline sites.
This can be useful for inliner tuning. We can also reconstruct full hierarchical inline
tree from parsing such remarks. The messege of inline remark is also tweaked so we can
differentiate SampleProfileLoader inline from CGSCC inline.

Reviewers: wmi, davidxl, hoy

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[lldb/Lua] Remove redundant variable (NFC)
Jonas Devlieghere [Sun, 21 Jun 2020 06:28:22 +0000 (23:28 -0700)]
[lldb/Lua] Remove redundant variable (NFC)

4 years ago[lldb] Remove unused <iostream> includes (NFC)
Jonas Devlieghere [Sun, 21 Jun 2020 05:38:26 +0000 (22:38 -0700)]
[lldb] Remove unused <iostream> includes (NFC)

4 years ago[PowerPC][Power10] Implement Vector Clear Left/Rightmost Bytes Builtins in LLVM/Clang
Amy Kwan [Sat, 20 Jun 2020 23:29:16 +0000 (18:29 -0500)]
[PowerPC][Power10] Implement Vector Clear Left/Rightmost Bytes Builtins in LLVM/Clang

This patch implements builtins for the following prototypes:
```
vector signed char vec_clrl (vector signed char a, unsigned int n);
vector unsigned char vec_clrl (vector unsigned char a, unsigned int n);
vector signed char vec_clrr (vector signed char a, unsigned int n);
vector signed char vec_clrr (vector unsigned char a, unsigned int n);
```

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

4 years ago[clang/llvm] As part of using inclusive language within
Eric Christopher [Sat, 20 Jun 2020 23:02:27 +0000 (16:02 -0700)]
[clang/llvm] As part of using inclusive language within
the llvm project, migrate away from the use of blacklist and whitelist.

4 years ago[X86] Set the cpu_vendor in __cpu_indicator_init to VENDOR_OTHER if cpuid isn't suppo...
Craig Topper [Sat, 20 Jun 2020 22:36:04 +0000 (15:36 -0700)]
[X86] Set the cpu_vendor in __cpu_indicator_init to VENDOR_OTHER if cpuid isn't supported on the CPU.

We need to set the cpu_vendor to a non-zero value to indicate
that we already called __cpu_indicator_init once.

This should only happen on a 386 or 486 CPU.

4 years ago[clang-tidy] As part of using inclusive language within
Eric Christopher [Sat, 20 Jun 2020 22:20:11 +0000 (15:20 -0700)]
[clang-tidy] As part of using inclusive language within
the llvm project, migrate away from the use of blacklist and whitelist.

4 years agoUpdate comment to be more clear.
Eric Christopher [Sat, 20 Jun 2020 21:44:41 +0000 (14:44 -0700)]
Update comment to be more clear.

4 years agoRename function to more accurately reflect what it does.
Eric Christopher [Sat, 20 Jun 2020 21:37:29 +0000 (14:37 -0700)]
Rename function to more accurately reflect what it does.

4 years agoTemporarily Revert "[lldb][NFC] Add more test for builtin formats"
Eric Christopher [Sat, 20 Jun 2020 21:20:51 +0000 (14:20 -0700)]
Temporarily Revert "[lldb][NFC] Add more test for builtin formats"
as it's failing on the debian buildbots:

http://lab.llvm.org:8011/builders/lldb-x86_64-debian/builds/12531

This reverts commit 90c1af106a20785ffd01c0d6a41db8bc0160fd11.

4 years ago[flang] Add BoxValue.h
Eric Schweitz [Fri, 19 Jun 2020 18:42:23 +0000 (11:42 -0700)]
[flang] Add BoxValue.h

The bridge uses internal boxes of related ssa-values to track all the
information associated with a Fortran variable. Variables may have a
location and a value, but may also carry other properties such as rank,
shape, LEN parameters, etc. in Fortran.

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

4 years agoTypos around a -> an.
Eric Christopher [Sat, 20 Jun 2020 21:04:48 +0000 (14:04 -0700)]
Typos around a -> an.

4 years ago[VectorCombine] fix assert for type of compare operand
Sanjay Patel [Sat, 20 Jun 2020 19:18:27 +0000 (15:18 -0400)]
[VectorCombine] fix assert for type of compare operand

As shown in the post-commit comment for D81661 - we need to
loosen the type assertion to allow scalarization of a compare
for vectors of pointers.

4 years ago[lldb][NFC] Add more test for builtin formats
Raphael Isemann [Sat, 20 Jun 2020 17:30:20 +0000 (19:30 +0200)]
[lldb][NFC] Add more test for builtin formats

The previous tests apparently missed a few code branches in DumpDataExtractor
code. Also renames the 'test_instruction' which had the same name as another
test (and Python therefore ignored the test entirely).

4 years agoAdd --hot-func-list to llvm-profdata show for sample profiles
weihe [Sat, 20 Jun 2020 17:13:02 +0000 (10:13 -0700)]
Add --hot-func-list to llvm-profdata show for sample profiles

Summary: Add the --hot-func-list feature to llvm-profdata show for sample profiles. This feature prints a list of hot functions whose max sample count are above the 99% threshold, with their numbers of total samples, total samples percentage, max samples, entry samples, and their function names.

Reviewers: wmi, hoyFB, wenlei

Reviewed By: wmi

Subscribers: hoyFB, wenlei, llvm-commits, weihe

Tags: #llvm

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

4 years ago[InstCombine] remove unused parameter and add assert; NFC
Sanjay Patel [Sat, 20 Jun 2020 15:47:00 +0000 (11:47 -0400)]
[InstCombine] remove unused parameter and add assert; NFC

4 years ago[InstCombine] add tests for fmul/fdiv with fabs operands; NFC
Sanjay Patel [Sat, 20 Jun 2020 15:07:23 +0000 (11:07 -0400)]
[InstCombine] add tests for fmul/fdiv with fabs operands; NFC

4 years agoProfileSummaryInfo.h - reduce unnecessary Function.h include to forward declaration...
Simon Pilgrim [Sat, 20 Jun 2020 14:57:05 +0000 (15:57 +0100)]
ProfileSummaryInfo.h - reduce unnecessary Function.h include to forward declaration. NFC.

4 years agoRegionPass.h - remove unnecessary Function.h include. NFC.
Simon Pilgrim [Sat, 20 Jun 2020 14:30:11 +0000 (15:30 +0100)]
RegionPass.h - remove unnecessary Function.h include. NFC.

Forward declaration is already used.

4 years ago[InstCombine] fabs(X) / fabs(X) -> X / X
Sanjay Patel [Sat, 20 Jun 2020 14:20:21 +0000 (10:20 -0400)]
[InstCombine] fabs(X) / fabs(X) -> X / X

Also, consolidate related folds so we don't miss/repeat these.

4 years ago[InstCombine] add tests for fabs(x) / fabs (x); NFC
Sanjay Patel [Sat, 20 Jun 2020 13:52:12 +0000 (09:52 -0400)]
[InstCombine] add tests for fabs(x) / fabs (x); NFC

4 years ago[X86] combineSetCCMOVMSK - consistently use CmpBits variable. NFCI.
Simon Pilgrim [Sat, 20 Jun 2020 11:35:24 +0000 (12:35 +0100)]
[X86] combineSetCCMOVMSK - consistently use CmpBits variable. NFCI.

The comparison value should be the same size - I've added an assert to be absolutely certain.

4 years ago[X86][SSE] Fold MOVMSK(PCMPEQ(X,0)) != -1 -> !PTESTZ(X,X) allof patterns
Simon Pilgrim [Fri, 19 Jun 2020 15:05:04 +0000 (16:05 +0100)]
[X86][SSE] Fold MOVMSK(PCMPEQ(X,0)) != -1 -> !PTESTZ(X,X) allof patterns

4 years ago[CVP] Add another non null test (NFC)
Nikita Popov [Sat, 20 Jun 2020 11:01:54 +0000 (13:01 +0200)]
[CVP] Add another non null test (NFC)

4 years ago[JumpThreading] Make test more robust (NFC)
Nikita Popov [Sat, 20 Jun 2020 10:52:53 +0000 (12:52 +0200)]
[JumpThreading] Make test more robust (NFC)

Optimizing away this comparison is not the point of this test,
so make sure it cannot be optimized away.

4 years ago[LVI] Extract addValueHandle() method (NFC)
Nikita Popov [Sat, 20 Jun 2020 10:49:08 +0000 (12:49 +0200)]
[LVI] Extract addValueHandle() method (NFC)

There will be more places registering value handles.

4 years ago[LVI] Use find_as() where possible (NFC)
Nikita Popov [Sat, 13 Jun 2020 13:15:39 +0000 (15:15 +0200)]
[LVI] Use find_as() where possible (NFC)

This prevents us from creating temporary PoisoningVHs and
AssertingVHs while performing hashmap lookups. As such, it only
matters in assertion-enabled builds.

4 years ago[clang] SequenceChecker: C++17 sequencing rule for overloaded operators.
Bruno Ricci [Sat, 20 Jun 2020 09:51:46 +0000 (10:51 +0100)]
[clang] SequenceChecker: C++17 sequencing rule for overloaded operators.

In C++17 the operand(s) of an overloaded operator are sequenced as for
the corresponding built-in operator when the overloaded operator is
called with the operator notation ([over.match.oper]p2).

Reported in PR35340.

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

Reviewed By: rsmith

4 years ago[lldb] Skip TestBuiltinFormats.py on arm for now
Raphael Isemann [Sat, 20 Jun 2020 09:22:44 +0000 (11:22 +0200)]
[lldb] Skip TestBuiltinFormats.py on arm for now

4 years agoRevert "[BasicAA] Use known lower bounds for index values for size based check."
Florian Hahn [Sat, 20 Jun 2020 08:54:45 +0000 (09:54 +0100)]
Revert "[BasicAA] Use known lower bounds for index values for size based check."

This potentially related to https://bugs.llvm.org/show_bug.cgi?id=46335
and causes a slight compile-time regression. Revert while investigating.

This reverts commit d99a1848c4f8ca164c0c0768e10eafc850b2a68a.

4 years ago[CMake] Fix runtimes build for host Windows (default target)
Kristina Bessonova [Mon, 15 Jun 2020 10:05:13 +0000 (12:05 +0200)]
[CMake] Fix runtimes build for host Windows (default target)

When building runtimes, the compiler name (e.g. clang, clang-cl) is set based on
`CMAKE_SYSTEM_NAME` passed to `llvm_ExternalProject_Add()` through `CMAKE_ARGS` argument.
This mechanism doesn't work well if the target is Windows host.
`runtime_default_target()`/`builtin_default_target()` doesn't provide a way
to specify `CMAKE_SYSTEM_NAME` and doesn't set it either.

This patch appends variables specified in `RUNTIMES_CMAKE_ARGS`/`BUILTINS_CMAKE_ARGS`
to `CMAKE_ARGS` argument of `llvm_ExternalProject_Add()` in the case of called
from `runtime_default_target()`/`builtin_default_target()` thus in particular
it allows passing CMAKE_SYSTEM_NAME whenever it is required.

Reviewed By: phosek, compnerd, plotfi

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

4 years agoTemporarily Revert "[flang][OpenMP] Enhance parser support for flush construct to...
Eric Christopher [Sat, 20 Jun 2020 08:18:53 +0000 (01:18 -0700)]
Temporarily Revert "[flang][OpenMP] Enhance parser support for flush construct to OpenMP 5.0"
as it's failing Semantics/omp-clause-validity01.f90.

This reverts commit b32401464f4c9c9d43a3ddcb351cb6c7c713fdb4.

4 years ago[AST/Lex/Parse/Sema] As part of using inclusive language within
Eric Christopher [Sat, 20 Jun 2020 08:14:57 +0000 (01:14 -0700)]
[AST/Lex/Parse/Sema] As part of using inclusive language within
the llvm project, migrate away from the use of blacklist and whitelist.

4 years ago[flang][OpenMP] Enhance parser support for flush construct to OpenMP 5.0
Kiran Kumar T P [Sat, 20 Jun 2020 08:02:15 +0000 (13:32 +0530)]
[flang][OpenMP] Enhance parser support for flush construct to OpenMP 5.0

Summary:
This patch enhances parser support for flush construct to OpenMP 5.0 by including memory-order-clause.

2.18.8 flush Construct
!$omp flush [memory-order-clause] [(list)]
where memory-order-clause is
acq_rel
release
acquire

The patch includes code changes and testcase modifications.

Reviewed By: klausler, kiranchandramohan

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

4 years ago[cpplint] As part of using inclusive language within the llvm project,
Eric Christopher [Sat, 20 Jun 2020 07:58:04 +0000 (00:58 -0700)]
[cpplint] As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years ago[docs/examples] As part of using inclusive language within the llvm
Eric Christopher [Sat, 20 Jun 2020 07:51:18 +0000 (00:51 -0700)]
[docs/examples] As part of using inclusive language within the llvm
project, migrate away from the use of blacklist and whitelist.

4 years ago[Analysis/Transforms/Sanitizers] As part of using inclusive language
Eric Christopher [Sat, 20 Jun 2020 07:42:26 +0000 (00:42 -0700)]
[Analysis/Transforms/Sanitizers] As part of using inclusive language
within the llvm project, migrate away from the use of blacklist and
whitelist.

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Sat, 20 Jun 2020 07:24:57 +0000 (00:24 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years ago[Support/Utils] As part of using inclusive language within the
Eric Christopher [Sat, 20 Jun 2020 07:15:50 +0000 (00:15 -0700)]
[Support/Utils] As part of using inclusive language within the
llvm project, migrate away from the use of blacklist and whitelist.

4 years ago[Target] As part of using inclusive language within the llvm project,
Eric Christopher [Sat, 20 Jun 2020 07:05:32 +0000 (00:05 -0700)]
[Target] As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

This change affects an internal llvm command line option.

4 years ago[DWARFYAML][debug_info] Fix array index out of bounds error
Xing GUO [Sat, 20 Jun 2020 06:25:56 +0000 (14:25 +0800)]
[DWARFYAML][debug_info] Fix array index out of bounds error

This patch is trying to fix the array index out of bounds error. I observed it in (https://reviews.llvm.org/harbormaster/unit/view/99638/).

Reviewed By: jhenderson, MaskRay

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

4 years ago[X86] Correct the implementation of ud1(a.k.a. ud2b) instruction.
Craig Topper [Sat, 20 Jun 2020 06:47:43 +0000 (23:47 -0700)]
[X86] Correct the implementation of ud1(a.k.a. ud2b) instruction.

We were missing the modrm byte this instruction has according
to current Intel SDM. Experiments with gcc indicate that different
modrm values are chosen based on 2 operands so I've added those
as well.

I think our previous implementation was based on an older behavior of
binutils that has since been changed.

4 years agoUpdate error to read a little better when an error occurs.
Eric Christopher [Sat, 20 Jun 2020 06:33:37 +0000 (23:33 -0700)]
Update error to read a little better when an error occurs.

4 years agoFix warning caused by TableGen verifier predicate (NFC)
Mehdi Amini [Sat, 20 Jun 2020 06:22:04 +0000 (06:22 +0000)]
Fix warning caused by TableGen verifier predicate (NFC)

Avoid using max on unsigned constants, in case the caller is using 0 we
end up with:

  warning: taking the max of unsigned zero and a value is always equal to the other value [-Wmax-unsigned-zero]

Instead we can just use native TableGen to fold the comparison here.

4 years agoUpdate redirected output file.
Eric Christopher [Sat, 20 Jun 2020 06:30:16 +0000 (23:30 -0700)]
Update redirected output file.

4 years agoUpdate test file.
Eric Christopher [Sat, 20 Jun 2020 06:13:28 +0000 (23:13 -0700)]
Update test file.

4 years ago[clang-change-namespace] As part of using inclusive language
Eric Christopher [Sat, 20 Jun 2020 06:01:42 +0000 (23:01 -0700)]
[clang-change-namespace] As part of using inclusive language
within the llvm project, migrate away from the use of blacklist
and whitelist.

4 years ago[lldb/Test] Disable TestBuiltinFormats.py on Windows
Jonas Devlieghere [Sat, 20 Jun 2020 05:40:55 +0000 (22:40 -0700)]
[lldb/Test] Disable TestBuiltinFormats.py on Windows

Disable the test to turn the Windows bot green again until Raphael has
time to investigate.

4 years ago[lldb/Test] Temporarily skip watch simulator in TestSimulatorPlatform.py
Jonas Devlieghere [Sat, 20 Jun 2020 03:21:45 +0000 (20:21 -0700)]
[lldb/Test] Temporarily skip watch simulator in TestSimulatorPlatform.py

The simulator doesn't launch on green-dragon-10.

rdar://problem/64552748

4 years ago[X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence.
Craig Topper [Sat, 20 Jun 2020 05:18:53 +0000 (22:18 -0700)]
[X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence.

These are documented as using modrm byte of 0xe8, 0xf0, and 0xf8
respectively. But hardware ignore bits 2:0. So 0xe9-0xef is treated
the same as 0xe8. Similar for the other two.

Fixing this required adding 8 new formats to the X86 instructions
to convey this information. Could have gotten away with 3, but
adding all 8 made for a more logical conversion from format to
modrm encoding.

I renumbered the format encodings to keep the register modrm
formats grouped together.

4 years ago[SanitizeCoverage] Rename -fsanitize-coverage-{white,black}list to -fsanitize-coverag...
Fangrui Song [Sat, 20 Jun 2020 05:22:47 +0000 (22:22 -0700)]
[SanitizeCoverage] Rename -fsanitize-coverage-{white,black}list to -fsanitize-coverage-{allow,block}list

Keep deprecated -fsanitize-coverage-{white,black}list as aliases for compatibility for now.

Reviewed By: echristo

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

4 years ago[IR] Convert profile metadata in createCallMatchingInvoke()
Yevgeny Rouban [Sat, 20 Jun 2020 05:06:01 +0000 (12:06 +0700)]
[IR] Convert profile metadata in createCallMatchingInvoke()

When an invoke instruction is converted to a call its
profile metadata is dropped because it has incompatible
format (see commit 16ad6eeb94ff).
This patch adds an attempt to convert profile data to
format of the call instruction. This used to work well
before the commit dcfa78a4ccec.

Reviewers: reames
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82071

4 years ago[Mips] Error if a non-immediate operand is used while an immediate is expected
Wang Rui [Sat, 20 Jun 2020 05:05:28 +0000 (22:05 -0700)]
[Mips] Error if a non-immediate operand is used while an immediate is expected

The 32-bit type relocation (R_MIPS_32) cannot be used for instructions below:

ori $4, $4, start
ori $4, $4, (start - .)

We should print an error instead.

Reviewed By: atanasyan, MaskRay

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

4 years ago[lld] As part of using inclusive language within the llvm
Eric Christopher [Sat, 20 Jun 2020 04:50:14 +0000 (21:50 -0700)]
[lld] As part of using inclusive language within the llvm
project, migrate away from the use of blacklist and whitelist.

4 years ago[libcxx] As part of using inclusive language within the llvm
Eric Christopher [Sat, 20 Jun 2020 04:37:11 +0000 (21:37 -0700)]
[libcxx] As part of using inclusive language within the llvm
project, migrate away from the use of blacklist and whitelist.

4 years ago[UpdateTestChecks] As part of using inclusive language within the
Eric Christopher [Sat, 20 Jun 2020 04:30:17 +0000 (21:30 -0700)]
[UpdateTestChecks] As part of using inclusive language within the
llvm project, migrate away from the use of blacklist and whitelist.

4 years ago[StackSafety,NFC] Don't rerun on LiveIn change
Vitaly Buka [Thu, 18 Jun 2020 09:30:33 +0000 (02:30 -0700)]
[StackSafety,NFC] Don't rerun on LiveIn change

4 years ago[ObjectYAML][ELF] Add support for emitting the .debug_info section.
Xing GUO [Sat, 20 Jun 2020 04:09:22 +0000 (12:09 +0800)]
[ObjectYAML][ELF] Add support for emitting the .debug_info section.

This patch helps add support for emitting the .debug_info section to yaml2elf.

Reviewed By: jhenderson, grimar, MaskRay

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

4 years ago[AMDGPU] Avoid use of V_READLANE into EXEC in SGPR spills
Carl Ritson [Sat, 20 Jun 2020 01:23:34 +0000 (10:23 +0900)]
[AMDGPU] Avoid use of V_READLANE into EXEC in SGPR spills

Always prefer to clobber input SGPRs and restore them after the
spill.  This applies to both spills to VGPRs and scratch.

Reviewed By: arsenm

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

4 years ago[mlir] Fix gcc build break due to previous commit
Thomas Raoux [Sat, 20 Jun 2020 02:00:14 +0000 (19:00 -0700)]
[mlir] Fix gcc build break due to previous commit

4 years ago[ODRHash] Remove use of 'whitelist'.
Weverything [Sat, 20 Jun 2020 01:35:36 +0000 (18:35 -0700)]
[ODRHash] Remove use of 'whitelist'.

4 years ago[flang] Fix F5.3 formatting of 0.025
peter klausler [Fri, 19 Jun 2020 20:32:26 +0000 (13:32 -0700)]
[flang] Fix F5.3 formatting of 0.025

Fix F output editing in the Fortran runtime so that it
respects the 'd' count of digits after the decimal mark.

Reviewed By: tskeith

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

4 years ago[mlir][spirv] Legalize subviewop when used with vector transfer
Thomas Raoux [Sat, 20 Jun 2020 00:33:15 +0000 (17:33 -0700)]
[mlir][spirv] Legalize subviewop when used with vector transfer

Subview operations are not natively supported downstream in the spirv path.
This change allows removing subview when used by vector transfer the same way
we already do it when they are used by LoadOp/StoreOp

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

4 years ago[mlir] Allow vector.contract to have mixed types operands
Thomas Raoux [Sat, 20 Jun 2020 00:08:57 +0000 (17:08 -0700)]
[mlir] Allow vector.contract to have mixed types operands

Allow lhs and rhs to have different type than accumulator/destination. Some
hardware like GPUs support natively operations like uint8xuint8xuint32.

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

4 years ago[Sema] Comparison of pointers to complete and incomplete types
Benson Chu [Sat, 20 Jun 2020 00:01:03 +0000 (17:01 -0700)]
[Sema] Comparison of pointers to complete and incomplete types

Clang is missing one of the conditions for C99 6.5.9p2, where comparison
between pointers must either both point to incomplete types or both
point to complete types. This patch adds an extra check to the clause
where two pointers are of compatible types.

This only applies to C89/C99; the relevant part of the standard was
rewritten for C11.

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

4 years ago[builtins][Android] Fix 386->686 adjustment
Ryan Prichard [Fri, 19 Jun 2020 06:57:08 +0000 (23:57 -0700)]
[builtins][Android] Fix 386->686 adjustment

At this point in this code:
 - COMPILER_RT_DEFAULT_TARGET_TRIPLE is "i686-linux-android"
 - arch is "i386"

The get_compiler_rt_target function currently turns that into:

   i686-android-linux-android

The ${COMPILER_RT_OS_SUFFIX} is "-android" and redundant, so stop
adding it.

The get_compiler_rt_target() function is used for the
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR mode that isn't normally used with
Android.

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

4 years ago[builtins] Fix typos in comments
Ryan Prichard [Fri, 19 Jun 2020 06:35:40 +0000 (23:35 -0700)]
[builtins] Fix typos in comments

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

4 years agoError related to ThinLTO caching needs to be downgraded to a remark
romanova-ekaterina [Fri, 19 Jun 2020 22:58:51 +0000 (15:58 -0700)]
Error related to ThinLTO caching needs to be downgraded to a remark

This is a fix for PR #46392 (Diagnostic message (error) related to
ThinLTO caching needs to be downgraded to a remark).

There are diagnostic messages related to ThinLTO caching that contain
the word "error", but they are really just notices/remarks for users,
and they don't cause a build failure. The word "error" appearing can be
confusing to users, and may even cause deeper problems.

User's build system might be designed to interpret any error messages
(even a benign error message as the one above) reported by the compiler
as a build failure, thus causing the build to fail "needlessly". In
short, the term "error" in this diagnostic is misleading at best, and
may be causing build systems to fail at worst.

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

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Fri, 19 Jun 2020 22:43:51 +0000 (15:43 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Fri, 19 Jun 2020 22:41:06 +0000 (15:41 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Fri, 19 Jun 2020 22:05:26 +0000 (15:05 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Fri, 19 Jun 2020 21:54:50 +0000 (14:54 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years ago[WebAssembly] Remove TEEs when dests are unstackified
Heejin Ahn [Mon, 15 Jun 2020 16:31:19 +0000 (09:31 -0700)]
[WebAssembly] Remove TEEs when dests are unstackified

When created in RegStackify pass, `TEE` has two destinations, where
op0 is stackified and op1 is not. But it is possible that
op0 becomes unstackified in `fixUnwindMismatches` function in
CFGStackify pass when a nested try-catch-end is introduced, violating
the invariant of `TEE`s destinations.

In this case we convert the `TEE` into two `COPY`s, which will
eventually be resolved in ExplicitLocals.

Reviewed By: dschuff

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

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Fri, 19 Jun 2020 21:52:01 +0000 (14:52 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years agoAs part of using inclusive language within the llvm project,
Eric Christopher [Fri, 19 Jun 2020 21:51:04 +0000 (14:51 -0700)]
As part of using inclusive language within the llvm project,
migrate away from the use of blacklist and whitelist.

4 years agoAs part of using inclusive language with the llvm project,
Eric Christopher [Fri, 19 Jun 2020 21:33:36 +0000 (14:33 -0700)]
As part of using inclusive language with the llvm project,
migrate away from the use of blacklist and whitelist.

4 years ago[Support] Fix building for mingw on a case sensitive file system
Martin Storsjö [Fri, 19 Jun 2020 21:39:22 +0000 (00:39 +0300)]
[Support] Fix building for mingw on a case sensitive file system

This fixes cross building on a case sensitive file system after
2e613d2ded2c465bd06bd3cac30ffb4576bf72cc. (The official Windows
SDKs don't have self-consistent casing and can't be used as such on
case sentisive file systems without case fixups, while mingw headers
consistently use lower case.)

4 years ago[MLIR][NFC] Eliminate .getBlocks() when not needed
Rahul Joshi [Fri, 19 Jun 2020 19:33:21 +0000 (12:33 -0700)]
[MLIR][NFC] Eliminate .getBlocks() when not needed

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

4 years ago[NFC] Remove unused pass name parser classes
Arthur Eubanks [Fri, 19 Jun 2020 19:42:00 +0000 (12:42 -0700)]
[NFC] Remove unused pass name parser classes

Summary: Looks like these were for the most part touched over a decade ago.

Subscribers: mgorny, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[lldb][NFC] Add test for builtin formats
Raphael Isemann [Fri, 19 Jun 2020 20:05:46 +0000 (22:05 +0200)]
[lldb][NFC] Add test for builtin formats

4 years ago[flang] DATA stmt processing (part 4/4): Check & convert DATA
peter klausler [Fri, 19 Jun 2020 16:16:21 +0000 (09:16 -0700)]
[flang] DATA stmt processing (part 4/4): Check & convert DATA

Implement rest of DATA statement semantics and conversion of
DATA statement initializations into static initializers of
objects in their symbol table entries.

Reviewed By: tskeith, PeteSteinfeld

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

4 years ago[AArch64][GlobalISel] Make G_SEXT_INREG legal and add selection support.
Amara Emerson [Wed, 17 Jun 2020 05:11:41 +0000 (22:11 -0700)]
[AArch64][GlobalISel] Make G_SEXT_INREG legal and add selection support.

We were defaulting to the lower action for this, resulting in SHL+ASHR
sequences. On AArch64 we can do this in one instruction for an arbitrary
extension using SBFM as we do for G_SEXT.

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

4 years ago[libc] This adds the strcmp (string compare) implementation.
cgyurgyik [Fri, 19 Jun 2020 20:05:26 +0000 (16:05 -0400)]
[libc] This adds the strcmp (string compare) implementation.
Reviewed-by: sivachandra
Differential Revision: https://reviews.llvm.org/D82134

4 years ago[clang-tidy] remove duplicate fixes of alias checkers
Daniel [Fri, 19 Jun 2020 19:40:03 +0000 (20:40 +0100)]
[clang-tidy] remove duplicate fixes of alias checkers

when both a check and its alias are enabled, we should only take the fixes of one of them and not both.
This patch fixes bug 45577
https://bugs.llvm.org/show_bug.cgi?id=45577

Reviewed By: aaron.ballman, njames93

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