|
 | llvm/test/CodeGen/X86/pr58914.mir |
Commit
c2a17bff24f0b76c7aedd2f2396eae154c95de60
by jhuber6[libc] Set the stub filename to the target name instead of the source
The GPU target requires some weird special case handling to create fat binaries. CMake offers no way to set the name of an object library. The only way to do this is to create a file with the desired name and use that. Currently we name it after the source filename. However, this breaks if there is more than a single source. This patch changes the logic to instead look up the object target name and use that. E.g. `src.__support.OSUtil.osutil` will be `osutil.cpp`.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D145912
|
 | libc/cmake/modules/LLVMLibCObjectRules.cmake (diff) |
|
 | clang/lib/Sema/SemaStmt.cpp (diff) |
Commit
271b5cf562fc6947598377d7c7ba76d9485e71e4
by npopov[InstCombine] Fix infinite combine loop (PR61361)
In the degenerate case where the select is fed by an unsimplified icmp with two constant operands, don't try to replace one constant with another. Wait for the icmp to be simplified first instead.
Fixes https://github.com/llvm/llvm-project/issues/61361.
|
 | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp (diff) |
 | llvm/test/Transforms/InstCombine/select.ll (diff) |
Commit
9afcebb2202eb705da1ddbf6b36c1f5629042f6e
by zhijian[AIX] change "llvm-ar" to "env OBJECT_MODE=any llvm-ar" in clang/test for AIX OS
Summary:
In patch https://reviews.llvm.org/D127864. we add a new option -X for AIX OS, and default value is -X32. In order not effect the test cases in clang/test. we need to change "llvm-ar" to "env OBJECT_MODE=any llvm-ar" in clang/test for AIX OS
Differential Revision: https://reviews.llvm.org/D145600
|
 | clang/test/lit.cfg.py (diff) |
 | clang/test/Driver/linker-wrapper-libs.c (diff) |
Commit
27c4e233104ba765cd986b3f8b0dcd3a6c3a9f89
by npopov[InstCombine] Return instruction from replaceUse()
Same as with other replacement methods, it's generally necessary to report a change on the instruction itself, e.g. by returning it from the visit method (or possibly explicitly adding it to the worklist).
Return Instruction * from replaceUse() to encourage the usual "return replaceXYZ" pattern.
|
 | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp (diff) |
 | llvm/include/llvm/Transforms/InstCombine/InstCombiner.h (diff) |
 | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp (diff) |
Commit
d9db5a5904fd328130a5dd100e3cf36eb7d9e6d0
by zinenko[mlir] relax value handle updates when operation is replaced
The initial implementaiton of value handle update when the payload operation defining the values associated with value handles was being replaced required the replacement operation to have the same number of results. This is not strictly necessary. The replacement operation may have more results, or less results provided that there are no handles to the results that have no equivalent in the replacement op.
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D145254
|
 | mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp (diff) |
 | mlir/test/Dialect/Transform/transform-state-extension.mlir (diff) |
 | mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp (diff) |
Commit
fb5683449e97bd8c2d107128dcf08d6f93789315
by npopov[Pipelines] Restore old DAE position in LTO pipeline
This is a partial revert of D128830, restoring the previous position of DeadArgElim in the fat LTO pipeline. The motivation for this is a major code size regression observed in Rust and illustrated in the PhaseOrdering test.
This is a conservative fix restoring the previous pipeline order. The real problem is that the LTO pipeline is conceptually broken: It doesn't have a CGSCC function simplification pipeline. The inliner is just being run by itself. This wouldn't be a problem if fat LTO used a standard design where ArgPromotion and DAE are only run after functions have already been simplified by the CGSCC inliner pipeline.
Differential Revision: https://reviews.llvm.org/D146051
|
 | llvm/lib/Passes/PassBuilderPipelines.cpp (diff) |
 | llvm/test/Other/new-pm-lto-defaults.ll (diff) |
 | llvm/test/Transforms/PhaseOrdering/dae-dce.ll (diff) |
Commit
87dadf0f5b06f08baa480633aeef0bc47d3a59a0
by aeubanks[Pipeline] Move some GlobalOpt/GlobalDCE runs into simplification pipeline
These are very clearly more simplification than optimization.
Mostly NFC, except for some ordering around passes that don't really matter.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D145967
|
 | llvm/lib/Passes/PassBuilderPipelines.cpp (diff) |
Commit
a7d80f43cb8d3a2deb09f57d0904732d40020752
by kiran.chandramohan[Flang][OpenMP] Add support for OpenMP max reduction
This patch adds support for reduction of max-intrinsic for scalar types. Max is lowered as a compare-select in the default lowering flow for Flang. This pattern is matched and replaced with the OpenMP dialect reduction operation.
Note: This is a temporary flow. The plan is to move to a flow where the OpenMP reduction operation is inserted during lowering.
Reviewed By: do
Differential Revision: https://reviews.llvm.org/D145083
|
 | flang/test/Lower/OpenMP/Todo/reduction-max.f90 |
 | flang/test/Lower/OpenMP/wsloop-reduction-max.f90 |
 | flang/lib/Lower/OpenMP.cpp (diff) |
Commit
0ae8f5ac08ae61519e965808cf72f4f6ff09928d
by asb[RISCV][test][llvm-objdump] Add test cases for objdump's handling of RISCV arch attributes
In preparation for a follow-up patch to adjust the policy. The error for an unrecognized version of the base ISA is particularly problematic, as binaries produced from a current GCC are rejected.
The testing approach is modeled on the riscv-attributes.s file in lld/test/ELF.
|
 | llvm/test/tools/llvm-objdump/ELF/RISCV/riscv-attributes.s |
Commit
3d9880ebbcb7d458753ac73a65b401af94c7b762
by jennifer.yu[OpenMP]Skip generating this[:1] map info for non-member variable.
My change of D14093 is only fixed problem for "pragma target data".
The problem still here for "pragma target" what I am missing is: When processing "pragma target data", the VD is passed when call to emitCombinedEntry, so check VD is null as map for this pointer.
But when processing "pragma target" the VD is passed as nullptr, so check VD is null is not working.
To fix this I add a new parameter IsMapThis. During the call to emitCombinedEntry passes true if it is capturing this pointer and use that instead check of "!VD".
Differential Revision: https://reviews.llvm.org/D146000
|
 | clang/lib/CodeGen/CGOpenMPRuntime.cpp (diff) |
 | clang/test/OpenMP/target_map_member_expr_codegen.cpp (diff) |
 | openmp/libomptarget/test/mapping/target_map_for_member_data.cpp (diff) |
|
 | llvm/utils/gn/secondary/lldb/source/Plugins/ObjectFile/Placeholder/BUILD.gn |
 | llvm/utils/gn/secondary/lldb/source/Plugins/Process/Utility/BUILD.gn (diff) |
 | llvm/utils/gn/secondary/lldb/source/Plugins/BUILD.gn (diff) |
 | llvm/utils/gn/secondary/clang/lib/Driver/BUILD.gn (diff) |
 | llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn (diff) |
|
 | flang/lib/Lower/OpenMP.cpp (diff) |
 | flang/test/Lower/OpenMP/Todo/reduction-max.f90 |
 | flang/test/Lower/OpenMP/wsloop-reduction-max.f90 |
|
 | llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp (diff) |
 | llvm/include/llvm/Transforms/Utils/AssumeBundleBuilder.h (diff) |
Commit
bd5d0fee9bbb3762ff26538f03d59926f5635c78
by koraq[libc++] Qualifies uint32_t and friends.
This has been done using the following command find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)(?<!::u)u?int(_[a-z]+)?[0-9]{1,2}_t)|\1std::\2|' \{} \;
And manually removed some false positives in std/depr/depr.c.headers.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D145880
|
 | libcxx/test/libcxx/fuzzing/random.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.traits/is_abi_tag.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bitops.count/countr_zero.pass.cpp (diff) |
 | libcxx/test/std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp (diff) |
 | libcxx/test/libcxx/utilities/function.objects/unord.hash/murmur2_or_cityhash_ubsan_unsigned_overflow_ignored.pass.cpp (diff) |
 | libcxx/test/libcxx/utilities/utility/__murmur2_or_cityhash.abi-v2.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bit.pow.two/bit_floor.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.traits/is_simd_mask.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bitops.count/countl_one.pass.cpp (diff) |
 | libcxx/test/libcxx/type_traits/is_always_bitcastable.compile.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bit.pow.two/bit_ceil.pass.cpp (diff) |
 | libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_result_type.pass.cpp (diff) |
 | libcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.index.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bitops.count/countl_zero.pass.cpp (diff) |
 | libcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp (diff) |
 | libcxx/test/std/time/time.hms/time.hms.members/seconds.pass.cpp (diff) |
 | libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp (diff) |
 | libcxx/test/std/containers/sequences/deque/abi.compile.pass.cpp (diff) |
 | libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp (diff) |
 | libcxx/test/std/iterators/iterator.container/ssize.pass.cpp (diff) |
 | libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minmax_showbase.pass.cpp (diff) |
 | libcxx/test/libcxx/numerics/numeric.ops/midpoint.integer.pass.cpp (diff) |
 | libcxx/test/std/utilities/function.objects/unord.hash/integral.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.cons/load.pass.cpp (diff) |
 | libcxx/test/std/utilities/charconv/charconv.msvc/floating_point_test_cases.hpp (diff) |
 | libcxx/test/std/experimental/simd/simd.access/default.pass.cpp (diff) |
 | libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bitops.rot/rotl.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bit.pow.two/has_single_bit.pass.cpp (diff) |
 | libcxx/test/std/utilities/function.objects/unord.hash/enum.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.abi/vector_extension.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.mem/load.pass.cpp (diff) |
 | libcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp (diff) |
 | libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp (diff) |
 | libcxx/test/std/utilities/charconv/charconv.msvc/test.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.mem/store.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bitops.count/countr_one.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.traits/is_simd_flag_type.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bit.pow.two/bit_width.pass.cpp (diff) |
 | libcxx/test/std/utilities/format/format.functions/format_tests.h (diff) |
 | libcxx/test/std/utilities/utility/utility.intcmp/intcmp.in_range/in_range.pass.cpp (diff) |
 | libcxx/test/libcxx/utilities/format/format.arguments/format.arg/arg_t.compile.pass.cpp (diff) |
 | libcxx/test/support/filesystem_test_helper.h (diff) |
 | libcxx/test/std/language.support/support.srcloc/general.pass.cpp (diff) |
 | libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp (diff) |
 | libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp (diff) |
 | libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bit.pow.two/bit_ceil.fail.cpp (diff) |
 | libcxx/test/std/numerics/rand/rand.dist/rand.dist.samp/rand.dist.samp.discrete/eval.pass.cpp (diff) |
 | libcxx/test/std/time/time.hms/time.hms.members/subseconds.pass.cpp (diff) |
 | libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp (diff) |
 | libcxx/test/libcxx/containers/unord/next_pow2.pass.cpp (diff) |
 | libcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.traits/is_simd.pass.cpp (diff) |
 | libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp (diff) |
 | libcxx/test/libcxx/utilities/utility/__murmur2_or_cityhash.abi-v1.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.casts/simd_cast.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.cons/default.pass.cpp (diff) |
 | libcxx/test/std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.integer.pass.cpp (diff) |
 | libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/byteswap.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp (diff) |
 | libcxx/test/std/utilities/charconv/charconv.to.chars/integral.pass.cpp (diff) |
 | libcxx/test/std/numerics/bit/bitops.rot/rotr.pass.cpp (diff) |
 | libcxx/test/std/time/time.syn/formatter.hh_mm_ss.pass.cpp (diff) |
 | libcxx/test/support/atomic_helpers.h (diff) |
 | libcxx/test/std/numerics/bit/bitops.count/popcount.pass.cpp (diff) |
 | libcxx/test/std/atomics/types.pass.cpp (diff) |
 | libcxx/test/std/experimental/simd/simd.cons/generator.pass.cpp (diff) |
 | libcxx/test/support/format.functions.common.h (diff) |
|
 | libcxx/utils/ci/Dockerfile (diff) |
|
 | llvm/lib/Transforms/Coroutines/CoroCleanup.cpp (diff) |
Commit
b2fad8027ae630db6310fb925303643d4da35365
by asb[RISCV][NFC] Small refactor in RISCVISAInfo::parseArchString
Slightly refactor handling of version extraction for the 'baseline' ISA, to make an upcoming patch easier to review.
|
 | llvm/lib/Support/RISCVISAInfo.cpp (diff) |
Commit
fdda602c04e43f7be8820996d3161abb71bec67b
by npopovRevert "[InstCombine] Return instruction from replaceUse()"
This reverts commit 27c4e233104ba765cd986b3f8b0dcd3a6c3a9f89.
I think I made a mistake with the use in RemoveConditionFromAssume(), because the instruction being changed is not the current one, but the next assume. Revert the change for now.
|
 | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp (diff) |
 | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp (diff) |
 | llvm/include/llvm/Transforms/InstCombine/InstCombiner.h (diff) |
Commit
62e46f262158e2a6ea9c1c458f52633bb40a8590
by paul.walker[LLVM] Remove support for constant scalable vector GEPs.
This work has fallen out from D134648 as a requirement to loosen the "constness" of vscale.
Differential Revision: https://reviews.llvm.org/D145404
|
 | llvm/test/CodeGen/AArch64/sve-vscale.ll (diff) |
 | llvm/lib/IR/Constants.cpp (diff) |
 | llvm/lib/Bitcode/Reader/BitcodeReader.cpp (diff) |
 | llvm/lib/Analysis/ConstantFolding.cpp (diff) |
 | llvm/test/Transforms/InstSimplify/vscale.ll (diff) |
 | llvm/include/llvm/IR/Constants.h (diff) |
 | llvm/test/Transforms/InstSimplify/ConstProp/vscale-inseltpoison.ll (diff) |
 | llvm/lib/Analysis/InstructionSimplify.cpp (diff) |
 | llvm/include/llvm/IR/ConstantFolder.h (diff) |
 | llvm/test/Transforms/InstSimplify/vscale-inseltpoison.ll (diff) |
 | llvm/test/Bitcode/constexpr-scalable-vector-gep.ll (diff) |
 | llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll (diff) |
 | llvm/include/llvm/Analysis/TargetFolder.h (diff) |
|
 | llvm/include/llvm/Passes/StandardInstrumentations.h (diff) |
 | llvm/lib/Passes/StandardInstrumentations.cpp (diff) |
Commit
e417f02b5159c13f011335636faaf8c6847b627f
by congcongcai0907[SemaCXX]use CorrectDelayedTyposInExpr in ActOnCXXFoldExpr only when Diag
PR #61326
- fix clang crash when fold expression contains a delayed typos correction.
code snippet in `ActOnCXXFoldExpr` ``` if (!LHS || !RHS) { Expr *Pack = LHS ? LHS : RHS; assert(Pack && "fold expression with neither LHS nor RHS"); DiscardOperands(); if (!Pack->containsUnexpandedParameterPack()) return Diag(EllipsisLoc, diag::err_pack_expansion_without_parameter_packs) << Pack->getSourceRange(); } ``` `DiscardOperands` will be triggered when LHS/RHS is delayed typo correction expression. It will output and clean all diagnose but still return a valid expression. (in else branch) valid expression will be handled in caller function. When caller wants to output the diagnose, the diagnose in delayed typo correction expression has been consumed in `ActOnCXXFoldExpr`. It causes clang crash.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D145892
|
 | clang/lib/Sema/SemaTemplateVariadic.cpp (diff) |
 | clang/docs/ReleaseNotes.rst (diff) |
 | clang/test/SemaCXX/fold_expr_typo.cpp |
Commit
641939baa92835a3f588b2f68e6a8cda96a328ef
by a.bataev[SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions.
After merging main part of the gather/buildvector code, CreateShuffle lambda can removed and ShuffleBuilder add functions can be used instead. Also, part of the code from CreateShuffle migrated to createShuffle of the BaseShuffleAnalysis::createShuffle function for better code emission.
Differential Revision: https://reviews.llvm.org/D145988
|
 | llvm/test/Transforms/SLPVectorizer/X86/buildvector-nodes-dependency.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/entries-different-vf.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/AArch64/vectorize-free-extracts-inserts.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/PR39774.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/vect-gather-same-nodes.ll (diff) |
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/lookahead.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/gather-extractelements-different-bbs.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/reduction-logical.ll (diff) |
Commit
ec5f7004c0878f44843f2a4be1dbda7045a212c1
by koraq[libc++][format] Addresses LWG3825.
LWG3825 Missing compile-time argument id check in basic_format_parse_context::next_arg_id
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D144327
|
 | libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/next_arg_id.pass.cpp (diff) |
 | libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/next_arg_id.verify.cpp |
 | libcxx/docs/Status/Cxx2bIssues.csv (diff) |
 | libcxx/include/__format/format_parse_context.h (diff) |
|
 | llvm/utils/gn/secondary/lldb/source/Plugins/ObjectFile/Placeholder/BUILD.gn (diff) |
|
 | llvm/utils/gn/secondary/compiler-rt/lib/scudo/BUILD.gn (diff) |
 | llvm/utils/gn/secondary/llvm/lib/Target/X86/BUILD.gn (diff) |
 | llvm/utils/gn/secondary/llvm/unittests/Target/AMDGPU/BUILD.gn (diff) |
 | llvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn (diff) |
|
 | llvm/lib/Transforms/Utils/BasicBlockUtils.cpp (diff) |
 | llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp (diff) |
 | llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h (diff) |
|
 | llvm/lib/IR/StructuralHash.cpp (diff) |
Commit
a51e4026900af39208267c1c2aaea300d0ae8427
by koraq[NFC][libc++][format] Improves diagnostics.
While implementing the tests for LWG3720 I noticed the std::format errors for non-formattable types are not user friendly (and thus hard to write a .verify test too).
The issue stems from using a deleted function for invalid types. By using a function that returns an invalid value the diagnostics become a lot better. Before this change the existing "invalid value" static_assert could never trigger. Now it can be triggered by user code, therefore a diagnostic message has been added.
Before this change using a non-formattable type resulted in list of error messages along the line of
.../include/c++/v1/__format/format_arg_store.h:167:29: error: call to deleted function '__determine_arg_t' constexpr __arg_t __arg = __determine_arg_t<_Context, remove_cvref_t<_Tp>>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .../include/c++/v1/__format/format_arg_store.h:210:54: note: in instantiation of function template specialization 'std::__format::__create_format_arg<std::format_context, char16_t &>' requested here basic_format_arg<_Context> __arg = __format::__create_format_arg<_Context>(__args); ^ .../include/c++/v1/__format/format_arg_store.h:246:19: note: in instantiation of function template specialization 'std::__format::__create_packed_storage<std::format_context, int &, char16_t &>' requested here __format::__create_packed_storage(__storage.__types_, __storage.__values_, __args...); ^ .../include/c++/v1/__format/format_functions.h:73:10: note: in instantiation of member function 'std::__format_arg_store<std::format_context, int &, char16_t &>::__format_arg_store' requested here return _VSTD::__format_arg_store<_Context, _Args...>(__args...); ^ .../include/c++/v1/__config:664:17: note: expanded from macro '_VSTD' # define _VSTD std ^ .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:46:50: note: in instantiation of function template specialization 'std::make_format_args<std::format_context, int &, char16_t &>' requested here TEST_IGNORE_NODISCARD std::vformat(fmt, std::make_format_args<context_t<CharT>>(args...)); ^ .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:69:3: note: in instantiation of function template specialization 'test_exception<char, int, char16_t>' requested here test_exception(SV("{:{}}"), 42, u'0'); ^ .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:97:3: note: in instantiation of function template specialization 'test<char>' requested here test<char>(); ^ .../include/c++/v1/__format/format_arg_store.h:154:19: note: candidate function [with _Context = std::format_context, _Tp = char16_t] has been explicitly deleted consteval __arg_t __determine_arg_t() ^ .../include/c++/v1/__format/format_arg_store.h:148:19: note: candidate function [with _Context = std::format_context, _Tp = char16_t] consteval __arg_t __determine_arg_t() {
<more errors omitted>
.../include/c++/v1/__format/format_arg_store.h:185:22: note: initializer of '__arg' is not a constant expression .../include/c++/v1/__format/format_arg_store.h:167:21: note: declared here constexpr __arg_t __arg = __determine_arg_t<_Context, remove_cvref_t<_Tp>>(); ^ .../build/include/c++/v1/__format/format_arg_store.h:194:73: error: member reference base type 'char16_t' is not a structure or union __arg, basic_string_view<typename _Context::char_type>{__value.data(), __value.size()}}; ~~~~~~~^~~~~ 11 errors generated.
After the change using the same non-formmatable type gives the following diagnostics
.../include/c++/v1/__format/format_arg_store.h:168:3: error: static assertion failed due to requirement '__arg != __arg_t::__none': the supplied type is not formattable static_assert(__arg != __arg_t::__none, "the supplied type is not formattable"); ^ ~~~~~~~~~~~~~~~~~~~~~~~~ .../include/c++/v1/__format/format_arg_store.h:210:54: note: in instantiation of function template specialization 'std::__format::__create_format_arg<std::format_context, char16_t &>' requested here basic_format_arg<_Context> __arg = __format::__create_format_arg<_Context>(__args); ^ .../include/c++/v1/__format/format_arg_store.h:246:19: note: in instantiation of function template specialization 'std::__format::__create_packed_storage<std::format_context, int &, char16_t &>' requested here __format::__create_packed_storage(__storage.__types_, __storage.__values_, __args...); ^ .../include/c++/v1/__format/format_functions.h:73:10: note: in instantiation of member function 'std::__format_arg_store<std::format_context, int &, char16_t &>::__format_arg_store' requested here return _VSTD::__format_arg_store<_Context, _Args...>(__args...); ^ .../include/c++/v1/__config:664:17: note: expanded from macro '_VSTD' # define _VSTD std ^ .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:46:50: note: in instantiation of function template specialization 'std::make_format_args<std::format_context, int &, char16_t &>' requested here TEST_IGNORE_NODISCARD std::vformat(fmt, std::make_format_args<context_t<CharT>>(args...)); ^ .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:69:3: note: in instantiation of function template specialization 'test_exception<char, int, char16_t>' requested here test_exception(SV("{:{}}"), 42, u'0'); ^ .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:97:3: note: in instantiation of function template specialization 'test<char>' requested here test<char>(); ^ .../include/c++/v1/__format/format_arg_store.h:168:23: note: expression evaluates to '0 != 0' static_assert(__arg != __arg_t::__none, "the supplied type is not formattable"); ~~~~~~^~~~~~~~~~~~~~~~~~ 1 error generated.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D144325
|
 | libcxx/include/__format/format_arg_store.h (diff) |
Commit
084e4138930d84b2e76b20c4f36d832abad61696
by asb[RISCV] Fix regression due to interaction of MachineOutliner and MachineCopyPropagation
D144535 enabled machine copy propagation for RISC-V and added it to the pass pipeline in addPreEmitPass2 (after the MachineOutliner). Unfortunately, the MachineCopyPropagation pass is unable to correctly analyse outlined functions, and will delete copy instructions where a register is set that is intended to be live-out. RISCVInstrInfo::buildOutlinedFrame will directly insert a JALR, while a similar function going through the normal codegen path would have a PseudoRet with operands indicating registers that are live-out.
This patch does the simplest fix, which is to run MachineCopyPropagation before the MachineOutliner.
Differential Revision: https://reviews.llvm.org/D146037
|
 | llvm/test/CodeGen/RISCV/O3-pipeline.ll (diff) |
 | llvm/lib/Target/RISCV/RISCVTargetMachine.cpp (diff) |
 | llvm/test/CodeGen/RISCV/machine-outliner-and-machine-copy-propagation.ll (diff) |