git: 83e37ae556b2 - stable/13 - Merge llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 20 Apr 2024 10:34:37 UTC
The branch stable/13 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=83e37ae556b23e8e91169c618618d28d83ddb61b commit 83e37ae556b23e8e91169c618618d28d83ddb61b Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-02-07 14:58:02 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-04-19 21:24:46 +0000 Merge llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967 This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967. PR: 276104 MFC after: 1 month (cherry picked from commit b3edf4467982447620505a28fc82e38a414c07dc) --- .../llvm-project/clang/include/clang/AST/Type.h | 3 + .../clang/include/clang/Basic/AttrDocs.td | 5 +- .../clang/include/clang/Basic/BuiltinsAMDGPU.def | 62 +++ .../clang/include/clang/Basic/CodeGenOptions.def | 3 + .../include/clang/Basic/DiagnosticCommonKinds.td | 2 +- .../clang/include/clang/Basic/DiagnosticDocs.td | 9 + .../include/clang/Basic/DiagnosticSemaKinds.td | 6 + .../clang/include/clang/Basic/LangOptions.def | 1 + .../clang/include/clang/Driver/Options.td | 13 + .../clang/include/clang/Format/Format.h | 43 +- .../clang/include/clang/Lex/Preprocessor.h | 11 +- .../llvm-project/clang/include/clang/Sema/Lookup.h | 3 +- .../clang/include/clang/Serialization/ASTReader.h | 6 + contrib/llvm-project/clang/lib/AST/ASTContext.cpp | 20 +- .../llvm-project/clang/lib/AST/ExprConstant.cpp | 9 +- .../llvm-project/clang/lib/AST/ItaniumMangle.cpp | 25 +- .../llvm-project/clang/lib/AST/JSONNodeDumper.cpp | 3 + contrib/llvm-project/clang/lib/AST/ODRHash.cpp | 49 +- .../llvm-project/clang/lib/AST/TemplateBase.cpp | 3 +- .../llvm-project/clang/lib/AST/TextNodeDumper.cpp | 3 + contrib/llvm-project/clang/lib/AST/Type.cpp | 15 +- contrib/llvm-project/clang/lib/AST/TypePrinter.cpp | 2 + .../clang/lib/Basic/Targets/AArch64.cpp | 23 + .../llvm-project/clang/lib/Basic/Targets/AArch64.h | 1 + .../llvm-project/clang/lib/CodeGen/BackendUtil.cpp | 1 + .../llvm-project/clang/lib/CodeGen/CGBuiltin.cpp | 177 +++++++- contrib/llvm-project/clang/lib/CodeGen/CGExpr.cpp | 17 +- .../clang/lib/CodeGen/CoverageMappingGen.cpp | 6 +- .../clang/lib/CodeGen/Targets/RISCV.cpp | 21 +- contrib/llvm-project/clang/lib/Driver/Driver.cpp | 6 +- .../clang/lib/Driver/ToolChains/Clang.cpp | 15 + .../clang/lib/Driver/ToolChains/CommonArgs.cpp | 52 +++ .../clang/lib/Driver/ToolChains/CommonArgs.h | 3 + contrib/llvm-project/clang/lib/Format/Format.cpp | 23 +- .../clang/lib/Format/TokenAnnotator.cpp | 11 +- .../llvm-project/clang/lib/Lex/PPDirectives.cpp | 2 +- .../llvm-project/clang/lib/Lex/PPExpressions.cpp | 4 +- .../llvm-project/clang/lib/Sema/SemaChecking.cpp | 55 ++- .../llvm-project/clang/lib/Sema/SemaConcept.cpp | 8 +- contrib/llvm-project/clang/lib/Sema/SemaDecl.cpp | 3 +- contrib/llvm-project/clang/lib/Sema/SemaExpr.cpp | 6 +- .../llvm-project/clang/lib/Sema/SemaOverload.cpp | 44 +- .../llvm-project/clang/lib/Sema/SemaTemplate.cpp | 44 +- contrib/llvm-project/clang/lib/Sema/SemaType.cpp | 21 +- .../clang/lib/Serialization/ASTReader.cpp | 3 + .../clang/lib/Serialization/ASTReaderDecl.cpp | 38 +- .../clang/lib/Serialization/ASTWriter.cpp | 8 +- .../clang/lib/Serialization/ASTWriterDecl.cpp | 13 +- .../clang/lib/StaticAnalyzer/Core/Environment.cpp | 8 +- .../compiler-rt/lib/builtins/i386/chkstk.S | 2 - .../compiler-rt/lib/builtins/x86_64/chkstk.S | 2 - .../lib/profile/InstrProfilingPlatformWindows.c | 2 +- .../sanitizer_symbolizer_report.cpp | 4 +- .../libcxx/include/__algorithm/copy_move_common.h | 5 + .../libcxx/include/__algorithm/equal.h | 5 + .../libcxx/include/__algorithm/equal_range.h | 5 + .../llvm-project/libcxx/include/__algorithm/fold.h | 5 + .../libcxx/include/__algorithm/in_found_result.h | 5 + .../libcxx/include/__algorithm/in_fun_result.h | 5 + .../libcxx/include/__algorithm/in_in_out_result.h | 5 + .../libcxx/include/__algorithm/in_in_result.h | 5 + .../libcxx/include/__algorithm/in_out_out_result.h | 5 + .../libcxx/include/__algorithm/includes.h | 5 + .../libcxx/include/__algorithm/next_permutation.h | 5 + .../libcxx/include/__algorithm/nth_element.h | 5 + .../libcxx/include/__algorithm/partial_sort.h | 5 + .../libcxx/include/__algorithm/partial_sort_copy.h | 5 + .../libcxx/include/__algorithm/partition.h | 5 + .../libcxx/include/__algorithm/prev_permutation.h | 5 + .../include/__algorithm/pstl_any_all_none_of.h | 5 + .../pstl_backends/cpu_backends/transform_reduce.h | 5 + .../libcxx/include/__algorithm/pstl_copy.h | 5 + .../libcxx/include/__algorithm/pstl_count.h | 5 + .../libcxx/include/__algorithm/pstl_equal.h | 5 + .../libcxx/include/__algorithm/pstl_fill.h | 5 + .../libcxx/include/__algorithm/pstl_find.h | 5 + .../libcxx/include/__algorithm/pstl_for_each.h | 5 + .../libcxx/include/__algorithm/pstl_generate.h | 5 + .../include/__algorithm/pstl_is_partitioned.h | 5 + .../libcxx/include/__algorithm/pstl_merge.h | 5 + .../libcxx/include/__algorithm/pstl_move.h | 5 + .../libcxx/include/__algorithm/pstl_replace.h | 5 + .../libcxx/include/__algorithm/pstl_rotate_copy.h | 5 + .../libcxx/include/__algorithm/pstl_sort.h | 5 + .../libcxx/include/__algorithm/pstl_stable_sort.h | 5 + .../libcxx/include/__algorithm/pstl_transform.h | 5 + .../libcxx/include/__algorithm/ranges_all_of.h | 5 + .../libcxx/include/__algorithm/ranges_any_of.h | 5 + .../include/__algorithm/ranges_binary_search.h | 5 + .../libcxx/include/__algorithm/ranges_clamp.h | 5 + .../libcxx/include/__algorithm/ranges_contains.h | 5 + .../libcxx/include/__algorithm/ranges_copy.h | 5 + .../include/__algorithm/ranges_copy_backward.h | 5 + .../libcxx/include/__algorithm/ranges_copy_if.h | 5 + .../libcxx/include/__algorithm/ranges_copy_n.h | 5 + .../libcxx/include/__algorithm/ranges_count.h | 5 + .../libcxx/include/__algorithm/ranges_count_if.h | 5 + .../libcxx/include/__algorithm/ranges_ends_with.h | 5 + .../libcxx/include/__algorithm/ranges_equal.h | 5 + .../include/__algorithm/ranges_equal_range.h | 5 + .../libcxx/include/__algorithm/ranges_fill.h | 5 + .../libcxx/include/__algorithm/ranges_fill_n.h | 5 + .../libcxx/include/__algorithm/ranges_find.h | 5 + .../libcxx/include/__algorithm/ranges_find_end.h | 5 + .../include/__algorithm/ranges_find_first_of.h | 5 + .../libcxx/include/__algorithm/ranges_find_if.h | 5 + .../include/__algorithm/ranges_find_if_not.h | 5 + .../libcxx/include/__algorithm/ranges_for_each.h | 5 + .../libcxx/include/__algorithm/ranges_for_each_n.h | 5 + .../libcxx/include/__algorithm/ranges_generate.h | 5 + .../libcxx/include/__algorithm/ranges_generate_n.h | 5 + .../libcxx/include/__algorithm/ranges_includes.h | 5 + .../include/__algorithm/ranges_inplace_merge.h | 5 + .../libcxx/include/__algorithm/ranges_is_heap.h | 5 + .../include/__algorithm/ranges_is_heap_until.h | 5 + .../include/__algorithm/ranges_is_partitioned.h | 5 + .../include/__algorithm/ranges_is_permutation.h | 5 + .../libcxx/include/__algorithm/ranges_is_sorted.h | 5 + .../include/__algorithm/ranges_is_sorted_until.h | 5 + .../include/__algorithm/ranges_iterator_concept.h | 5 + .../__algorithm/ranges_lexicographical_compare.h | 5 + .../include/__algorithm/ranges_lower_bound.h | 5 + .../libcxx/include/__algorithm/ranges_make_heap.h | 5 + .../include/__algorithm/ranges_max_element.h | 5 + .../libcxx/include/__algorithm/ranges_merge.h | 5 + .../include/__algorithm/ranges_min_element.h | 5 + .../include/__algorithm/ranges_minmax_element.h | 5 + .../libcxx/include/__algorithm/ranges_mismatch.h | 5 + .../libcxx/include/__algorithm/ranges_move.h | 5 + .../include/__algorithm/ranges_move_backward.h | 5 + .../include/__algorithm/ranges_next_permutation.h | 5 + .../libcxx/include/__algorithm/ranges_none_of.h | 5 + .../include/__algorithm/ranges_nth_element.h | 5 + .../include/__algorithm/ranges_partial_sort.h | 5 + .../include/__algorithm/ranges_partial_sort_copy.h | 5 + .../libcxx/include/__algorithm/ranges_partition.h | 5 + .../include/__algorithm/ranges_partition_copy.h | 5 + .../include/__algorithm/ranges_partition_point.h | 5 + .../libcxx/include/__algorithm/ranges_pop_heap.h | 5 + .../include/__algorithm/ranges_prev_permutation.h | 5 + .../libcxx/include/__algorithm/ranges_push_heap.h | 5 + .../libcxx/include/__algorithm/ranges_remove.h | 5 + .../include/__algorithm/ranges_remove_copy.h | 5 + .../include/__algorithm/ranges_remove_copy_if.h | 5 + .../libcxx/include/__algorithm/ranges_remove_if.h | 5 + .../libcxx/include/__algorithm/ranges_replace.h | 5 + .../include/__algorithm/ranges_replace_copy.h | 5 + .../include/__algorithm/ranges_replace_copy_if.h | 5 + .../libcxx/include/__algorithm/ranges_replace_if.h | 5 + .../include/__algorithm/ranges_reverse_copy.h | 5 + .../libcxx/include/__algorithm/ranges_rotate.h | 5 + .../include/__algorithm/ranges_rotate_copy.h | 5 + .../libcxx/include/__algorithm/ranges_sample.h | 5 + .../libcxx/include/__algorithm/ranges_search_n.h | 5 + .../include/__algorithm/ranges_set_difference.h | 6 + .../include/__algorithm/ranges_set_intersection.h | 6 + .../__algorithm/ranges_set_symmetric_difference.h | 6 + .../libcxx/include/__algorithm/ranges_set_union.h | 5 + .../libcxx/include/__algorithm/ranges_shuffle.h | 5 + .../libcxx/include/__algorithm/ranges_sort.h | 5 + .../libcxx/include/__algorithm/ranges_sort_heap.h | 5 + .../include/__algorithm/ranges_stable_partition.h | 5 + .../include/__algorithm/ranges_stable_sort.h | 5 + .../include/__algorithm/ranges_starts_with.h | 5 + .../include/__algorithm/ranges_swap_ranges.h | 5 + .../libcxx/include/__algorithm/ranges_transform.h | 5 + .../libcxx/include/__algorithm/ranges_unique.h | 5 + .../include/__algorithm/ranges_unique_copy.h | 5 + .../libcxx/include/__algorithm/remove.h | 5 + .../libcxx/include/__algorithm/remove_if.h | 5 + .../libcxx/include/__algorithm/reverse.h | 5 + .../libcxx/include/__algorithm/rotate.h | 5 + .../libcxx/include/__algorithm/set_difference.h | 5 + .../libcxx/include/__algorithm/set_intersection.h | 5 + .../include/__algorithm/set_symmetric_difference.h | 5 + .../libcxx/include/__algorithm/set_union.h | 5 + .../libcxx/include/__algorithm/shift_left.h | 5 + .../libcxx/include/__algorithm/shift_right.h | 5 + .../llvm-project/libcxx/include/__algorithm/sort.h | 5 + .../libcxx/include/__algorithm/sort_heap.h | 5 + .../libcxx/include/__algorithm/stable_partition.h | 5 + .../libcxx/include/__algorithm/stable_sort.h | 5 + .../libcxx/include/__algorithm/swap_ranges.h | 5 + .../libcxx/include/__algorithm/unique.h | 5 + .../libcxx/include/__algorithm/unique_copy.h | 5 + .../libcxx/include/__algorithm/unwrap_iter.h | 2 +- .../libcxx/include/__algorithm/unwrap_range.h | 5 + contrib/llvm-project/libcxx/include/__config | 9 +- .../include/__filesystem/directory_iterator.h | 5 + .../libcxx/include/__filesystem/path.h | 5 + .../__filesystem/recursive_directory_iterator.h | 5 + .../libcxx/include/__format/format_arg.h | 5 + .../libcxx/include/__format/format_context.h | 5 + .../libcxx/include/__format/format_functions.h | 5 + .../libcxx/include/__format/formatter_output.h | 5 + .../libcxx/include/__format/write_escaped.h | 5 + .../libcxx/include/__functional/function.h | 5 + .../include/__iterator/cpp17_iterator_concepts.h | 5 + .../libcxx/include/__iterator/iterator_with_data.h | 5 + .../__memory/ranges_uninitialized_algorithms.h | 5 + .../libcxx/include/__memory/raw_storage_iterator.h | 5 + .../libcxx/include/__memory/shared_ptr.h | 5 + .../include/__memory/uninitialized_algorithms.h | 5 + .../libcxx/include/__mutex/once_flag.h | 5 + .../libcxx/include/__numeric/pstl_reduce.h | 5 + .../include/__numeric/pstl_transform_reduce.h | 5 + .../llvm-project/libcxx/include/__numeric/reduce.h | 5 + .../include/__numeric/saturation_arithmetic.h | 5 + .../libcxx/include/__numeric/transform_reduce.h | 5 + .../llvm-project/libcxx/include/__ranges/counted.h | 5 + .../libcxx/include/__ranges/drop_while_view.h | 5 + .../libcxx/include/__ranges/elements_view.h | 5 + .../libcxx/include/__ranges/filter_view.h | 5 + .../libcxx/include/__ranges/iota_view.h | 5 + .../libcxx/include/__ranges/join_view.h | 5 + .../libcxx/include/__ranges/lazy_split_view.h | 5 + .../libcxx/include/__ranges/repeat_view.h | 5 + .../libcxx/include/__ranges/reverse_view.h | 5 + .../libcxx/include/__ranges/single_view.h | 5 + .../libcxx/include/__ranges/split_view.h | 5 + .../libcxx/include/__ranges/take_while_view.h | 5 + .../libcxx/include/__ranges/transform_view.h | 5 + .../llvm-project/libcxx/include/__thread/jthread.h | 5 + .../llvm-project/libcxx/include/__thread/thread.h | 5 + contrib/llvm-project/libcxx/include/array | 5 + .../llvm-project/libcxx/include/condition_variable | 5 + .../libcxx/include/experimental/iterator | 5 + contrib/llvm-project/libcxx/include/future | 5 + contrib/llvm-project/libcxx/include/ios | 5 + contrib/llvm-project/libcxx/include/map | 5 + contrib/llvm-project/libcxx/include/ostream | 5 + contrib/llvm-project/libcxx/include/queue | 5 + contrib/llvm-project/libcxx/include/set | 5 + contrib/llvm-project/libcxx/include/stack | 5 + contrib/llvm-project/libcxx/include/string | 7 +- contrib/llvm-project/libcxx/include/strstream | 5 + contrib/llvm-project/libcxx/include/unordered_map | 5 + contrib/llvm-project/libcxx/include/unordered_set | 5 + contrib/llvm-project/libcxx/include/version | 14 +- contrib/llvm-project/libcxx/modules/std/atomic.inc | 2 + contrib/llvm-project/libcxx/modules/std/iosfwd.inc | 2 + contrib/llvm-project/libcxx/modules/std/string.inc | 4 + .../libcxx/modules/std/string_view.inc | 2 + contrib/llvm-project/lld/ELF/Arch/RISCV.cpp | 199 ++++++-- contrib/llvm-project/lld/ELF/InputFiles.cpp | 7 +- contrib/llvm-project/lld/ELF/InputSection.cpp | 13 +- contrib/llvm-project/lld/ELF/Relocations.cpp | 50 ++- contrib/llvm-project/lld/ELF/Writer.cpp | 12 +- contrib/llvm-project/lld/docs/ReleaseNotes.rst | 62 +++ .../llvm/include/llvm/Analysis/AliasAnalysis.h | 7 + .../include/llvm/Analysis/BasicAliasAnalysis.h | 14 +- .../include/llvm/Analysis/BranchProbabilityInfo.h | 13 +- .../llvm/include/llvm/Analysis/Loads.h | 12 +- .../llvm/include/llvm/Analysis/VecFuncs.def | 18 +- .../llvm/include/llvm/CodeGen/LivePhysRegs.h | 11 +- .../llvm/include/llvm/CodeGen/MachineBasicBlock.h | 6 + .../llvm/include/llvm/IR/IntrinsicsAMDGPU.td | 119 +++-- .../llvm/include/llvm/Support/X86FoldTablesUtils.h | 11 +- .../include/llvm/Target/TargetInstrPredicate.td | 34 ++ .../llvm/TargetParser/AArch64TargetParser.h | 3 +- .../llvm/include/llvm/TargetParser/Triple.h | 6 +- .../llvm/lib/Analysis/BasicAliasAnalysis.cpp | 6 +- contrib/llvm-project/llvm/lib/Analysis/Lint.cpp | 3 +- contrib/llvm-project/llvm/lib/Analysis/Loads.cpp | 9 +- .../llvm/lib/Analysis/LoopAccessAnalysis.cpp | 53 ++- .../llvm/lib/Analysis/MemorySSAUpdater.cpp | 22 +- .../llvm/lib/CodeGen/BranchFolding.cpp | 6 +- .../lib/ProfileData/Coverage/CoverageMapping.cpp | 240 ++++++++-- .../ProfileData/Coverage/CoverageMappingWriter.cpp | 10 +- .../llvm-project/llvm/lib/Support/RISCVISAInfo.cpp | 3 +- .../Target/AArch64/AArch64ExpandPseudoInsts.cpp | 6 + .../lib/Target/AArch64/AArch64FrameLowering.cpp | 6 +- .../lib/Target/AArch64/AArch64ISelLowering.cpp | 28 +- .../llvm/lib/Target/AArch64/AArch64ISelLowering.h | 4 +- .../llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 20 +- .../llvm/lib/Target/AArch64/AArch64InstrInfo.h | 3 - .../Target/AArch64/AArch64LoadStoreOptimizer.cpp | 229 ---------- .../lib/Target/AArch64/AArch64RegisterInfo.cpp | 35 ++ .../llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td | 22 + .../Target/AArch64/AArch64TargetTransformInfo.cpp | 17 +- .../llvm-project/llvm/lib/Target/AMDGPU/AMDGPU.td | 1 + .../llvm/lib/Target/AMDGPU/AMDGPUGISel.td | 24 + .../llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | 330 ++++++++++++++ .../llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h | 10 + .../llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | 1 + .../Target/AMDGPU/AMDGPUInstructionSelector.cpp | 213 +++++++++ .../lib/Target/AMDGPU/AMDGPUInstructionSelector.h | 13 + .../llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp | 79 +++- .../llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h | 1 + .../llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp | 16 +- .../lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp | 16 + .../lib/Target/AMDGPU/AMDGPUSearchableTables.td | 16 + .../Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 142 +++++- .../AMDGPU/Disassembler/AMDGPUDisassembler.cpp | 34 ++ .../llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp | 19 +- .../AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp | 47 ++ .../Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h | 4 + .../llvm/lib/Target/AMDGPU/SIDefines.h | 3 + .../llvm/lib/Target/AMDGPU/SIFoldOperands.cpp | 1 + .../llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 111 ++++- .../llvm/lib/Target/AMDGPU/SIISelLowering.h | 1 + .../llvm/lib/Target/AMDGPU/SIInstrFormats.td | 5 + .../llvm/lib/Target/AMDGPU/SIInstrInfo.h | 8 + .../llvm/lib/Target/AMDGPU/SIInstrInfo.td | 18 +- .../llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h | 32 +- .../llvm/lib/Target/AMDGPU/SIRegisterInfo.td | 5 + .../lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | 11 + .../llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h | 3 + .../llvm/lib/Target/AMDGPU/VOP1Instructions.td | 93 +++- .../llvm/lib/Target/AMDGPU/VOP3Instructions.td | 53 ++- .../llvm/lib/Target/AMDGPU/VOP3PInstructions.td | 500 ++++++++++++++++++++- .../llvm/lib/Target/AMDGPU/VOPInstructions.td | 32 +- .../llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp | 13 +- .../LoongArch/LoongArchTargetTransformInfo.cpp | 11 +- .../llvm/lib/Target/Mips/MipsAsmPrinter.cpp | 39 -- .../llvm/lib/Target/Mips/MipsAsmPrinter.h | 2 - .../Target/PowerPC/PPCExpandAtomicPseudoInsts.cpp | 14 +- .../llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | 13 +- .../llvm-project/llvm/lib/Target/RISCV/RISCV.td | 6 + .../llvm/lib/Target/RISCV/RISCVFeatures.td | 26 +- .../llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 2 +- .../llvm/lib/Target/RISCV/RISCVInstrInfoZicond.td | 2 - .../llvm/lib/Target/RISCV/RISCVMacroFusion.cpp | 210 --------- .../llvm/lib/Target/RISCV/RISCVMacroFusion.h | 28 -- .../llvm/lib/Target/RISCV/RISCVMacroFusion.td | 93 ++++ .../llvm/lib/Target/RISCV/RISCVSubtarget.cpp | 8 +- .../llvm/lib/Target/RISCV/RISCVSubtarget.h | 8 +- .../llvm/lib/Target/RISCV/RISCVTargetMachine.cpp | 13 +- .../lib/Target/SystemZ/SystemZFrameLowering.cpp | 12 +- .../llvm/lib/Target/X86/X86AsmPrinter.cpp | 1 - .../llvm/lib/Target/X86/X86FrameLowering.cpp | 15 +- .../llvm/lib/Target/X86/X86InstrAVX512.td | 2 +- .../llvm/lib/Target/X86/X86InstrFoldTables.cpp | 11 +- .../llvm/lib/Target/X86/X86InstrInfo.cpp | 35 +- .../llvm/lib/TargetParser/TargetParser.cpp | 1 + .../InstCombine/InstCombineLoadStoreAlloca.cpp | 3 +- .../InstCombine/InstCombineSimplifyDemanded.cpp | 3 + .../Transforms/Scalar/ConstraintElimination.cpp | 7 +- .../llvm/lib/Transforms/Scalar/JumpThreading.cpp | 13 +- .../lib/Transforms/Vectorize/LoopVectorize.cpp | 62 ++- .../llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 12 +- .../llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | 3 +- .../llvm/utils/TableGen/PredicateExpander.cpp | 34 ++ .../llvm/utils/TableGen/PredicateExpander.h | 4 + .../llvm/utils/TableGen/X86FoldTablesEmitter.cpp | 58 +-- lib/clang/include/VCSVersion.inc | 6 +- lib/clang/include/lld/Common/Version.inc | 2 +- lib/clang/include/llvm/Support/VCSRevision.h | 2 +- lib/clang/libllvm/Makefile | 3 +- usr.bin/clang/clang/clang-driver.cpp | 2 + usr.bin/clang/lld/lld-driver.cpp | 2 + usr.bin/clang/llvm-ar/llvm-ar-driver.cpp | 2 + usr.bin/clang/llvm-cxxfilt/llvm-cxxfilt-driver.cpp | 2 + usr.bin/clang/llvm-dwp/llvm-dwp-driver.cpp | 2 + usr.bin/clang/llvm-nm/llvm-nm-driver.cpp | 2 + usr.bin/clang/llvm-objcopy/llvm-objcopy-driver.cpp | 2 + usr.bin/clang/llvm-objdump/llvm-objdump-driver.cpp | 2 + .../clang/llvm-profdata/llvm-profdata-driver.cpp | 2 + usr.bin/clang/llvm-readobj/llvm-readobj-driver.cpp | 2 + usr.bin/clang/llvm-size/llvm-size-driver.cpp | 2 + .../llvm-symbolizer/llvm-symbolizer-driver.cpp | 2 + 361 files changed, 4552 insertions(+), 1284 deletions(-) diff --git a/contrib/llvm-project/clang/include/clang/AST/Type.h b/contrib/llvm-project/clang/include/clang/AST/Type.h index ea425791fc97..6384cf9420b8 100644 --- a/contrib/llvm-project/clang/include/clang/AST/Type.h +++ b/contrib/llvm-project/clang/include/clang/AST/Type.h @@ -3495,6 +3495,9 @@ enum class VectorKind { /// is RISC-V RVV fixed-length data vector RVVFixedLengthData, + + /// is RISC-V RVV fixed-length mask vector + RVVFixedLengthMask, }; /// Represents a GCC generic vector type. This type is created using diff --git a/contrib/llvm-project/clang/include/clang/Basic/AttrDocs.td b/contrib/llvm-project/clang/include/clang/Basic/AttrDocs.td index 7e633f8e2635..e02a1201e2ad 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/AttrDocs.td +++ b/contrib/llvm-project/clang/include/clang/Basic/AttrDocs.td @@ -2424,7 +2424,10 @@ only be a power of 2 between 64 and 65536. For types where LMUL!=1, ``__riscv_v_fixed_vlen`` needs to be scaled by the LMUL of the type before passing to the attribute. -``vbool*_t`` types are not supported at this time. +For ``vbool*_t`` types, ``__riscv_v_fixed_vlen`` needs to be divided by the +number from the type name. For example, ``vbool8_t`` needs to use +``__riscv_v_fixed_vlen`` / 8. If the resulting value is not a multiple of 8, +the type is not supported for that value of ``__riscv_v_fixed_vlen``. }]; } diff --git a/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAMDGPU.def b/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAMDGPU.def index d208342d9c51..74dfd1d214e8 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAMDGPU.def +++ b/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAMDGPU.def @@ -436,5 +436,67 @@ TARGET_BUILTIN(__builtin_amdgcn_global_load_tr_i32, "ii*1", "nc", "gfx12-insts,w TARGET_BUILTIN(__builtin_amdgcn_global_load_tr_v4i16, "V4sV4s*1", "nc", "gfx12-insts,wavefrontsize64") TARGET_BUILTIN(__builtin_amdgcn_global_load_tr_v4f16, "V4hV4h*1", "nc", "gfx12-insts,wavefrontsize64") +//===----------------------------------------------------------------------===// +// WMMA builtins. +// Postfix w32 indicates the builtin requires wavefront size of 32. +// Postfix w64 indicates the builtin requires wavefront size of 64. +// +// Some of these are very similar to their GFX11 counterparts, but they don't +// require replication of the A,B matrices, so they use fewer vector elements. +// Therefore, we add an "_gfx12" suffix to distinguish them from the existing +// builtins. +//===----------------------------------------------------------------------===// +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_f16_w32_gfx12, "V8fV8hV8hV8f", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_bf16_w32_gfx12, "V8fV8sV8sV8f", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f16_16x16x16_f16_w32_gfx12, "V8hV8hV8hV8h", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_bf16_16x16x16_bf16_w32_gfx12, "V8sV8sV8sV8s", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_i32_16x16x16_iu8_w32_gfx12, "V8iIbV2iIbV2iV8iIb", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_i32_16x16x16_iu4_w32_gfx12, "V8iIbiIbiV8iIb", "nc", "gfx12-insts,wavefrontsize32") +// These are gfx12-only, but for consistency with the other WMMA variants we're +// keeping the "_gfx12" suffix. +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_fp8_fp8_w32_gfx12, "V8fV2iV2iV8f", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_fp8_bf8_w32_gfx12, "V8fV2iV2iV8f", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_bf8_fp8_w32_gfx12, "V8fV2iV2iV8f", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_bf8_bf8_w32_gfx12, "V8fV2iV2iV8f", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_wmma_i32_16x16x32_iu4_w32_gfx12, "V8iIbV2iIbV2iV8iIb", "nc", "gfx12-insts,wavefrontsize32") + +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_f16_w64_gfx12, "V4fV4hV4hV4f", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_bf16_w64_gfx12, "V4fV4sV4sV4f", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f16_16x16x16_f16_w64_gfx12, "V4hV4hV4hV4h", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_bf16_16x16x16_bf16_w64_gfx12, "V4sV4sV4sV4s", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_i32_16x16x16_iu8_w64_gfx12, "V4iIbiIbiV4iIb", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_i32_16x16x16_iu4_w64_gfx12, "V4iIbiIbiV4iIb", "nc", "gfx12-insts,wavefrontsize64") +// These are gfx12-only, but for consistency with the other WMMA variants we're +// keeping the "_gfx12" suffix. +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_fp8_fp8_w64_gfx12, "V4fiiV4f", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_fp8_bf8_w64_gfx12, "V4fiiV4f", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_bf8_fp8_w64_gfx12, "V4fiiV4f", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_f32_16x16x16_bf8_bf8_w64_gfx12, "V4fiiV4f", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_wmma_i32_16x16x32_iu4_w64_gfx12, "V4iIbiIbiV4iIb", "nc", "gfx12-insts,wavefrontsize64") + +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_f16_w32, "V8fV8hV16hV8fs", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_bf16_w32, "V8fV8sV16sV8fs", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f16_16x16x32_f16_w32, "V8hV8hV16hV8hs", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_bf16_16x16x32_bf16_w32, "V8sV8sV16sV8ss", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_i32_16x16x32_iu8_w32, "V8iIbV2iIbV4iV8isIb", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_i32_16x16x32_iu4_w32, "V8iIbiIbV2iV8isIb", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_i32_16x16x64_iu4_w32, "V8iIbV2iIbV4iV8isIb", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_fp8_fp8_w32, "V8fV2iV4iV8fs", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_fp8_bf8_w32, "V8fV2iV4iV8fs", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_bf8_fp8_w32, "V8fV2iV4iV8fs", "nc", "gfx12-insts,wavefrontsize32") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_bf8_bf8_w32, "V8fV2iV4iV8fs", "nc", "gfx12-insts,wavefrontsize32") + +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_f16_w64, "V4fV4hV8hV4fs", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_bf16_w64, "V4fV4sV8sV4fs", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f16_16x16x32_f16_w64, "V4hV4hV8hV4hs", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_bf16_16x16x32_bf16_w64, "V4sV4sV8sV4ss", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_i32_16x16x32_iu8_w64, "V4iIbiIbV2iV4isIb", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_i32_16x16x32_iu4_w64, "V4iIbiIbiV4isIb", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_i32_16x16x64_iu4_w64, "V4iIbiIbV2iV4isIb", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_fp8_fp8_w64, "V4fiV2iV4fs", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_fp8_bf8_w64, "V4fiV2iV4fs", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_bf8_fp8_w64, "V4fiV2iV4fs", "nc", "gfx12-insts,wavefrontsize64") +TARGET_BUILTIN(__builtin_amdgcn_swmmac_f32_16x16x32_bf8_bf8_w64, "V4fiV2iV4fs", "nc", "gfx12-insts,wavefrontsize64") + #undef BUILTIN #undef TARGET_BUILTIN diff --git a/contrib/llvm-project/clang/include/clang/Basic/CodeGenOptions.def b/contrib/llvm-project/clang/include/clang/Basic/CodeGenOptions.def index 2f2e45d5cf63..7c0bfe328496 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/CodeGenOptions.def +++ b/contrib/llvm-project/clang/include/clang/Basic/CodeGenOptions.def @@ -369,6 +369,9 @@ ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibr /// The default TLS model to use. ENUM_CODEGENOPT(DefaultTLSModel, TLSModel, 2, GeneralDynamicTLSModel) +/// Whether to enable TLSDESC. AArch64 enables TLSDESC regardless of this value. +CODEGENOPT(EnableTLSDESC, 1, 0) + /// Bit size of immediate TLS offsets (0 == use the default). VALUE_CODEGENOPT(TLSSize, 8, 0) diff --git a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td index b1bada65cb6b..08bb1d81ba29 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td +++ b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td @@ -73,7 +73,7 @@ def warn_pragma_debug_unexpected_argument : Warning< def warn_fp_nan_inf_when_disabled : Warning< "use of %select{infinity|NaN}0%select{| via a macro}1 is undefined behavior " "due to the currently enabled floating-point options">, - InGroup<DiagGroup<"nan-infinity-disabled">>; + InGroup<DiagGroup<"nan-infinity-disabled", [], NanInfDisabledDocs>>; } // Parse && Sema diff --git a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDocs.td b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDocs.td index e9862422b499..8c024b5cad74 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDocs.td +++ b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDocs.td @@ -87,3 +87,12 @@ program by treating all string literals as having type ``const char *`` instead of ``char *``. This can cause unexpected behaviors with type-sensitive constructs like ``_Generic``. }]; + +defvar NanInfDisabledDocs = [{ +This warning is enabled when source code using the macros ``INFINITY`` or ``NAN`` +is compiled with floating-point options preventing these two values. This can +lead to undefined behavior. Check the order of command line arguments that modify +this behavior, such as ``-ffast-math``, ``-fhonor-infinities``, and +``-fhonor-nans`` (etc), as well as ``#pragma`` directives if this diagnostic is +generated unexpectedly. +}]; diff --git a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td index c5f1b67c4aa1..07ba4ecf7e12 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -3711,6 +3711,12 @@ def err_sme_za_call_no_za_state : Error< "call to a shared ZA function requires the caller to have ZA state">; def err_sme_zt0_call_no_zt0_state : Error< "call to a shared ZT0 function requires the caller to have ZT0 state">; +def err_sme_unimplemented_za_save_restore : Error< + "call to a function that shares state other than 'za' from a " + "function that has live 'za' state requires a spill/fill of ZA, which is not yet " + "implemented">; +def note_sme_use_preserves_za : Note< + "add '__arm_preserves(\"za\")' to the callee if it preserves ZA">; def err_sme_definition_using_sm_in_non_sme_target : Error< "function executed in streaming-SVE mode requires 'sme'">; def err_sme_definition_using_za_in_non_sme_target : Error< diff --git a/contrib/llvm-project/clang/include/clang/Basic/LangOptions.def b/contrib/llvm-project/clang/include/clang/Basic/LangOptions.def index 8fc75e1cca03..4942dcaa086e 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/LangOptions.def +++ b/contrib/llvm-project/clang/include/clang/Basic/LangOptions.def @@ -174,6 +174,7 @@ LANGOPT(MathErrno , 1, 1, "errno in math functions") BENIGN_LANGOPT(HeinousExtensions , 1, 0, "extensions that we really don't like and may be ripped out at any time") LANGOPT(Modules , 1, 0, "modules semantics") COMPATIBLE_LANGOPT(CPlusPlusModules, 1, 0, "C++ modules syntax") +LANGOPT(SkipODRCheckInGMF, 1, 0, "Skip ODR checks for decls in the global module fragment") LANGOPT(BuiltinHeadersInSystemModules, 1, 0, "builtin headers belong to system modules, and _Builtin_ modules are ignored for cstdlib headers") BENIGN_ENUM_LANGOPT(CompilingModule, CompilingModuleKind, 3, CMK_None, "compiling a module interface") diff --git a/contrib/llvm-project/clang/include/clang/Driver/Options.td b/contrib/llvm-project/clang/include/clang/Driver/Options.td index 7f4fa33748fa..e8d03fc26902 100644 --- a/contrib/llvm-project/clang/include/clang/Driver/Options.td +++ b/contrib/llvm-project/clang/include/clang/Driver/Options.td @@ -2985,6 +2985,14 @@ def fmodule_output : Flag<["-"], "fmodule-output">, Flags<[NoXarchOption]>, Visibility<[ClangOption, CC1Option]>, HelpText<"Save intermediate module file results when compiling a standard C++ module unit.">; +defm skip_odr_check_in_gmf : BoolOption<"f", "skip-odr-check-in-gmf", + LangOpts<"SkipODRCheckInGMF">, DefaultFalse, + PosFlag<SetTrue, [], [CC1Option], + "Skip ODR checks for decls in the global module fragment.">, + NegFlag<SetFalse, [], [CC1Option], + "Perform ODR checks for decls in the global module fragment.">>, + Group<f_Group>; + def fmodules_prune_interval : Joined<["-"], "fmodules-prune-interval=">, Group<i_Group>, Visibility<[ClangOption, CC1Option]>, MetaVarName<"<seconds>">, HelpText<"Specify the interval (in seconds) between attempts to prune the module cache">, @@ -4419,6 +4427,8 @@ def mtls_size_EQ : Joined<["-"], "mtls-size=">, Group<m_Group>, HelpText<"Specify bit size of immediate TLS offsets (AArch64 ELF only): " "12 (for 4KB) | 24 (for 16MB, default) | 32 (for 4GB) | 48 (for 256TB, needs -mcmodel=large)">, MarshallingInfoInt<CodeGenOpts<"TLSSize">>; +def mtls_dialect_EQ : Joined<["-"], "mtls-dialect=">, Group<m_Group>, + Flags<[TargetSpecific]>, HelpText<"Which thread-local storage dialect to use for dynamic accesses of TLS variables">; def mimplicit_it_EQ : Joined<["-"], "mimplicit-it=">, Group<m_Group>; def mdefault_build_attributes : Joined<["-"], "mdefault-build-attributes">, Group<m_Group>; def mno_default_build_attributes : Joined<["-"], "mno-default-build-attributes">, Group<m_Group>; @@ -7066,6 +7076,9 @@ def fexperimental_assignment_tracking_EQ : Joined<["-"], "fexperimental-assignme Values<"disabled,enabled,forced">, NormalizedValues<["Disabled","Enabled","Forced"]>, MarshallingInfoEnum<CodeGenOpts<"AssignmentTrackingMode">, "Enabled">; +def enable_tlsdesc : Flag<["-"], "enable-tlsdesc">, + MarshallingInfoFlag<CodeGenOpts<"EnableTLSDESC">>; + } // let Visibility = [CC1Option] //===----------------------------------------------------------------------===// diff --git a/contrib/llvm-project/clang/include/clang/Format/Format.h b/contrib/llvm-project/clang/include/clang/Format/Format.h index bc9eecd42f9e..efcb4e1d87ea 100755 --- a/contrib/llvm-project/clang/include/clang/Format/Format.h +++ b/contrib/llvm-project/clang/include/clang/Format/Format.h @@ -4157,14 +4157,9 @@ struct FormatStyle { /// Different ways to put a space before opening parentheses. enum SpaceBeforeParensStyle : int8_t { - /// Never put a space before opening parentheses. - /// \code - /// void f() { - /// if(true) { - /// f(); - /// } - /// } - /// \endcode + /// This is **deprecated** and replaced by ``Custom`` below, with all + /// ``SpaceBeforeParensOptions`` but ``AfterPlacementOperator`` set to + /// ``false``. SBPO_Never, /// Put a space before opening parentheses only after control statement /// keywords (``for/if/while...``). @@ -4273,28 +4268,14 @@ struct FormatStyle { /// object.operator++ (10); object.operator++(10); /// \endcode bool AfterOverloadedOperator; - /// Styles for adding spacing between ``new/delete`` operators and opening - /// parentheses. - enum AfterPlacementOperatorStyle : int8_t { - /// Remove space after ``new/delete`` operators and before ``(``. - /// \code - /// new(buf) T; - /// delete(buf) T; - /// \endcode - APO_Never, - /// Always add space after ``new/delete`` operators and before ``(``. - /// \code - /// new (buf) T; - /// delete (buf) T; - /// \endcode - APO_Always, - /// Leave placement ``new/delete`` expressions as they are. - APO_Leave, - }; - /// Defines in which cases to put a space between ``new/delete`` operators - /// and opening parentheses. - /// \version 18 - AfterPlacementOperatorStyle AfterPlacementOperator; + /// If ``true``, put a space between operator ``new``/``delete`` and opening + /// parenthesis. + /// \code + /// true: false: + /// new (buf) T; vs. new(buf) T; + /// delete (buf) T; delete(buf) T; + /// \endcode + bool AfterPlacementOperator; /// If ``true``, put space between requires keyword in a requires clause and /// opening parentheses, if there is one. /// \code @@ -4327,7 +4308,7 @@ struct FormatStyle { : AfterControlStatements(false), AfterForeachMacros(false), AfterFunctionDeclarationName(false), AfterFunctionDefinitionName(false), AfterIfMacros(false), - AfterOverloadedOperator(false), AfterPlacementOperator(APO_Leave), + AfterOverloadedOperator(false), AfterPlacementOperator(true), AfterRequiresInClause(false), AfterRequiresInExpression(false), BeforeNonEmptyParentheses(false) {} diff --git a/contrib/llvm-project/clang/include/clang/Lex/Preprocessor.h b/contrib/llvm-project/clang/include/clang/Lex/Preprocessor.h index 2d9c53cdf5bd..b0a8ec0fec5e 100644 --- a/contrib/llvm-project/clang/include/clang/Lex/Preprocessor.h +++ b/contrib/llvm-project/clang/include/clang/Lex/Preprocessor.h @@ -2828,7 +2828,8 @@ public: return AnnotationInfos.find(II)->second; } - void emitMacroExpansionWarnings(const Token &Identifier) const { + void emitMacroExpansionWarnings(const Token &Identifier, + bool IsIfnDef = false) const { IdentifierInfo *Info = Identifier.getIdentifierInfo(); if (Info->isDeprecatedMacro()) emitMacroDeprecationWarning(Identifier); @@ -2837,12 +2838,12 @@ public: !SourceMgr.isInMainFile(Identifier.getLocation())) emitRestrictExpansionWarning(Identifier); - if (Info->getName() == "INFINITY") - if (getLangOpts().NoHonorInfs) + if (!IsIfnDef) { + if (Info->getName() == "INFINITY" && getLangOpts().NoHonorInfs) emitRestrictInfNaNWarning(Identifier, 0); - if (Info->getName() == "NAN") - if (getLangOpts().NoHonorNaNs) + if (Info->getName() == "NAN" && getLangOpts().NoHonorNaNs) emitRestrictInfNaNWarning(Identifier, 1); + } } static void processPathForFileMacro(SmallVectorImpl<char> &Path, diff --git a/contrib/llvm-project/clang/include/clang/Sema/Lookup.h b/contrib/llvm-project/clang/include/clang/Sema/Lookup.h index 9c93bf1e6fb4..2f2f2607a937 100644 --- a/contrib/llvm-project/clang/include/clang/Sema/Lookup.h +++ b/contrib/llvm-project/clang/include/clang/Sema/Lookup.h @@ -754,7 +754,8 @@ public: private: void diagnoseAccess() { - if (isClassLookup() && getSema().getLangOpts().AccessControl) + if (!isAmbiguous() && isClassLookup() && + getSema().getLangOpts().AccessControl) getSema().CheckLookupAccess(*this); } diff --git a/contrib/llvm-project/clang/include/clang/Serialization/ASTReader.h b/contrib/llvm-project/clang/include/clang/Serialization/ASTReader.h index dd1451bbf2d2..cd28226c295b 100644 --- a/contrib/llvm-project/clang/include/clang/Serialization/ASTReader.h +++ b/contrib/llvm-project/clang/include/clang/Serialization/ASTReader.h @@ -2452,6 +2452,12 @@ private: uint32_t CurrentBitsIndex = ~0; }; +inline bool shouldSkipCheckingODR(const Decl *D) { + return D->getOwningModule() && + D->getASTContext().getLangOpts().SkipODRCheckInGMF && + D->getOwningModule()->isExplicitGlobalModule(); +} + } // namespace clang #endif // LLVM_CLANG_SERIALIZATION_ASTREADER_H diff --git a/contrib/llvm-project/clang/lib/AST/ASTContext.cpp b/contrib/llvm-project/clang/lib/AST/ASTContext.cpp index 9a0ede201059..cc5de9a6295e 100644 --- a/contrib/llvm-project/clang/lib/AST/ASTContext.cpp +++ b/contrib/llvm-project/clang/lib/AST/ASTContext.cpp @@ -1949,7 +1949,8 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const { else if (VT->getVectorKind() == VectorKind::SveFixedLengthPredicate) // Adjust the alignment for fixed-length SVE predicates. Align = 16; - else if (VT->getVectorKind() == VectorKind::RVVFixedLengthData) + else if (VT->getVectorKind() == VectorKind::RVVFixedLengthData || + VT->getVectorKind() == VectorKind::RVVFixedLengthMask) // Adjust the alignment for fixed-length RVV vectors. Align = std::min<unsigned>(64, Width); break; @@ -9420,7 +9421,9 @@ bool ASTContext::areCompatibleVectorTypes(QualType FirstVec, Second->getVectorKind() != VectorKind::SveFixedLengthData && Second->getVectorKind() != VectorKind::SveFixedLengthPredicate && First->getVectorKind() != VectorKind::RVVFixedLengthData && - Second->getVectorKind() != VectorKind::RVVFixedLengthData) + Second->getVectorKind() != VectorKind::RVVFixedLengthData && + First->getVectorKind() != VectorKind::RVVFixedLengthMask && + Second->getVectorKind() != VectorKind::RVVFixedLengthMask) return true; return false; @@ -9526,8 +9529,11 @@ static uint64_t getRVVTypeSize(ASTContext &Context, const BuiltinType *Ty) { ASTContext::BuiltinVectorTypeInfo Info = Context.getBuiltinVectorTypeInfo(Ty); - uint64_t EltSize = Context.getTypeSize(Info.ElementType); - uint64_t MinElts = Info.EC.getKnownMinValue(); + unsigned EltSize = Context.getTypeSize(Info.ElementType); + if (Info.ElementType == Context.BoolTy) + EltSize = 1; + + unsigned MinElts = Info.EC.getKnownMinValue(); return VScale->first * MinElts * EltSize; } @@ -9541,6 +9547,12 @@ bool ASTContext::areCompatibleRVVTypes(QualType FirstType, auto IsValidCast = [this](QualType FirstType, QualType SecondType) { if (const auto *BT = FirstType->getAs<BuiltinType>()) { if (const auto *VT = SecondType->getAs<VectorType>()) { + if (VT->getVectorKind() == VectorKind::RVVFixedLengthMask) { + BuiltinVectorTypeInfo Info = getBuiltinVectorTypeInfo(BT); + return FirstType->isRVVVLSBuiltinType() && + Info.ElementType == BoolTy && + getTypeSize(SecondType) == getRVVTypeSize(*this, BT); + } if (VT->getVectorKind() == VectorKind::RVVFixedLengthData || VT->getVectorKind() == VectorKind::Generic) return FirstType->isRVVVLSBuiltinType() && diff --git a/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp b/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp index f1d07d022b25..edf9b5e2d52b 100644 --- a/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp +++ b/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp @@ -7951,7 +7951,8 @@ public: // Overloaded operator calls to member functions are represented as normal // calls with '*this' as the first argument. const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD); - if (MD && MD->isImplicitObjectMemberFunction()) { + if (MD && + (MD->isImplicitObjectMemberFunction() || (OCE && MD->isStatic()))) { // FIXME: When selecting an implicit conversion for an overloaded // operator delete, we sometimes try to evaluate calls to conversion // operators without a 'this' parameter! @@ -7960,7 +7961,11 @@ public: if (!EvaluateObjectArgument(Info, Args[0], ThisVal)) return false; - This = &ThisVal; + + // If we are calling a static operator, the 'this' argument needs to be + // ignored after being evaluated. + if (MD->isInstance()) + This = &ThisVal; // If this is syntactically a simple assignment using a trivial // assignment operator, start the lifetimes of union members as needed, diff --git a/contrib/llvm-project/clang/lib/AST/ItaniumMangle.cpp b/contrib/llvm-project/clang/lib/AST/ItaniumMangle.cpp index 40b1e086ddd0..688141b30441 100644 --- a/contrib/llvm-project/clang/lib/AST/ItaniumMangle.cpp +++ b/contrib/llvm-project/clang/lib/AST/ItaniumMangle.cpp @@ -3994,7 +3994,8 @@ void CXXNameMangler::mangleAArch64FixedSveVectorType( } void CXXNameMangler::mangleRISCVFixedRVVVectorType(const VectorType *T) { - assert(T->getVectorKind() == VectorKind::RVVFixedLengthData && + assert((T->getVectorKind() == VectorKind::RVVFixedLengthData || + T->getVectorKind() == VectorKind::RVVFixedLengthMask) && "expected fixed-length RVV vector!"); QualType EltType = T->getElementType(); @@ -4009,7 +4010,10 @@ void CXXNameMangler::mangleRISCVFixedRVVVectorType(const VectorType *T) { TypeNameOS << "int8"; break; case BuiltinType::UChar: - TypeNameOS << "uint8"; + if (T->getVectorKind() == VectorKind::RVVFixedLengthData) + TypeNameOS << "uint8"; + else + TypeNameOS << "bool"; break; case BuiltinType::Short: TypeNameOS << "int16"; @@ -4048,12 +4052,16 @@ void CXXNameMangler::mangleRISCVFixedRVVVectorType(const VectorType *T) { auto VScale = getASTContext().getTargetInfo().getVScaleRange( getASTContext().getLangOpts()); unsigned VLen = VScale->first * llvm::RISCV::RVVBitsPerBlock; - TypeNameOS << 'm'; - if (VecSizeInBits >= VLen) - TypeNameOS << (VecSizeInBits / VLen); - else - TypeNameOS << 'f' << (VLen / VecSizeInBits); + if (T->getVectorKind() == VectorKind::RVVFixedLengthData) { + TypeNameOS << 'm'; + if (VecSizeInBits >= VLen) + TypeNameOS << (VecSizeInBits / VLen); + else + TypeNameOS << 'f' << (VLen / VecSizeInBits); + } else { + TypeNameOS << (VLen / VecSizeInBits); + } TypeNameOS << "_t"; Out << "9__RVV_VLSI" << 'u' << TypeNameStr.size() << TypeNameStr << "Lj" @@ -4093,7 +4101,8 @@ void CXXNameMangler::mangleType(const VectorType *T) { T->getVectorKind() == VectorKind::SveFixedLengthPredicate) { mangleAArch64FixedSveVectorType(T); return; - } else if (T->getVectorKind() == VectorKind::RVVFixedLengthData) { + } else if (T->getVectorKind() == VectorKind::RVVFixedLengthData || + T->getVectorKind() == VectorKind::RVVFixedLengthMask) { mangleRISCVFixedRVVVectorType(T); return; } diff --git a/contrib/llvm-project/clang/lib/AST/JSONNodeDumper.cpp b/contrib/llvm-project/clang/lib/AST/JSONNodeDumper.cpp index 3daba13d0fce..3c11b75d7472 100644 --- a/contrib/llvm-project/clang/lib/AST/JSONNodeDumper.cpp +++ b/contrib/llvm-project/clang/lib/AST/JSONNodeDumper.cpp @@ -703,6 +703,9 @@ void JSONNodeDumper::VisitVectorType(const VectorType *VT) { case VectorKind::RVVFixedLengthData: JOS.attribute("vectorKind", "fixed-length rvv data vector"); break; + case VectorKind::RVVFixedLengthMask: + JOS.attribute("vectorKind", "fixed-length rvv mask vector"); + break; } } diff --git a/contrib/llvm-project/clang/lib/AST/ODRHash.cpp b/contrib/llvm-project/clang/lib/AST/ODRHash.cpp index 5b98646a1e8d..2dbc259138a8 100644 --- a/contrib/llvm-project/clang/lib/AST/ODRHash.cpp +++ b/contrib/llvm-project/clang/lib/AST/ODRHash.cpp @@ -745,55 +745,8 @@ void ODRHash::AddEnumDecl(const EnumDecl *Enum) { if (Enum->isScoped()) AddBoolean(Enum->isScopedUsingClassTag()); - if (Enum->getIntegerTypeSourceInfo()) { - // FIMXE: This allows two enums with different spellings to have the same - // hash. - // - // // mod1.cppm - // module; - // extern "C" { - // typedef unsigned __int64 size_t; - // } - // namespace std { - // using :: size_t; - // } - // - // extern "C++" { - // namespace std { - // enum class align_val_t : std::size_t {}; - // } - // } - // - // export module mod1; - // export using std::align_val_t; - // - // // mod2.cppm - // module; - // extern "C" { - // typedef unsigned __int64 size_t; - // } - // - // extern "C++" { - // namespace std { - // enum class align_val_t : size_t {}; - // } - // } - // - // export module mod2; - // import mod1; - // export using std::align_val_t; - // - // The above example should be disallowed since it violates - // [basic.def.odr]p14: - // - // Each such definition shall consist of the same sequence of tokens - // - // The definitions of `std::align_val_t` in two module units have different - // spellings but we failed to give an error here. - // - // See https://github.com/llvm/llvm-project/issues/76638 for details. + if (Enum->getIntegerTypeSourceInfo()) AddQualType(Enum->getIntegerType().getCanonicalType()); - } // Filter out sub-Decls which will not be processed in order to get an // accurate count of Decl's. diff --git a/contrib/llvm-project/clang/lib/AST/TemplateBase.cpp b/contrib/llvm-project/clang/lib/AST/TemplateBase.cpp index 2bdbeb08ef20..3310d7dc24c5 100644 --- a/contrib/llvm-project/clang/lib/AST/TemplateBase.cpp +++ b/contrib/llvm-project/clang/lib/AST/TemplateBase.cpp @@ -450,7 +450,8 @@ bool TemplateArgument::structurallyEquals(const TemplateArgument &Other) const { getAsIntegral() == Other.getAsIntegral(); case StructuralValue: { - if (getStructuralValueType() != Other.getStructuralValueType()) + if (getStructuralValueType().getCanonicalType() != + Other.getStructuralValueType().getCanonicalType()) return false; llvm::FoldingSetNodeID A, B; diff --git a/contrib/llvm-project/clang/lib/AST/TextNodeDumper.cpp b/contrib/llvm-project/clang/lib/AST/TextNodeDumper.cpp index 48c6729a6738..ecf5de0be543 100644 --- a/contrib/llvm-project/clang/lib/AST/TextNodeDumper.cpp +++ b/contrib/llvm-project/clang/lib/AST/TextNodeDumper.cpp @@ -1623,6 +1623,9 @@ void TextNodeDumper::VisitVectorType(const VectorType *T) { case VectorKind::RVVFixedLengthData: OS << " fixed-length rvv data vector"; break; + case VectorKind::RVVFixedLengthMask: + OS << " fixed-length rvv mask vector"; + break; } OS << " " << T->getNumElements(); } diff --git a/contrib/llvm-project/clang/lib/AST/Type.cpp b/contrib/llvm-project/clang/lib/AST/Type.cpp index 3db5ae182f32..d4103025591e 100644 --- a/contrib/llvm-project/clang/lib/AST/Type.cpp +++ b/contrib/llvm-project/clang/lib/AST/Type.cpp @@ -2479,6 +2479,9 @@ bool Type::isRVVVLSBuiltinType() const { IsFP, IsBF) \ case BuiltinType::Id: \ return NF == 1; +#define RVV_PREDICATE_TYPE(Name, Id, SingletonId, NumEls) \ + case BuiltinType::Id: \ + return true; #include "clang/Basic/RISCVVTypes.def" default: return false; @@ -2491,7 +2494,17 @@ QualType Type::getRVVEltType(const ASTContext &Ctx) const { assert(isRVVVLSBuiltinType() && "unsupported type!"); const BuiltinType *BTy = castAs<BuiltinType>(); - return Ctx.getBuiltinVectorTypeInfo(BTy).ElementType; + *** 11829 LINES SKIPPED ***