Commit
1c3ef9ef4a4dc84f36e9282b9cd1c7313a3d4a08
by paulsson[SystemZ] Support symbolic displacements.
This patch adds support for symbolic displacements, e.g. like 'lg %r0, sym(%r1)', which is done using relocations. This is needed to compile the kernel without disabling the integrated assembler.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D113341
|
 | llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp |
 | llvm/lib/Target/SystemZ/MCTargetDesc/SystemZInstPrinter.h |
 | llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp |
 | llvm/test/MC/SystemZ/fixups-out-of-range.s |
 | llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp |
 | llvm/lib/Target/SystemZ/SystemZInstrInfo.h |
 | llvm/test/MC/SystemZ/reloc-absolute.s |
 | llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp |
 | llvm/lib/Target/SystemZ/MCTargetDesc/SystemZInstPrinter.cpp |
 | llvm/test/MC/SystemZ/reloc-directive.s |
 | llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp |
 | llvm/test/MC/SystemZ/fixups.s |
 | llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCFixups.h |
Commit
193c40e9667ca2b173232b393fc72ea9e4944aa3
by Stanislav.Mekhanoshin[InstSimplify] Fold A|B | (A^B) --> A|B
This patch adds the following fold opportunity: A|B | (A^B) --> A|B
that is reported here : https://bugs.llvm.org/show_bug.cgi?id=52479
https://alive2.llvm.org/ce/z/33-My-
Test cases with base results are added in D113860
(authored by MehrHeidar, committed by rampitec).
Differential Revision: https://reviews.llvm.org/D113861
|
 | llvm/test/Transforms/InstSimplify/or.ll |
 | llvm/lib/Analysis/InstructionSimplify.cpp |
Commit
fcd07f810781c1754c2e7e9641fd18b95fa1368c
by Steven Wu[JITLink] Fix splitBlock if there are symbols span across the boundary
Fix `splitBlock` so that it can handle the case when the block being split has symbols span across the split boundary. This is an error case in general but for EHFrame splitting on macho platforms, there is an anonymous symbol that marks the entire block. Current implementation will leave a symbol that is out of bound of the underlying block. Fix the problem by dropping such symbols when the block is split.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D113912
|
 | llvm/lib/ExecutionEngine/JITLink/JITLink.cpp |
 | llvm/unittests/ExecutionEngine/JITLink/LinkGraphTests.cpp |
Commit
c9e46219f38da5c3fbfe41012173dc893516826e
by mizvekov[clang] retain type sugar in auto / template argument deduction
This implements the following changes: * AutoType retains sugared deduced-as-type. * Template argument deduction machinery analyses the sugared type all the way down. It would previously lose the sugar on first recursion. * Undeduced AutoType will be properly canonicalized, including the constraint template arguments. * Remove the decltype node created from the decltype(auto) deduction.
As a result, we start seeing sugared types in a lot more test cases, including some which showed very unfriendly `type-parameter-*-*` types.
Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Reviewed By: rsmith, #libc, ldionne
Differential Revision: https://reviews.llvm.org/D110216
|
 | clang-tools-extra/clangd/unittests/HoverTests.cpp |
 | clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-owning-memory.cpp |
 | clang/lib/Sema/SemaStmt.cpp |
 | clang/test/SemaTemplate/deduction.cpp |
 | clang-tools-extra/clangd/unittests/ASTTests.cpp |
 | clang/lib/AST/ASTImporter.cpp |
 | clang/lib/AST/Type.cpp |
 | clang/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp |
 | clang/test/SemaCXX/cxx1z-decomposition.cpp |
 | clang/include/clang/AST/Type.h |
 | clang-tools-extra/clang-tidy/readability/QualifiedAutoCheck.cpp |
 | clang/lib/Sema/SemaExprCXX.cpp |
 | clang/test/SemaCXX/sugared-auto.cpp |
 | clang/lib/Sema/SemaTemplate.cpp |
 | clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.cpp |
 | clang/lib/Sema/SemaType.cpp |
 | clang/test/SemaTemplate/friend.cpp |
 | clang/test/CXX/over/over.match/over.match.funcs/over.match.class.deduct/p2.cpp |
 | clang/lib/Sema/SemaLambda.cpp |
 | clang-tools-extra/clangd/FindTarget.cpp |
 | clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp |
 | clang/test/SemaCXX/recovery-expr-type.cpp |
 | clang/test/Index/print-type.cpp |
 | libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp |
 | clang-tools-extra/clangd/InlayHints.cpp |
 | clang/test/SemaCXX/sizeless-1.cpp |
 | clang/test/SemaCXX/deduced-return-type-cxx14.cpp |
 | lldb/test/Shell/SymbolFile/NativePDB/function-types-builtins.cpp |
 | clang/lib/Sema/SemaTemplateDeduction.cpp |
 | clang/include/clang/ASTMatchers/ASTMatchersInternal.h |
 | clang/test/SemaTemplate/attributes.cpp |
 | clang/include/clang/AST/ASTContext.h |
 | clang/lib/Sema/SemaCXXScopeSpec.cpp |
 | clang/test/SemaCXX/friend.cpp |
 | clang/lib/Sema/TreeTransform.h |
 | clang-tools-extra/clang-tidy/cppcoreguidelines/ProBoundsPointerArithmeticCheck.cpp |
 | clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p1-0x.cpp |
 | libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.fail.cpp |
 | clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp |
 | clang/include/clang/Sema/Sema.h |
 | clang/lib/Sema/SemaDecl.cpp |
 | clang/lib/AST/ASTContext.cpp |
 | libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp |
 | clang/test/SemaTemplate/operator-template.cpp |
 | clang-tools-extra/clangd/unittests/InlayHintTests.cpp |
 | libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp |
 | clang-tools-extra/clangd/unittests/tweaks/ExpandAutoTypeTests.cpp |
 | clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p4.cpp |
 | clang/lib/Sema/SemaDeclCXX.cpp |
 | clang/lib/Sema/SemaInit.cpp |
Commit
19867de9e79327207796a16c1c24ac5d2cafecf9
by aeubanks[NewPM] Only invalidate modified functions' analyses in CGSCC passes + turn on eagerly invalidate analyses
Previously, any change in any function in an SCC would cause all analyses for all functions in the SCC to be invalidated. With this change, we now manually invalidate analyses for functions we modify, then let the pass manager know that all function analyses should be preserved since we've already handled function analysis invalidation.
So far this only touches the inliner, argpromotion, function-attrs, and updateCGAndAnalysisManager(), since they are the most used.
This is part of an effort to investigate running the function simplification pipeline less on functions we visit multiple times in the inliner pipeline.
However, this causes major memory regressions especially on larger IR. To counteract this, turn on the option to eagerly invalidate function analyses. This invalidates analyses on functions immediately after they're processed in a module or scc to function adaptor for specific parts of the pipeline.
Within an SCC, if a pass only modifies one function, other functions in the SCC do not have their analyses invalidated, so in later function passes in the SCC pass manager the analyses may still be cached. It is only after the function passes that the eager invalidation takes effect. For the default pipelines this makes sense because the inliner pipeline runs the function simplification pipeline after all other SCC passes (except CoroSplit which doesn't request any analyses).
Overall this has mostly positive effects on compile time and positive effects on memory usage. https://llvm-compile-time-tracker.com/compare.php?from=7f627596977624730f9298a1b69883af1555765e&to=39e824e0d3ca8a517502f13032dfa67304841c90&stat=instructions https://llvm-compile-time-tracker.com/compare.php?from=7f627596977624730f9298a1b69883af1555765e&to=39e824e0d3ca8a517502f13032dfa67304841c90&stat=max-rss
D113196 shows that we slightly regressed compile times in exchange for some memory improvements when turning on eager invalidation. D100917 shows that we slightly improved compile times in exchange for major memory regressions in some cases when invalidating less in SCC passes. Turning these on at the same time keeps the memory improvements while keeping compile times neutral/slightly positive.
Reviewed By: asbirlea, nikic
Differential Revision: https://reviews.llvm.org/D113304
|
 | llvm/test/Other/new-pm-thinlto-defaults.ll |
 | llvm/test/Transforms/FunctionAttrs/invalidate.ll |
 | llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll |
 | clang/test/CodeGen/thinlto-distributed-newpm.ll |
 | llvm/lib/Transforms/IPO/ArgumentPromotion.cpp |
 | llvm/lib/Transforms/IPO/Inliner.cpp |
 | llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll |
 | llvm/test/Other/new-pm-pgo-preinline.ll |
 | llvm/test/Transforms/Inline/analysis-invalidation.ll |
 | llvm/test/Other/new-pm-defaults.ll |
 | llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll |
 | llvm/lib/Transforms/IPO/FunctionAttrs.cpp |
 | llvm/test/Transforms/Inline/cgscc-incremental-invalidate.ll |
 | llvm/lib/Passes/PassBuilderPipelines.cpp |
 | llvm/test/Other/new-pm-lto-defaults.ll |
 | llvm/lib/Analysis/CGSCCPassManager.cpp |
 | llvm/test/Other/new-pm-eager-invalidate.ll |
 | llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll |
Commit
cdb0623ad82751c87d9c7d4b2c6eaf0c5ccf3719
by rob.suderman[mlir][tosa] Add tosa.mul by one canonicalization
Multiply by one can be removed during canonicalization. This optimizes away unneeded operations.
Differential Revision: https://reviews.llvm.org/D113807
|
 | mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td |
 | mlir/lib/Dialect/Tosa/IR/TosaOps.cpp |
 | mlir/test/Dialect/Tosa/canonicalize.mlir |
Commit
0b5051cedec487f2e611ec2b582df6c23f90a046
by aeubanks[llvm-reduce] Don't reuse SmallVector across calls to getAllMetadata()
The SmallVector is not cleared in calls to getAllMetadata().
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D113808
|
 | llvm/tools/llvm-reduce/deltas/ReduceMetadata.cpp |
Commit
9809c6c61cebbfcd100a3afd30fc9009f68d4678
by yitzhakmAdd `isInitCapture` and `forEachLambdaCapture` matchers.
This contributes follow-up work from https://reviews.llvm.org/D112491, which allows for increased control over the matching of lambda captures. This also updates the documentation for the `lambdaCapture` matcher.
Reviewed By: ymandel, aaron.ballman
Differential Revision: https://reviews.llvm.org/D113575
|
 | clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp |
 | clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp |
 | clang/include/clang/ASTMatchers/ASTMatchers.h |
 | clang/docs/LibASTMatchersReference.html |
 | clang/lib/ASTMatchers/Dynamic/Registry.cpp |
Commit
833cdb0a079d26c39fe2a76c353427afbac84917
by Stanislav.MekhanoshinRevert "[InstSimplify] Fold A|B | (A^B) --> A|B"
This reverts commit 193c40e9667ca2b173232b393fc72ea9e4944aa3.
|
 | llvm/lib/Analysis/InstructionSimplify.cpp |
 | llvm/test/Transforms/InstSimplify/or.ll |