SuccessChanges

Summary

  1. Limit the number of parallel link jobs for the full LTO builder. (details)
  2. Limit the number of parallel link jobs for the full LTO rerlease builder. (details)
Commit bf146f5f2d31420292ec3dd895a0e95e77a6bbfe by gkistanova
Limit the number of parallel link jobs for the full LTO builder.
With the larger number of link jobs the build time grows significantly, and with the default value it randomly runs out of memory.
The file was modifiedbuildbot/osuosl/master/config/builders.py (diff)
Commit fbffb6400d33e2f8e7eccf4570eddd3c79b28963 by gkistanova
Limit the number of parallel link jobs for the full LTO rerlease builder.
The file was modifiedbuildbot/osuosl/master/config/release_builders.py (diff)

Summary

  1. [PowerPC] Add fix to partword atomic operations (details)
  2. Add support for DWARF embedded source to llvm-symbolizer. (details)
  3. libsanitizer: Remove cyclades inclusion in sanitizer (details)
  4. [X86][Atom] Fix vector fadd/fcmp/fmul resource/throughputs (details)
  5. [ORC-RT] Add string_view and span utilities for use by the ORC runtime. (details)
  6. [scudo] Disable secondary cache-unmap tests on arm32. (details)
  7. [PGO] Don't reference functions unless value profiling is enabled (details)
  8. [RISCV] Ensure small mask BUILD_VECTORs aren't expanded (details)
  9. [scudo] Add supported architectures. (details)
  10. [FPEnv] EarlyCSE support for constrained intrinsics, default FP environment edition (details)
  11. [gn build] Use .export files (details)
  12. [libcxx][ranges] Implement `ranges::borrowed_range`. (details)
  13. [gn build] attempt to unbreak linux after fc9696130c8 (details)
  14. [gn build] use PEP-8 indents in symbol_exports.py (details)
  15. [gn build] attempt again to unbreak linux after fc9696130c8 (details)
  16. [gn build] try reverting code part of f05fbb7795 (details)
  17. Revert "[Remarks] Add analysis remarks for memset/memcpy/memmove lengths" (details)
  18. [gn build] Port 0af3105b641a (details)
  19. [libc++] Translate the test suite sanitizer support to the DSL (details)
  20. [libomptarget] Improve dlwrap compile time error diagnostic (details)
  21. [SelectionDAG][Mips][PowerPC][RISCV][WebAssembly] Teach computeKnownBits/ComputeNumSignBits about atomics (details)
  22. [lldb] Improve invalid DWARF DW_AT_ranges error reporting (details)
  23. [WebAssembly] Warn on exception spec for Emscripten EH (details)
Commit 45ad207e4585ff18ed11509991bf8512f2466818 by stefanp
[PowerPC] Add fix to partword atomic operations

Partword atomic binaries are not zero extended as they should be.
This patch fixes them to ensure that they are zero extended.

Reviewed By: nemanjai, #powerpc

Differential Revision: https://reviews.llvm.org/D102819
The file was modifiedllvm/test/CodeGen/PowerPC/atomics.ll
The file was addedllvm/test/CodeGen/PowerPC/ppc-partword-atomic.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
Commit 752385b128e437b2219934aa75a0c8dd65b6be44 by aorlov
Add support for DWARF embedded source to llvm-symbolizer.

This patch adds DWARF embedded source printout to llvm-symbolizer.

Reviewed By: jhenderson, dblaikie

Differential Revision: https://reviews.llvm.org/D102355
The file was addedllvm/test/tools/llvm-symbolizer/source.ll
The file was modifiedllvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
Commit 68d5235cb58f988c71b403334cd9482d663841ab by tamar.christina
libsanitizer: Remove cyclades inclusion in sanitizer

The Linux kernel has removed the interface to cyclades from
the latest kernel headers[1] due to them being orphaned for the
past 13 years.

libsanitizer uses this header when compiling against glibc, but
glibcs itself doesn't seem to have any references to cyclades.

Further more it seems that the driver is broken in the kernel and
the firmware doesn't seem to be available anymore.

As such since this is breaking the build of libsanitizer (and so the
GCC bootstrap[2]) I propose to remove this.

[1] https://lkml.org/lkml/2021/3/2/153
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379

Reviewed By: eugenis

Differential Revision: https://reviews.llvm.org/D102059
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
Commit a26288e8030a44a5696fe170de3fea79800d7bcd by llvm-dev
[X86][Atom] Fix vector fadd/fcmp/fmul resource/throughputs

Match whats documented in the Intel AOM - these are all fadd/fcmp use Port1 and fmul uses Port1, but in many cases BOTH ports are required - this was being incorrectly modelled as EITHER port.

Discovered while investigating the correct fptoui costs to fix the regressions in D101555.

Now that we can use in-order models in llvm-mca, the atom model is a good "worst case scenario" analysis for x86.
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s
The file was modifiedllvm/lib/Target/X86/X86ScheduleAtom.td
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-sse3.s
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-x87.s
Commit d22b27cfde0f65794acc3ff0663e0ad70fb2b7fc by Lang Hames
[ORC-RT] Add string_view and span utilities for use by the ORC runtime.

These are substitutes for std::string_view (and llvm::StringRef) and std::span
(and llvm::ArrayRef) for use by the ORC runtime.
The file was modifiedcompiler-rt/lib/orc/unittests/CMakeLists.txt
The file was addedcompiler-rt/lib/orc/unittests/adt_test.cpp
The file was addedcompiler-rt/lib/orc/adt.h
Commit 577a80bff8bdf9b26c0f4ff6d1807e43da66ec6a by 31459023+hctim
[scudo] Disable secondary cache-unmap tests on arm32.

Looks like secondary pointers don't get unmapped on one of the arm32
bots. In the interests of landing some dependent patches, disable this
test on arm32 so that it can be tested in isolation later.

Reviewed By: cryptoad, vitalybuka

Split from differential patchset (1/2): https://reviews.llvm.org/D102648
The file was modifiedcompiler-rt/lib/scudo/standalone/tests/secondary_test.cpp
Commit 8f20ac9595c8b279641dace6f212b8a9673b24e4 by rnk
[PGO] Don't reference functions unless value profiling is enabled

This reduces the size of chrome.dll.pdb built with optimizations,
coverage, and line table info from 4,690,210,816 to 2,181,128,192, which
makes it possible to fit under the 4GB limit.

This change can greatly reduce binary size in coverage builds, which do
not need value profiling. IR PGO builds are unaffected. There is a minor
behavior change for frontend PGO.

PGO and coverage both use InstrProfiling to create profile data with
counters. PGO records the address of each function in the __profd_
global. It is used later to map runtime function pointer values back to
source-level function names. Coverage does not appear to use this
information.

Recording the address of every function with code coverage drastically
increases code size. Consider this program:

  void foo();
  void bar();
  inline void inlineMe(int x) {
    if (x > 0)
      foo();
    else
      bar();
  }
  int getVal();
  int main() { inlineMe(getVal()); }

With code coverage, the InstrProfiling pass runs before inlining, and it
captures the address of inlineMe in the __profd_ global. This greatly
increases code size, because now the compiler can no longer delete
trivial code.

One downside to this approach is that users of frontend PGO must apply
the -mllvm -enable-value-profiling flag globally in TUs that enable PGO.
Otherwise, some inline virtual method addresses may not be recorded and
will not be able to be promoted. My assumption is that this mllvm flag
is not popular, and most frontend PGO users don't enable it.

Differential Revision: https://reviews.llvm.org/D102818
The file was modifiedclang/lib/CodeGen/CodeGenModule.cpp
The file was modifiedclang/lib/CodeGen/CodeGenPGO.h
The file was modifiedllvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
The file was modifiedcompiler-rt/test/profile/instrprof-value-prof-2.c
The file was modifiedcompiler-rt/test/profile/instrprof-value-prof.c
The file was modifiedclang/lib/CodeGen/CodeGenPGO.cpp
Commit c74ab891fc9ce4436a3360e14becea9c6794837f by fraser
[RISCV] Ensure small mask BUILD_VECTORs aren't expanded

The default expansion for BUILD_VECTORs -- save for going through
shuffles -- is to go through the stack. This method only works when the
type is at least byte-sized, so for v2i1 and v4i1 we would crash.

This patch ensures that small mask-type BUILD_VECTORs are always handled
without crashing. We lower to a SETCC of the equivalent i8 type.

This also exposes some pre-existing issues where the lowering when
optimizing for size results in larger code than without. Those will be
tackled in future patches.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D102767
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-buildvec.ll
Commit f4ccbaf310f15f8eb91d0504395171504638b93f by 31459023+hctim
[scudo] Add supported architectures.

Adds extra supported architectures that were available for vanilla
scudo, in preparation for D102543. Hopefully the dust has settled and
7d0a81ca38e427de9b7fb0961ec643b757028131 is no longer an issue.

Reviewed By: cryptoad, vitalybuka

Differential Revision: https://reviews.llvm.org/D102648
The file was modifiedcompiler-rt/cmake/config-ix.cmake
Commit f21f1eea05d65dbd6992fdb6b2bf1d5b4f657166 by kevin.neal
[FPEnv] EarlyCSE support for constrained intrinsics, default FP environment edition

EarlyCSE cannot distinguish between floating point instructions and
constrained floating point intrinsics that are marked as running in the
default FP environment. Said intrinsics are supposed to behave exactly the
same as the regular FP instructions. Teach EarlyCSE to handle them in that
case.

Differential Revision: https://reviews.llvm.org/D99962
The file was modifiedllvm/lib/IR/IntrinsicInst.cpp
The file was modifiedllvm/include/llvm/IR/IntrinsicInst.h
The file was modifiedllvm/lib/Transforms/Scalar/EarlyCSE.cpp
The file was addedllvm/test/Transforms/EarlyCSE/defaultfp-strictfp.ll
Commit fc9696130c8950fd0fbe2d4d571aa12c62f62a7a by thakis
[gn build] Use .export files

Just fixing an old TODO, no dramatic behavior change.

Differential Revision: https://reviews.llvm.org/D102843
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Transforms/Hello/BUILD.gn
The file was modifiedllvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
The file was addedllvm/utils/gn/build/symbol_exports.gni
The file was modifiedllvm/utils/gn/secondary/llvm/tools/bugpoint-passes/BUILD.gn
The file was addedllvm/utils/gn/build/symbol_exports.py
The file was modifiedllvm/utils/gn/secondary/llvm/tools/lto/BUILD.gn
Commit c40b02608eea5541b9f402f285b78cb0c1f3bb72 by zoecarver
[libcxx][ranges] Implement `ranges::borrowed_range`.

Differential Revision: https://reviews.llvm.org/D102426
The file was modifiedlibcxx/test/std/containers/associative/set/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/sequences/deque/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/unord/unord.multiset/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/sequences/vector.bool/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/re/re.results/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/sequences/list/range_concept_conformance.compile.pass.cpp
The file was addedlibcxx/test/std/ranges/range.range/borrowed_range.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/sequences/array/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/input.output/filesystems/class.directory_iterator/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/unord/unord.map/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/associative/multiset/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/views/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/sequences/forwardlist/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/unord/unord.multimap/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/input.output/filesystems/class.path/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/associative/multimap/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/associative/map/range_concept_conformance.compile.pass.cpp
The file was addedlibcxx/test/std/ranges/range.range/borrowed_range.subsumption.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/sequences/vector/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/test/std/containers/unord/unord.set/range_concept_conformance.compile.pass.cpp
The file was modifiedlibcxx/include/__ranges/concepts.h
Commit f05fbb7795a4dcc481c66a41a2c7816921bd7ef4 by thakis
[gn build] attempt to unbreak linux after fc9696130c8

Only emit `global:` if there are any exported symbols.

While here, `chmod +x` the symbol_exports.py script.
The file was modifiedllvm/utils/gn/build/symbol_exports.py
Commit f3f592ac89b56c2311f2d444c6e9bcc81560cd44 by thakis
[gn build] use PEP-8 indents in symbol_exports.py
The file was modifiedllvm/utils/gn/build/symbol_exports.py
Commit aa8fe8fe6c7bc571fd7bc9e0630061212ec0dff3 by thakis
[gn build] attempt again to unbreak linux after fc9696130c8
The file was modifiedllvm/utils/gn/build/symbol_exports.py
Commit e1ffcfcee7695b8b96d5d1fad4174b4bd4fd341e by thakis
[gn build] try reverting code part of f05fbb7795

Maybe aa8fe8fe6c7b was all that was needed to fix the build and
we can keep the code with fewer conditionals after all.
The file was modifiedllvm/utils/gn/build/symbol_exports.py
Commit 0af3105b641a8506e29218d9c86d020811a60289 by jonathan_roelofs
Revert "[Remarks] Add analysis remarks for memset/memcpy/memmove lengths"

This reverts commit 4bf69fb52b3c445ddcef5043c6b292efd14330e0.

This broke spec2k6/403.gcc under -global-isel. Details to follow once I've
reduced the problem.
The file was removedllvm/include/llvm/Transforms/Utils/MemoryOpRemark.h
The file was modifiedllvm/lib/Transforms/Scalar/AnnotationRemarks.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was addedllvm/lib/Transforms/Utils/AutoInitRemark.cpp
The file was removedllvm/test/CodeGen/AArch64/memsize-remarks.ll
The file was modifiedllvm/test/Transforms/Util/trivial-auto-var-init-store.ll
The file was modifiedllvm/lib/Transforms/Utils/CMakeLists.txt
The file was modifiedllvm/include/llvm/Analysis/OptimizationRemarkEmitter.h
The file was addedllvm/include/llvm/Transforms/Utils/AutoInitRemark.h
The file was modifiedllvm/test/Transforms/Util/trivial-auto-var-init-call.ll
The file was removedllvm/lib/Transforms/Utils/MemoryOpRemark.cpp
Commit efea813445077a4ef42309ef125cb71701e704ee by llvmgnsyncbot
[gn build] Port 0af3105b641a
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn
Commit 31bcdb66357c019614403bddb4fc629b3b97d217 by Louis Dionne
[libc++] Translate the test suite sanitizer support to the DSL

Differential Revision: https://reviews.llvm.org/D102108
The file was modifiedlibcxx/utils/libcxx/test/params.py
The file was modifiedlibcxx/utils/libcxx/test/config.py
Commit 68b88ae6701a840f5badb8ec0492602b953e8f8a by jonathanchesterfield
[libomptarget] Improve dlwrap compile time error diagnostic

[libomptarget] Improve dlwrap compile time error diagnostic

The dlwrap interface takes an explict arity, e.g. DLWRAP(cuAlloc, 2);
This probably can't be eliminated as it controls the argument list of an
external symbol, not an inline header function. If the arity given is too
big, the error from clang referring to the line is in the middle of
implementation details.

/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/tuple:1277:7: error: static_assert failed
      due to requirement '0UL < tuple_size<std::tuple<>>::value' "tuple index is in range"
      static_assert(__i < tuple_size<tuple<>>::value,
      ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/tuple:1260:7: ...
/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/tuple:1260:7: ...
/home/amd/llvm-project/openmp/libomptarget/include/dlwrap.h:93:27 ...

/home/amd/llvm-project/openmp/libomptarget/plugins/cuda/dynamic_cuda/cuda.cpp:34:1: note: in
      instantiation of template class 'dlwrap::trait<cudaError_enum (*)(unsigned long *, unsigned
      long)>::arg<2>' requested here
DLWRAP(cuMemAlloc, 3);
^
/home/amd/llvm-project/openmp/libomptarget/include/dlwrap.h:51:31: ...
/home/amd/llvm-project/openmp/libomptarget/include/dlwrap.h:166:3: ...
/home/amd/llvm-project/openmp/libomptarget/include/dlwrap.h:133:3: ...
/home/amd/llvm-project/openmp/libomptarget/include/dlwrap.h:186:37: ...

If the arity is too small, the diagnostic is better:

cuda/dynamic_cuda/cuda.cpp:34:1: error: too few
      arguments to function call, expected 2, have 1
DLWRAP(cuMemAlloc, 1);

This patch changes the diagnostic to:

cuda/dynamic_cuda/cuda.cpp:34:1: error:
      static_assert failed due to requirement '1 == trait<cudaError_enum (*)(unsigned long *, unsigned
      long)>::nargs' "Arity Error"
DLWRAP(cuMemAlloc, 1);

or

cuda/dynamic_cuda/cuda.cpp:34:1: error:
      static_assert failed due to requirement '3 == trait<cudaError_enum (*)(unsigned long *, unsigned
      long)>::nargs' "Arity Error"
DLWRAP(cuMemAlloc, 3);

Reviewed By: tianshilei1992

Differential Revision: https://reviews.llvm.org/D102858
The file was modifiedopenmp/libomptarget/include/dlwrap.h
Commit e10958c807f9091c3a69ce6506fa3b9579a8ca6a by jrtc27
[SelectionDAG][Mips][PowerPC][RISCV][WebAssembly] Teach computeKnownBits/ComputeNumSignBits about atomics

Unlike normal loads these don't have an extension field, but we know
from TargetLowering whether these are sign-extending or zero-extending,
and so can optimise away unnecessary extensions.

This was noticed on RISC-V, where sign extensions in the calling
convention would result in unnecessary explicit extension instructions,
but this also fixes some Mips inefficiencies. PowerPC sees churn in the
tests as all the zero extensions are only for promoting 32-bit to
64-bit, but these zero extensions are still not optimised away as they
should be, likely due to i32 being a legal type.

This also simplifies the WebAssembly code somewhat, which currently
works around the lack of target-independent combines with some ugly
patterns that break once they're optimised away.

Re-landed with correct handling in ComputeNumSignBits for Tmp == VTBits,
where zero-extending atomics were incorrectly returning 0 rather than
the (slightly confusing) required return value of 1.

Re-landed again after D102819 fixed PowerPC to correctly zero-extend all
of its atomics as it claimed to do, since the combination of that bug
and this optimisation caused buildbot regressions.

Reviewed By: RKSimon, atanasyan

Differential Revision: https://reviews.llvm.org/D101342
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i16-ldst.ll
The file was modifiedllvm/test/CodeGen/Mips/atomic.ll
The file was modifiedllvm/test/CodeGen/RISCV/atomic-signext.ll
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i32-ldst.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
The file was modifiedllvm/test/CodeGen/PowerPC/ppc-partword-atomic.ll
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i64-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i8-ldst.ll
Commit 6d19c84cd90369de5cda37f9a7a721e1cd9d0cb8 by jan.kratochvil
[lldb] Improve invalid DWARF DW_AT_ranges error reporting

In D98289#inline-939112 @dblaikie said:
  Perhaps this could be more informative about what makes the range list
  index of 0 invalid? "index 0 out of range of range list table (with
  range list base 0xXXX) with offset entry count of XX (valid indexes
  0-(XX-1))" Maybe that's too verbose/not worth worrying about since
  this'll only be relevant to DWARF producers trying to debug their
  DWARFv5, maybe no one will ever see this message in practice. Just
  a thought.

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D102851
The file was modifiedlldb/test/Shell/SymbolFile/DWARF/x86/debug_ranges-missing-section.s
The file was modifiedllvm/include/llvm/DebugInfo/DWARF/DWARFListTable.h
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
The file was modifiedlldb/test/Shell/SymbolFile/DWARF/DW_AT_range-DW_FORM_sec_offset.s
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
Commit 3eb12b0ae11fe23dc06e55e526fb45e460f72f1e by aheejin
[WebAssembly] Warn on exception spec for Emscripten EH

It turns out we have not correctly supported exception spec all along in
Emscripten EH. Emscripten EH supports `throw()` but not `throw` with
types. See https://bugs.llvm.org/show_bug.cgi?id=50396.

Wasm EH also only supports `throw()` but not `throw` with types, and we
have been printing a warning message for the latter. This prints the
same warning message for `throw` with types when Emscripten EH is used,
or more precisely, when Wasm EH is not used. (So this will print the
warning messsage even when `-fno-exceptions` is used but I think that
should be fine. It's cumbersome to do a complilcated option checking in
CGException.cpp and options checkings are mostly done in elsewhere.)

Reviewed By: dschuff, kripken

Differential Revision: https://reviews.llvm.org/D102791
The file was modifiedclang/lib/CodeGen/CGException.cpp
The file was modifiedclang/test/CodeGenCXX/wasm-eh.cpp