1. [clangd][NFC] Small tweak to combined provider (details)
  2. [AArch64][GlobalISel] Select G_SADDO and G_SSUBO (details)
  3. [ScalarizeMaskedMemIntrinsic] Move from CodeGen into Transforms (details)
  4. Fix inconsistent availability attribute message string literal check. (details)
  5. [LV] Make optimal-epilog-vectorization-profitability.ll more robust (details)
  6. [AArch64][SVE] Add lowering for llvm.maxnum|minnum for scalable type. (details)
  7. [VectorCombine] add tests for load of insert/extract; NFC (details)
  8. [test] Rewrite phi-empty.ll into a unittest (details)
  9. Remove unused include. NFC. (details)
  10. Move createScalarizeMaskedMemIntrinPass to Scalar.h (details)
  11. [compiler-rt santizer] Use clock_gettime instead of timespec_get (details)
  12. cppcoreguidelines Narrowing Conversions Check: detect narrowing conversions involving typedefs (details)
  13. [Time-report] Add a flag -ftime-report={per-pass,per-pass-run} to control the pass timing aggregation (details)
Commit 4a0528e4a0e3e4504db8650bf2bf7d6977ffa018 by n.james93
[clangd][NFC] Small tweak to combined provider

This should address the FIXME about clang3.9 dervied to base unique_ptr constructor not working.

Reviewed By: sammccall

Differential Revision:
The file was modifiedclang-tools-extra/clangd/ConfigProvider.cpp
Commit b15491eb333809e907e51d1b05da2a6a6344a427 by Jessica Paquette
[AArch64][GlobalISel] Select G_SADDO and G_SSUBO

We didn't have selector support for these.

Selection code is similar to `getAArch64XALUOOp` in AArch64ISelLowering. Similar
to that code, this returns the AArch64CC and the instruction produced. In SDAG,
this is used to optimize select + overflow and condition branch + overflow
pairs. (See `AArch64TargetLowering::LowerBR_CC` and

(G_USUBO should be easy to add here, but it isn't legalized right now.)

This also factors out the existing G_UADDO selection code, and removes an
unnecessary check for s32/s64. AFAIK, we shouldn't ever get anything other than
s32/s64. It makes more sense for this to be handled by the type assertion in

Differential Revision:
The file was addedllvm/lib/Target/AArch64/GISel/select-saddo.mir
The file was addedllvm/lib/Target/AArch64/GISel/select-ssubo.mir
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
Commit 09f2f9605fbaff2b72c586d76256c9e6e312a0f3 by anna
[ScalarizeMaskedMemIntrinsic] Move from CodeGen into Transforms

ScalarizeMaskedMemIntrinsic is currently a codeGen level pass. The pass
is actually operating on IR level and does not use any code gen specific
passes.  It is useful to move it into transforms directory so that it
can be more widely used as a mid-level transform as well (apart from
usage in codegen pipeline).
In particular, we have a usecase downstream where we would like to use
this pass in our mid-level pipeline which operates on IR level.

The next change will be to add support for new PM.

Reviewers: craig.topper, apilipenko, skatkov
Reviewed-By: skatkov
Differential Revision:
The file was modifiedllvm/lib/Transforms/Scalar/Scalar.cpp
The file was modifiedllvm/lib/CodeGen/CMakeLists.txt
The file was modifiedllvm/lib/CodeGen/CodeGen.cpp
The file was addedllvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp
The file was removedllvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp
The file was modifiedllvm/lib/Transforms/Scalar/CMakeLists.txt
Commit 27ea7d0a6e0dc51e0214707bcc265fa6f9dc9bc6 by aaron
Fix inconsistent availability attribute message string literal check.

Function Parser::ParseAvailabilityAttribute checks that the message string of
an availability attribute is not a wide string literal. Test case
clang/test/Parser/attr-availability.c specifies that a string literal is

The code checked that the first token in a string concatenation is a string
literal, and then that the concatenated string consists of 1-byte characters.
On a target where wide character is 1 byte, a string concatenation "a" L"b"
passes both those checks, but L"b" alone is rejected. More generally, "a" u8"b"
passes the checks, but u8"b" alone is rejected.

So check isAscii() instead of character size.
The file was modifiedclang/lib/Parse/ParseDecl.cpp
The file was modifiedclang/test/Parser/attr-availability.c
Commit 4c70b6ee45e89268598d1bd0811778244f136025 by bmahjour
[LV] Make optimal-epilog-vectorization-profitability.ll more robust

Add a CHECK to properly limit the scope of CHECK-NOTs
The file was modifiedllvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization-profitability.ll
Commit 8e6fc1f97eb9a63780158470596ddbec3d0ecd59 by huihuiz
[AArch64][SVE] Add lowering for llvm.maxnum|minnum for scalable type.

LLVM intrinsic llvm.maxnum|minnum is overloaded intrinsic, can be used on any
floating-point or vector of floating-point type.
This patch extends current infrastructure to support scalable vector type.

This patch also fix a warning message of incorrect use of EVT::getVectorNumElements()
for scalable type, when DAGCombiner trying to split scalable vector.

Reviewed By: sdesmalen

Differential Revision:
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modifiedllvm/test/CodeGen/AArch64/sve-fp.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
Commit 2a06628185b4598fa8a6a5b733028b4255818ce9 by spatel
[VectorCombine] add tests for load of insert/extract; NFC
The file was modifiedllvm/test/Transforms/VectorCombine/X86/load.ll
Commit 554e6db18e0f264481bdab20dca9cc772d90270e by aeubanks
[test] Rewrite phi-empty.ll into a unittest

phi-empty.ll does not pass under the new PM because the NPM runs
-loop-simplify. Running -loop-simplify ends up not reproing

Verified that this test fails when 9eb2c011 is reverted.

Reviewed By: spatel

Differential Revision:
The file was modifiedllvm/unittests/IR/BasicBlockTest.cpp
The file was removedllvm/test/Transforms/LoopRotate/phi-empty.ll
Commit 10987e30be7737855ac5bc4289b3abc052f7d403 by benny.kra
Remove unused include. NFC.

This is also a layering violation.
The file was modifiedllvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp
Commit 5f18e2f31ecbda5ace100cd2925ef7a0cafe3c3b by benny.kra
Move createScalarizeMaskedMemIntrinPass to Scalar.h
The file was modifiedllvm/include/llvm/Transforms/Scalar.h
The file was modifiedllvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp
The file was modifiedllvm/include/llvm/CodeGen/Passes.h
Commit d7e71b5db8427309ad12249633ea86cccdc5a701 by tejohnson
[compiler-rt santizer] Use clock_gettime instead of timespec_get

On RH66, timespec_get is not available. Use clock_gettime instead.

This problem was introduced with D87120

Reviewed By: tejohnson

Differential Revision:
The file was modifiedcompiler-rt/lib/memprof/memprof_allocator.cpp
The file was modifiedcompiler-rt/lib/memprof/memprof_rtl.cpp
Commit c6348e8c95ee1eaa9dd2322b278def7a4127ff26 by aaron
cppcoreguidelines Narrowing Conversions Check: detect narrowing conversions involving typedefs

The check 'cppcoreguidelines-narrowing-conversions' does not detect conversions
involving typedef. This notably includes the standard fixed-width integer types
like int32_t, uint64_t, etc. Now look through the typedefs at the desugared type.
The file was modifiedclang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-narrowing-conversions.cpp
The file was modifiedclang-tools-extra/clang-tidy/cppcoreguidelines/NarrowingConversionsCheck.cpp
Commit 1821265db681cd2289fce9331e3aed26bdf814e3 by Yuanfang Chen
[Time-report] Add a flag -ftime-report={per-pass,per-pass-run} to control the pass timing aggregation

Currently, -ftime-report + new pass manager emits one line of report for each
pass run. This potentially causes huge output text especially with regular LTO
or large single file (Obeserved in private tests and was reported in D51276).
The behaviour of -ftime-report + legacy pass manager is
emitting one line of report for each pass object which has relatively reasonable
text output size. This patch adds a flag `-ftime-report=` to control time report
aggregation for new pass manager.

The flag is for new pass manager only. Using it with legacy pass manager gives
an error. It is a driver and cc1 flag. `per-pass` is the new default so
`-ftime-report` is aliased to `-ftime-report=per-pass`. Before this patch,
functionality-wise `-ftime-report` is aliased to `-ftime-report=per-pass-run`.

* Adds an boolean variable TimePassesHandler::PerRun to control per-pass vs per-pass-run.
* Adds a new clang CodeGen flag CodeGenOptions::TimePassesPerRun to work with the existing CodeGenOptions::TimePasses.
* Remove FrontendOptions::ShowTimers, its uses are replaced by the existing CodeGenOptions::TimePasses.
* Remove FrontendTimesIsEnabled (It was introduced in D45619 which was largely reverted.)

Differential Revision:
The file was modifiedclang/include/clang/Frontend/Utils.h
The file was modifiedclang/include/clang/Basic/CodeGenOptions.def
The file was modifiedclang/lib/Frontend/CMakeLists.txt
The file was modifiedllvm/test/Other/time-passes.ll
The file was modifiedclang/lib/CodeGen/BackendUtil.cpp
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
The file was modifiedllvm/include/llvm/Pass.h
The file was addedclang/test/Driver/time-report.c
The file was modifiedclang/lib/Frontend/CompilerInstance.cpp
The file was modifiedclang/lib/CodeGen/CodeGenAction.cpp
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedllvm/lib/IR/PassTimingInfo.cpp
The file was modifiedclang/include/clang/Driver/
The file was removedclang/lib/Frontend/FrontendTiming.cpp
The file was addedclang/test/Misc/time-passes.c
The file was modifiedllvm/include/llvm/IR/PassTimingInfo.h
The file was modifiedclang/include/clang/Frontend/FrontendOptions.h


  1. [libc++] Remove the libc++ Sphinx docs job (details)
Commit 83961ba7f6ea91e59da08781979a89f558e7ed9b by Louis Dionne
[libc++] Remove the libc++ Sphinx docs job

It is now redundant, since we do it in the BuildKite jobs.

Differential Revision:
The file was modifiedbuildbot/osuosl/master/config/