FailedChanges

Summary

  1. [sanitizer][zorg] Use ccache on Android bot (details)
Commit c2f611c2251ddfa75c6da25757ace8770ca61650 by Vitaly Buka
[sanitizer][zorg] Use ccache on Android bot
The file was modifiedzorg/buildbot/builders/sanitizers/buildbot_android_functions.sh (diff)

Summary

  1. [OpenMP] Add Support for Mapping Names in Libomptarget RTL (details)
  2. [PowerPC] Fix single-use check and update chain users for ld-splat (details)
  3. [libcxx] Don't truncate intermediates to wchar_t when widening (details)
  4. [CostModel] add tests for FP reductions; NFC (details)
  5. [CostModel] remove cost-kind predicate for FP add/mul vector reduction costs (details)
  6. [mlir] JitRunner: add a config option to register symbols with ExecutionEngine at runtime (details)
  7. [lld][WebAssembly] Fix memory size in dylink section for -pie exectuables (details)
  8. [JumpThreading] Set edge probabilities when creating basic blocks (details)
  9. [BranchProbabilityInfo] Fix eraseBlock (details)
  10. [mlir][Linalg] Add fusion of IndexedGenericOp with TensorReshapeOp by expansion. (details)
  11. [mlir][SIdeEffectInterface][NFC] Move several InterfaceMethods to the extraClassDeclarations instead (details)
  12. [mlir][Interfaces] Generate a struct containing function pointers instead of a class with vtables (details)
  13. [mlir][Interfaces] Optimize the implementation of InterfaceMap to reduce generated code size. (details)
  14. [mlir][NFC] Remove unnecessary PatternRewriter::create methods (details)
  15. [mlir][NFC] Fix incorrect header comments. (details)
  16. [BranchProbabilityInfo] Make MaxSuccIdx[Src] efficient and add a comment about the subtle eraseBlock. NFC (details)
  17. [libc][NFC] Use a convenience macro to declare special floating point constants. (details)
  18. Unbreak build with gcc5.3 after 917acac (details)
  19. [OpenMP][CUDA] Add missing overload for `remquo(float,float,int*)` (details)
  20. [LangRef] Clarify `dereferenceable` -> `nonnull` implication (details)
  21. [WebAssembly] Add support for DWARF type units (details)
  22. [clang] Pass-through remarks options to linker (details)
  23. [mlir] Fix stack-use-after-scope in cuda/vulkan cpu runners (details)
  24. Remove unused variable name. NFC. (details)
  25. Revert "[WebAssembly] Add support for DWARF type units" (details)
  26. [flang][openacc] Fix ambiguity in the self clause parsing (details)
  27. [MLIR] [ODS] Allowing attr-dict in custom directive (details)
Commit d981c7b7581efc3ef378709042100e75da0185a0 by huberjn
[OpenMP] Add Support for Mapping Names in Libomptarget RTL

Summary:
This patch adds basic support for priting the source location and names for the
mapped variables. This patch does not support names for custom mappers. This is
based on D89802. The names information currently will be printed out only in
debug mode or using env LIBOMPTARGET_INFO during execution. But the information
is added when availible to the Device and Private data structures. To get the
information out the code must be built with debug symbols on using -g or
-Rpass=openmp-opt

Reviewers: jdoerfert

Differential Revision: https://reviews.llvm.org/D90172
The file was modifiedopenmp/libomptarget/include/omptarget.h
The file was modifiedopenmp/libomptarget/src/private.h
The file was modifiedopenmp/libomptarget/src/interface.cpp
The file was addedopenmp/libomptarget/include/SourceInfo.h
The file was modifiedopenmp/libomptarget/src/omptarget.cpp
The file was modifiedopenmp/libomptarget/src/device.cpp
The file was modifiedopenmp/libomptarget/src/device.h
The file was modifiedopenmp/libomptarget/src/rtl.cpp
Commit 5459d08795e370321beb9e50c3b73e9fcd2dd7de by nemanja.i.ibm
[PowerPC] Fix single-use check and update chain users for ld-splat

When converting a BUILD_VECTOR or VECTOR_SHUFFLE to a splatting load
as of 1461fb6e783cb946b061f66689b419f74f7fad63, we inaccurately check
for a single user of the load and neglect to update the users of the
output chain of the original load. As a result, we can emit a new
load when the original load is kept and the new load can be reordered
after a dependent store. This patch fixes those two issues.

Fixes https://bugs.llvm.org/show_bug.cgi?id=47891
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
The file was addedllvm/test/CodeGen/PowerPC/pr47891.ll
Commit 70bba9ef3530b4a45fba1aabe413b56d7b54cc9f by martin
[libcxx] Don't truncate intermediates to wchar_t when widening

On windows, wchar_t is 16 bit, while we might be widening chars to
char32_t.

This cast had been present since the initial commit, and removing it
doesn't seem to make any tests fail.

Differential Revision: https://reviews.llvm.org/D90228
The file was modifiedlibcxx/include/__locale
Commit 138fda5dd2098da9b0857d34f415f723971a1c5c by spatel
[CostModel] add tests for FP reductions; NFC
The file was modifiedllvm/test/Analysis/CostModel/X86/intrinsic-cost-kinds.ll
Commit 50dfa19cc799ae7cddd39a95dbfce675a12672ad by spatel
[CostModel] remove cost-kind predicate for FP add/mul vector reduction costs

This was originally part of:
f2c25c70791d
but that was reverted because there was an underlying bug in
processing the vector type of these intrinsics. That was
fixed with:
74ffc823ed21

This is similar in spirit to 01ea93d85d6e (memcpy) except that
here the underlying caller assumptions were created for vectorizer
use (throughput) rather than other passes.

That meant targets could have an enormous throughput cost with no
corresponding size, latency, or blended cost increase.

Paraphrasing from the previous commits:
This may not make sense for some callers, but at least now the
costs will be consistently wrong instead of mysteriously wrong.

Targets should provide better overrides if the current modeling
is not accurate.
The file was modifiedllvm/test/Analysis/CostModel/X86/intrinsic-cost-kinds.ll
The file was modifiedllvm/include/llvm/CodeGen/BasicTTIImpl.h
Commit f6c9f6eccda44a1fa5a57652a73f9ebf6595f5a6 by ezhulenev
[mlir] JitRunner: add a config option to register symbols with ExecutionEngine at runtime

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D90264
The file was modifiedmlir/tools/mlir-vulkan-runner/mlir-vulkan-runner.cpp
The file was modifiedmlir/tools/mlir-spirv-cpu-runner/mlir-spirv-cpu-runner.cpp
The file was modifiedmlir/tools/mlir-cuda-runner/mlir-cuda-runner.cpp
The file was modifiedmlir/lib/ExecutionEngine/JitRunner.cpp
The file was modifiedmlir/include/mlir/ExecutionEngine/JitRunner.h
The file was modifiedmlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp
Commit 84129150ce82894e185c084f2eaec05f4c03dd4c by sbc
[lld][WebAssembly] Fix memory size in dylink section for -pie exectuables

This field to represents the amount of static data needed by
an dynamic library or executable it should not include things
like heap or stack areas, which in the case of `-pie` are
not determined until runtime (e.g. __stack_pointer is imported).

Differential Revision: https://reviews.llvm.org/D90261
The file was modifiedlld/test/wasm/pie.ll
The file was modifiedlld/wasm/Writer.cpp
Commit c91487769d80487eba1712a7a172a1c8977a9b4f by kazu
[JumpThreading] Set edge probabilities when creating basic blocks

This patch teaches the jump threading pass to set edge probabilities
whenever the pass creates new basic blocks.

Without this patch, the compiler sometimes produces non-deterministic
results.  The non-determinism comes from the jump threading pass using
stale edge probabilities in BranchProbabilityInfo.  Specifically, when
the jump threading pass creates a new basic block, we don't initialize
its outgoing edge probability.

Edge probabilities are maintained in:

  DenseMap<Edge, BranchProbability> Probs;

in class BranchProbabilityInfo, where Edge is an ordered pair of
BasicBlock * and a successor index declared as:

  using Edge = std::pair<const BasicBlock *, unsigned>;

Probs maps edges to their corresponding probabilities.

Now, we rarely remove entries from this map, so if we happen to
allocate a new basic block at the same address as a previously deleted
basic block with an edge probability assigned, the newly created basic
block appears to have an edge probability, albeit a stale one.

This patch fixes the problem by explicitly setting edge probabilities
whenever the jump threading pass creates new basic blocks.

Differential Revision: https://reviews.llvm.org/D90106
The file was addedllvm/test/Transforms/JumpThreading/thread-prob-3.ll
The file was modifiedllvm/lib/Transforms/Scalar/JumpThreading.cpp
The file was addedllvm/test/Transforms/JumpThreading/thread-prob-2.ll
The file was addedllvm/test/Transforms/JumpThreading/thread-prob-1.ll
Commit a7b662d0f4098371b96ce4446fb0eba79b0b649f by kazu
[BranchProbabilityInfo] Fix eraseBlock

This patch ensures that BranchProbabilityInfo::eraseBlock(BB) deletes
all entries in Probs associated with with BB.

Without this patch, stale entries for BB may remain in Probs after
eraseBlock(BB), leading to a situation where a newly created basic
block has an edge probability associated with it even before the pass
responsible for creating the basic block adds any edge probability to
it.

Consider the current implementation of eraseBlock(BB):

  for (const_succ_iterator I = succ_begin(BB), E = succ_end(BB); I != E; ++I) {
    auto MapI = Probs.find(std::make_pair(BB, I.getSuccessorIndex()));
    if (MapI != Probs.end())
      Probs.erase(MapI);
  }

Notice that it uses succ_begin(BB) and succ_end(BB), which are based
on BB->getTerminator().  This means that if the terminator changes
between calls to setEdgeProbability and eraseBlock, then we may not
examine all pairs associated with BB.

This is exactly what happens in MaybeMergeBasicBlockIntoOnlyPred,
which merges basic blocks A into B if A is the sole predecessor of B,
and B is the sole successor of A.  It replaces the terminator of A
with UnreachableInst before (indirectly) calling eraseBlock(A).

The patch fixes the problem by keeping track of all edge probablities
entered with setEdgeProbability in a map from BasicBlock* to a
successor index.

Differential Revision: https://reviews.llvm.org/D90272
The file was modifiedllvm/include/llvm/Analysis/BranchProbabilityInfo.h
The file was modifiedllvm/lib/Analysis/BranchProbabilityInfo.cpp
Commit 9d5239d39e48b8b171a0fbc47dbbb22381f4d9be by ravishankarm
[mlir][Linalg] Add fusion of IndexedGenericOp with TensorReshapeOp by expansion.

This patch adds support for fusing linalg.indexed_generic op with
linalg.tensor_reshape op by expansion, i.e.
- linalg.indexed_generic op -> linalg.tensor_reshape op when the
  latter is expanding.
- linalg.tensor_reshape op -> linalg.indexed_generic op when the
  former is folding.

Differential Revision: https://reviews.llvm.org/D90082
The file was modifiedmlir/test/Dialect/Linalg/reshape_fusion.mlir
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp
Commit d989ae90693ec2d1b7e048a7b48cbab3cfa8123b by riddleriver
[mlir][SIdeEffectInterface][NFC] Move several InterfaceMethods to the extraClassDeclarations instead

All InterfaceMethods will have a corresponding entry in the interface model, and by extension have an implementation generated for every operation type. This can result in large binary size increases when a large amount of operations use an interface, such as the side effect interface.

Differential Revision: https://reviews.llvm.org/D90084
The file was modifiedmlir/include/mlir/Interfaces/SideEffectInterfaces.td
Commit ef728eaf6e8de17b9f5bac89c972a94e37e4f09e by riddleriver
[mlir][Interfaces] Generate a struct containing function pointers instead of a class with vtables

When compiling for code size, the use of a vtable causes a destructor(and constructor in certain cases) to be generated for the class. Interface models don't need a complex constructor or a destructor, so this can lead to many megabytes of code size increase(even in opt). This revision switches to a simpler struct of function pointers approach that accomplishes the same API requirements as before. This change requires no updates to user code, or any other code aside from the generator, as the user facing API is still exactly the same.

Differential Revision: https://reviews.llvm.org/D90085
The file was modifiedmlir/tools/mlir-tblgen/OpInterfacesGen.cpp
Commit eacac2679ddb2b53025a11933eb222eaf75812ef by riddleriver
[mlir][Interfaces] Optimize the implementation of InterfaceMap to reduce generated code size.

An InterfaceMap is generated for every single operation type, and is responsible for a large amount of the code size from MLIR given that its internals highly utilize templates. This revision refactors the internal implementation to use bare malloc/free for interface instances as opposed to static variables and moves as much code out of templates as possible. This led to a decrease of over >1mb (~12% of total MLIR related code size) for a downstream MLIR library with a large amount of operations.

Differential Revision: https://reviews.llvm.org/D90086
The file was modifiedmlir/include/mlir/Support/InterfaceSupport.h
Commit 935d708568d755a091dfa13af04246858938d7fa by riddleriver
[mlir][NFC] Remove unnecessary PatternRewriter::create methods

At this point, these methods are just carbon copies of OpBuilder::create and aren't necessary given that PatternRewriter inherits from OpBuilder.

Differential Revision: https://reviews.llvm.org/D90087
The file was modifiedmlir/include/mlir/IR/PatternMatch.h
Commit c09d10437f9f00c1092c6034f80973fd0a2a984f by riddleriver
[mlir][NFC] Fix incorrect header comments.

Resolves missed comments in D89103
The file was modifiedmlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h
The file was modifiedmlir/include/mlir/Rewrite/PatternApplicator.h
Commit d69ada30e23f1b226daeee3a9b13826e1e368ede by i
[BranchProbabilityInfo] Make MaxSuccIdx[Src] efficient and add a comment about the subtle eraseBlock. NFC

Follow-up to D90272.
The file was modifiedllvm/lib/Analysis/BranchProbabilityInfo.cpp
Commit e4be4bcf83d9ed4888e42940deb6b6c8dceefa46 by sivachandra
[libc][NFC] Use a convenience macro to declare special floating point constants.

Reviewed By: lntue

Differential Revision: https://reviews.llvm.org/D90262
The file was modifiedlibc/test/src/math/remquo_test.cpp
The file was modifiedlibc/test/src/math/remquol_test.cpp
The file was modifiedlibc/utils/FPUtil/TestHelpers.h
The file was modifiedlibc/test/src/math/remquof_test.cpp
Commit 739d4bf8f43d0a5a3a99e07b1647ded1ce1d81b3 by thakis
Unbreak build with gcc5.3 after 917acac
The file was modifiedclang/lib/Basic/FileManager.cpp
The file was modifiedclang/include/clang/Basic/FileManager.h
Commit b1a90e1599a65bccf9af985603e198af3876b59a by johannes
[OpenMP][CUDA] Add missing overload for `remquo(float,float,int*)`

Reported by Colleen Bertoni <bertoni@anl.gov> after running the OvO test
suite: https://github.com/TApplencourt/OvO/

The template overload is still hidden behind an ifdef for OpenMP. In the
future we probably want to remove the ifdef but that requires further
testing.

Reviewed By: JonChesterfield, tra

Differential Revision: https://reviews.llvm.org/D89971
The file was modifiedclang/lib/Headers/__clang_cuda_cmath.h
Commit 14077836ec0575320042585a80e4227bb0ee5be0 by johannes
[LangRef] Clarify `dereferenceable` -> `nonnull` implication

If `null_pointer_is_valid` is present, `dereferenceable` does not imply
`nonnull`, make it clear.

Came up in D17993.

Reviewed By: aqjune

Differential Revision: https://reviews.llvm.org/D89417
The file was modifiedllvm/docs/LangRef.rst
Commit bcb8a119df210753c5f1a3ac346d49597fef0f51 by dschuff
[WebAssembly] Add support for DWARF type units

Since Wasm comdat sections work similarly to ELF, we can use that mechanism
to eliminate duplicate dwarf type information in the same way.

Differential Revision: https://reviews.llvm.org/D88603
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modifiedclang/test/Driver/debug-options.c
The file was modifiedllvm/lib/MC/WasmObjectWriter.cpp
The file was modifiedllvm/lib/MC/MCObjectFileInfo.cpp
The file was addedllvm/test/DebugInfo/WebAssembly/dwarf-headers.ll
Commit c4868700c58078d0f4c71fab5af2bb73270d2d9f by apollo.mobility
[clang] Pass-through remarks options to linker

Summary:
Propagate driver commandline remarks options to linker when LTO is enabled.

This gives novice user a convenient way to collect and filter remarks throughout
a typical toolchain invocation with sample profile and LTO using single switch
from the clang driver.

A typical use of this option from clang command-line:

* Using -Rpass* options to print remarks to screen:

  clang -fuse-ld=lld -flto=thin -fprofile-sample-use=foo_sample.txt
   -Rpass=inline -Rpass-missed=inline -Rpass-analysis=inline
   -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=100 -o foo foo.cpp

  Remarks will be dumped to screen from both pre-lto and lto
  compilation.

* Using serialized remarks options

  clang -fuse-ld=lld -flto=thin -fprofile-sample-use=foo_sample.txt
   -fsave-optimization-record
   -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=100 -o foo foo.cpp

  This will produce multiple yaml files containing optimization remarks:
  1. foo.opt.yaml : remarks from pre-lto
  2. foo.opt.ld.yaml.thin.1.yaml: remark during lto

  Differential Revision: https://reviews.llvm.org/D85810
The file was modifiedclang/test/Driver/opt-record.c
The file was modifiedclang/lib/Driver/ToolChains/CommonArgs.cpp
Commit a297340d9ef868662f6ac096001963c34862e367 by ezhulenev
[mlir] Fix stack-use-after-scope in cuda/vulkan cpu runners

+fix rocm runner

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D90274
The file was modifiedmlir/tools/mlir-rocm-runner/mlir-rocm-runner.cpp
The file was modifiedmlir/tools/mlir-spirv-cpu-runner/mlir-spirv-cpu-runner.cpp
The file was modifiedmlir/tools/mlir-cuda-runner/mlir-cuda-runner.cpp
The file was modifiedmlir/tools/mlir-vulkan-runner/mlir-vulkan-runner.cpp
Commit af2f5f99bd144ae2f70e21d53b23fc18a3d9d7d0 by richard
Remove unused variable name. NFC.
The file was modifiedclang/lib/Sema/SemaTemplate.cpp
Commit 44eea0b1a7301de4c284afed1c023014c391372f by dschuff
Revert "[WebAssembly] Add support for DWARF type units"

This reverts commit bcb8a119df210753c5f1a3ac346d49597fef0f51.
The file was modifiedllvm/lib/MC/MCObjectFileInfo.cpp
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
The file was modifiedclang/test/Driver/debug-options.c
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was removedllvm/test/DebugInfo/WebAssembly/dwarf-headers.ll
The file was modifiedllvm/lib/MC/WasmObjectWriter.cpp
Commit 990222931ba2c87803f8b0381a2088b0e2969848 by clementval
[flang][openacc] Fix ambiguity in the self clause parsing

In the OpenACC specification, there are two different self clause. One for the
update directive with a var-list argument. This clause is a synonym of the host clause.
The second self clause is present for most of the compute construct and takes an optional
condition. To solve this ambiguity, the self clause for the update directive is directly
translated to a host clause during the parsing. The self clause in AccClause refers always
to the compute construct clause.

Reviewed By: kiranktp

Differential Revision: https://reviews.llvm.org/D90185
The file was modifiedflang/lib/Parser/openacc-parsers.cpp
The file was modifiedflang/test/Semantics/acc-clause-validity.f90
Commit 035e12e66449576051fb0ac91ff84786f330ad95 by john.demme
[MLIR] [ODS] Allowing attr-dict in custom directive

Enhance tblgen's declarative assembly format to allow `attr-dict` in
custom directives.

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D89772
The file was modifiedmlir/lib/Dialect/Async/IR/Async.cpp
The file was modifiedmlir/test/lib/Dialect/Test/TestOps.td
The file was modifiedmlir/lib/Dialect/GPU/IR/GPUDialect.cpp
The file was modifiedmlir/docs/OpDefinitions.md
The file was modifiedmlir/test/lib/Dialect/Test/TestDialect.cpp
The file was modifiedmlir/tools/mlir-tblgen/OpFormatGen.cpp

Summary

  1. [sanitizer][zorg] Use ccache on Android bot (details)
Commit c2f611c2251ddfa75c6da25757ace8770ca61650 by Vitaly Buka
[sanitizer][zorg] Use ccache on Android bot
The file was modifiedzorg/buildbot/builders/sanitizers/buildbot_android_functions.sh