Skip to content

Commit d478175

Browse files
Merge branch 'llvm:main' into local-init-ult-alloc
2 parents 4050526 + f01a793 commit d478175

File tree

328 files changed

+4938
-3303
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

328 files changed

+4938
-3303
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ C++ Specific Potentially Breaking Changes
7171
if it's out of range. The Boost numeric_conversion library is impacted by
7272
this; it was fixed in Boost 1.81. (#GH143034)
7373

74+
- Fully implemented `CWG400 Using-declarations and the `
75+
`"struct hack" <https://wg21.link/CWG400>`_. Invalid member using-declaration
76+
whose nested-name-specifier doesn't refer to a base class such as
77+
``using CurrentClass::Foo;`` is now rejected in C++98 mode.
78+
7479
ABI Changes in This Version
7580
---------------------------
7681

@@ -650,6 +655,9 @@ Improvements to Clang's diagnostics
650655
#GH69470, #GH59391, #GH58172, #GH46215, #GH45915, #GH45891, #GH44490,
651656
#GH36703, #GH32903, #GH23312, #GH69874.
652657

658+
- A warning is now emitted when ``main`` is attached to a named module,
659+
which can be turned off with ``-Wno-main-attached-to-named-module``. (#GH146247)
660+
653661
- Clang now avoids issuing `-Wreturn-type` warnings in some cases where
654662
the final statement of a non-void function is a `throw` expression, or
655663
a call to a function that is trivially known to always throw (i.e., its

clang/include/clang/Basic/BuiltinsAMDGPU.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,10 @@ TARGET_BUILTIN(__builtin_amdgcn_ds_load_tr16_b128_v8f16, "V8hV8h*3", "nc", "gfx1
654654
TARGET_BUILTIN(__builtin_amdgcn_ds_load_tr16_b128_v8bf16, "V8yV8y*3", "nc", "gfx1250-insts,wavefrontsize32")
655655

656656
TARGET_BUILTIN(__builtin_amdgcn_s_setprio_inc_wg, "vIs", "n", "setprio-inc-wg-inst")
657+
TARGET_BUILTIN(__builtin_amdgcn_s_monitor_sleep, "vIs", "n", "gfx1250-insts")
657658

659+
TARGET_BUILTIN(__builtin_amdgcn_cvt_f16_fp8, "hiIi", "nc", "gfx1250-insts")
660+
TARGET_BUILTIN(__builtin_amdgcn_cvt_f16_bf8, "hiIi", "nc", "gfx1250-insts")
658661
TARGET_BUILTIN(__builtin_amdgcn_cvt_pk_f16_fp8, "V2hs", "nc", "gfx1250-insts")
659662
TARGET_BUILTIN(__builtin_amdgcn_cvt_pk_f16_bf8, "V2hs", "nc", "gfx1250-insts")
660663

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,6 +1062,10 @@ def err_constexpr_main : Error<
10621062
"'main' is not allowed to be declared %select{constexpr|consteval}0">;
10631063
def err_deleted_main : Error<"'main' is not allowed to be deleted">;
10641064
def err_mainlike_template_decl : Error<"%0 cannot be a template">;
1065+
def warn_main_in_named_module
1066+
: ExtWarn<"'main' should not be attached to a named module; consider "
1067+
"adding C++ language linkage">,
1068+
InGroup<DiagGroup<"main-attached-to-named-module">>;
10651069
def err_main_returns_nonint : Error<"'main' must return 'int'">;
10661070
def ext_main_returns_nonint : ExtWarn<"return type of 'main' is not 'int'">,
10671071
InGroup<MainReturnType>;

clang/include/clang/Basic/arm_neon.td

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -453,28 +453,28 @@ def VSLI_N : WInst<"vsli_n", "...I",
453453
////////////////////////////////////////////////////////////////////////////////
454454
// E.3.14 Loads and stores of a single vector
455455
def VLD1 : WInst<"vld1", ".(c*!)",
456-
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs">;
456+
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
457457
def VLD1_X2 : WInst<"vld1_x2", "2(c*!)",
458-
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">;
458+
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPsmQm">;
459459
def VLD1_X3 : WInst<"vld1_x3", "3(c*!)",
460-
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">;
460+
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPsmQm">;
461461
def VLD1_X4 : WInst<"vld1_x4", "4(c*!)",
462-
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">;
462+
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPsmQm">;
463463
def VLD1_LANE : WInst<"vld1_lane", ".(c*!).I",
464-
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs",
464+
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPsmQm",
465465
[ImmCheck<2, ImmCheckLaneIndex, 1>]>;
466466
def VLD1_DUP : WInst<"vld1_dup", ".(c*!)",
467-
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs">;
467+
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
468468
def VST1 : WInst<"vst1", "v*(.!)",
469-
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs">;
469+
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
470470
def VST1_X2 : WInst<"vst1_x2", "v*(2!)",
471-
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">;
471+
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPsmQm">;
472472
def VST1_X3 : WInst<"vst1_x3", "v*(3!)",
473-
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">;
473+
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPsmQm">;
474474
def VST1_X4 : WInst<"vst1_x4", "v*(4!)",
475-
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">;
475+
"cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPsmQm">;
476476
def VST1_LANE : WInst<"vst1_lane", "v*(.!)I",
477-
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs",
477+
"QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPsmQm",
478478
[ImmCheck<2, ImmCheckLaneIndex, 1>]>;
479479

480480
let ArchGuard = "(__ARM_FP & 2)" in {
@@ -495,29 +495,29 @@ def VST1_LANE_F16 : WInst<"vst1_lane", "v*(.!)I", "hQh",
495495

496496
////////////////////////////////////////////////////////////////////////////////
497497
// E.3.15 Loads and stores of an N-element structure
498-
def VLD2 : WInst<"vld2", "2(c*!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPs">;
499-
def VLD3 : WInst<"vld3", "3(c*!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPs">;
500-
def VLD4 : WInst<"vld4", "4(c*!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPs">;
498+
def VLD2 : WInst<"vld2", "2(c*!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
499+
def VLD3 : WInst<"vld3", "3(c*!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
500+
def VLD4 : WInst<"vld4", "4(c*!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
501501
def VLD2_DUP : WInst<"vld2_dup", "2(c*!)",
502-
"UcUsUiUlcsilfPcPsQcQfQiQlQsQPcQPsQUcQUiQUlQUs">;
502+
"UcUsUiUlcsilfPcPsQcQfQiQlQsQPcQPsQUcQUiQUlQUsmQm">;
503503
def VLD3_DUP : WInst<"vld3_dup", "3(c*!)",
504-
"UcUsUiUlcsilfPcPsQcQfQiQlQsQPcQPsQUcQUiQUlQUs">;
504+
"UcUsUiUlcsilfPcPsQcQfQiQlQsQPcQPsQUcQUiQUlQUsmQm">;
505505
def VLD4_DUP : WInst<"vld4_dup", "4(c*!)",
506-
"UcUsUiUlcsilfPcPsQcQfQiQlQsQPcQPsQUcQUiQUlQUs">;
507-
def VLD2_LANE : WInst<"vld2_lane", "2(c*!)2I", "QUsQUiQsQiQfQPsUcUsUicsifPcPs",
506+
"UcUsUiUlcsilfPcPsQcQfQiQlQsQPcQPsQUcQUiQUlQUsmQm">;
507+
def VLD2_LANE : WInst<"vld2_lane", "2(c*!)2I", "QUsQUiQsQiQfQPsUcUsUicsifPcPsmQm",
508508
[ImmCheck<4, ImmCheckLaneIndex, 1>]>;
509-
def VLD3_LANE : WInst<"vld3_lane", "3(c*!)3I", "QUsQUiQsQiQfQPsUcUsUicsifPcPs",
509+
def VLD3_LANE : WInst<"vld3_lane", "3(c*!)3I", "QUsQUiQsQiQfQPsUcUsUicsifPcPsmQm",
510510
[ImmCheck<5, ImmCheckLaneIndex, 1>]>;
511-
def VLD4_LANE : WInst<"vld4_lane", "4(c*!)4I", "QUsQUiQsQiQfQPsUcUsUicsifPcPs",
511+
def VLD4_LANE : WInst<"vld4_lane", "4(c*!)4I", "QUsQUiQsQiQfQPsUcUsUicsifPcPsmQm",
512512
[ImmCheck<6, ImmCheckLaneIndex, 1>]>;
513-
def VST2 : WInst<"vst2", "v*(2!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPs">;
514-
def VST3 : WInst<"vst3", "v*(3!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPs">;
515-
def VST4 : WInst<"vst4", "v*(4!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPs">;
516-
def VST2_LANE : WInst<"vst2_lane", "v*(2!)I", "QUsQUiQsQiQfQPsUcUsUicsifPcPs",
513+
def VST2 : WInst<"vst2", "v*(2!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
514+
def VST3 : WInst<"vst3", "v*(3!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
515+
def VST4 : WInst<"vst4", "v*(4!)", "QUcQUsQUiQcQsQiQfQPcQPsUcUsUiUlcsilfPcPsmQm">;
516+
def VST2_LANE : WInst<"vst2_lane", "v*(2!)I", "QUsQUiQsQiQfQPsUcUsUicsifPcPsmQm",
517517
[ImmCheck<3, ImmCheckLaneIndex, 1>]>;
518-
def VST3_LANE : WInst<"vst3_lane", "v*(3!)I", "QUsQUiQsQiQfQPsUcUsUicsifPcPs",
518+
def VST3_LANE : WInst<"vst3_lane", "v*(3!)I", "QUsQUiQsQiQfQPsUcUsUicsifPcPsmQm",
519519
[ImmCheck<4, ImmCheckLaneIndex, 1>]>;
520-
def VST4_LANE : WInst<"vst4_lane", "v*(4!)I", "QUsQUiQsQiQfQPsUcUsUicsifPcPs",
520+
def VST4_LANE : WInst<"vst4_lane", "v*(4!)I", "QUsQUiQsQiQfQPsUcUsUicsifPcPsmQm",
521521
[ImmCheck<5, ImmCheckLaneIndex, 1>]>;
522522
let ArchGuard = "(__ARM_FP & 2)" in {
523523
def VLD2_F16 : WInst<"vld2", "2(c*!)", "hQh">;
@@ -2194,4 +2194,4 @@ let ArchGuard = "defined(__aarch64__)", TargetGuard = "fp8,neon" in {
21942194
// fscale
21952195
def FSCALE_V128 : WInst<"vscale", "..(.S)", "QdQfQh">;
21962196
def FSCALE_V64 : WInst<"vscale", "(.q)(.q)(.qS)", "fh">;
2197-
}
2197+
}

clang/include/clang/Basic/arm_sve.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def SVLD1UW_GATHER_INDEX_S : MInst<"svld1uw_gather[_{2}base]_index_{d}", "dPul
121121

122122

123123
// First-faulting load one vector (scalar base)
124-
def SVLDFF1 : MInst<"svldff1[_{2}]", "dPc", "csilUcUsUiUlhfd", [IsLoad], MemEltTyDefault, "aarch64_sve_ldff1">;
124+
def SVLDFF1 : MInst<"svldff1[_{2}]", "dPc", "csilUcUsUiUlhfdm", [IsLoad], MemEltTyDefault, "aarch64_sve_ldff1">;
125125
def SVLDFF1SB : MInst<"svldff1sb_{d}", "dPS", "silUsUiUl", [IsLoad], MemEltTyInt8, "aarch64_sve_ldff1">;
126126
def SVLDFF1UB : MInst<"svldff1ub_{d}", "dPW", "silUsUiUl", [IsLoad, IsZExtReturn], MemEltTyInt8, "aarch64_sve_ldff1">;
127127
def SVLDFF1SH : MInst<"svldff1sh_{d}", "dPT", "ilUiUl", [IsLoad], MemEltTyInt16, "aarch64_sve_ldff1">;
@@ -130,7 +130,7 @@ def SVLDFF1SW : MInst<"svldff1sw_{d}", "dPU", "lUl", [IsLoad],
130130
def SVLDFF1UW : MInst<"svldff1uw_{d}", "dPY", "lUl", [IsLoad, IsZExtReturn], MemEltTyInt32, "aarch64_sve_ldff1">;
131131

132132
// First-faulting load one vector (scalar base, VL displacement)
133-
def SVLDFF1_VNUM : MInst<"svldff1_vnum[_{2}]", "dPcl", "csilUcUsUiUlhfd", [IsLoad], MemEltTyDefault, "aarch64_sve_ldff1">;
133+
def SVLDFF1_VNUM : MInst<"svldff1_vnum[_{2}]", "dPcl", "csilUcUsUiUlhfdm", [IsLoad], MemEltTyDefault, "aarch64_sve_ldff1">;
134134
def SVLDFF1SB_VNUM : MInst<"svldff1sb_vnum_{d}", "dPSl", "silUsUiUl", [IsLoad], MemEltTyInt8, "aarch64_sve_ldff1">;
135135
def SVLDFF1UB_VNUM : MInst<"svldff1ub_vnum_{d}", "dPWl", "silUsUiUl", [IsLoad, IsZExtReturn], MemEltTyInt8, "aarch64_sve_ldff1">;
136136
def SVLDFF1SH_VNUM : MInst<"svldff1sh_vnum_{d}", "dPTl", "ilUiUl", [IsLoad], MemEltTyInt16, "aarch64_sve_ldff1">;
@@ -223,7 +223,7 @@ def SVLDFF1SW_GATHER_INDEX_S : MInst<"svldff1sw_gather[_{2}base]_index_{d}", "dP
223223
def SVLDFF1UW_GATHER_INDEX_S : MInst<"svldff1uw_gather[_{2}base]_index_{d}", "dPul", "lUl", [IsGatherLoad, IsZExtReturn], MemEltTyInt32, "aarch64_sve_ldff1_gather_scalar_offset">;
224224

225225
// Non-faulting load one vector (scalar base)
226-
def SVLDNF1 : MInst<"svldnf1[_{2}]", "dPc", "csilUcUsUiUlhfd", [IsLoad], MemEltTyDefault, "aarch64_sve_ldnf1">;
226+
def SVLDNF1 : MInst<"svldnf1[_{2}]", "dPc", "csilUcUsUiUlhfdm", [IsLoad], MemEltTyDefault, "aarch64_sve_ldnf1">;
227227
def SVLDNF1SB : MInst<"svldnf1sb_{d}", "dPS", "silUsUiUl", [IsLoad], MemEltTyInt8, "aarch64_sve_ldnf1">;
228228
def SVLDNF1UB : MInst<"svldnf1ub_{d}", "dPW", "silUsUiUl", [IsLoad, IsZExtReturn], MemEltTyInt8, "aarch64_sve_ldnf1">;
229229
def SVLDNF1SH : MInst<"svldnf1sh_{d}", "dPT", "ilUiUl", [IsLoad], MemEltTyInt16, "aarch64_sve_ldnf1">;
@@ -232,7 +232,7 @@ def SVLDNF1SW : MInst<"svldnf1sw_{d}", "dPU", "lUl", [IsLoad],
232232
def SVLDNF1UW : MInst<"svldnf1uw_{d}", "dPY", "lUl", [IsLoad, IsZExtReturn], MemEltTyInt32, "aarch64_sve_ldnf1">;
233233

234234
// Non-faulting load one vector (scalar base, VL displacement)
235-
def SVLDNF1_VNUM : MInst<"svldnf1_vnum[_{2}]", "dPcl", "csilUcUsUiUlhfd", [IsLoad], MemEltTyDefault, "aarch64_sve_ldnf1">;
235+
def SVLDNF1_VNUM : MInst<"svldnf1_vnum[_{2}]", "dPcl", "csilUcUsUiUlhfdm", [IsLoad], MemEltTyDefault, "aarch64_sve_ldnf1">;
236236
def SVLDNF1SB_VNUM : MInst<"svldnf1sb_vnum_{d}", "dPSl", "silUsUiUl", [IsLoad], MemEltTyInt8, "aarch64_sve_ldnf1">;
237237
def SVLDNF1UB_VNUM : MInst<"svldnf1ub_vnum_{d}", "dPWl", "silUsUiUl", [IsLoad, IsZExtReturn], MemEltTyInt8, "aarch64_sve_ldnf1">;
238238
def SVLDNF1SH_VNUM : MInst<"svldnf1sh_vnum_{d}", "dPTl", "ilUiUl", [IsLoad], MemEltTyInt16, "aarch64_sve_ldnf1">;
@@ -258,7 +258,7 @@ let SVETargetGuard = "sve,bf16", SMETargetGuard = "sme,bf16" in {
258258
}
259259

260260
// Load one quadword and replicate (scalar base)
261-
def SVLD1RQ : SInst<"svld1rq[_{2}]", "dPc", "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_ld1rq", [VerifyRuntimeMode]>;
261+
def SVLD1RQ : SInst<"svld1rq[_{2}]", "dPc", "csilUcUsUiUlhfdm", MergeNone, "aarch64_sve_ld1rq", [VerifyRuntimeMode]>;
262262

263263
let SVETargetGuard = "sve,bf16", SMETargetGuard = "sme,bf16" in {
264264
def SVLD1RQ_BF : SInst<"svld1rq[_{2}]", "dPc", "b", MergeNone, "aarch64_sve_ld1rq", [VerifyRuntimeMode]>;
@@ -283,7 +283,7 @@ defm SVLD4_VNUM : StructLoad<"svld4_vnum[_{2}]", "4Pcl", "aarch64_sve_ld4_sret">
283283

284284
// Load one octoword and replicate (scalar base)
285285
let SVETargetGuard = "sve,f64mm", SMETargetGuard = InvalidMode in {
286-
def SVLD1RO : SInst<"svld1ro[_{2}]", "dPc", "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_ld1ro">;
286+
def SVLD1RO : SInst<"svld1ro[_{2}]", "dPc", "csilUcUsUiUlhfdm", MergeNone, "aarch64_sve_ld1ro">;
287287
}
288288
let SVETargetGuard = "sve,f64mm,bf16", SMETargetGuard = InvalidMode in {
289289
def SVLD1RO_BF16 : SInst<"svld1ro[_{2}]", "dPc", "b", MergeNone, "aarch64_sve_ld1ro">;

clang/include/clang/Basic/riscv_vector_common.td

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -591,11 +591,8 @@ class RVVMaskOp0Builtin<string prototype> : RVVOp0Builtin<"m", prototype, "c"> {
591591
let UnMaskedPolicyScheme = HasPolicyOperand,
592592
HasMaskedOffOperand = false in {
593593
multiclass RVVSlideUpBuiltinSet {
594-
defm "" : RVVOutBuiltinSet<NAME, "csilfd",
594+
defm "" : RVVOutBuiltinSet<NAME, "csilxfd",
595595
[["vx","v", "vvvz"]]>;
596-
let RequiredFeatures = ["zvfhmin"] in
597-
defm "" : RVVOutBuiltinSet<NAME, "x",
598-
[["vx","v", "vvvz"]]>;
599596
defm "" : RVVOutBuiltinSet<NAME, "csil",
600597
[["vx","Uv", "UvUvUvz"]]>;
601598
}
@@ -616,11 +613,8 @@ let UnMaskedPolicyScheme = HasPassthruOperand,
616613
IntrinsicTypes = {ResultType, Ops.back()->getType()};
617614
}] in {
618615
multiclass RVVSlideDownBuiltinSet {
619-
defm "" : RVVOutBuiltinSet<NAME, "csilfd",
616+
defm "" : RVVOutBuiltinSet<NAME, "csilxfd",
620617
[["vx","v", "vvz"]]>;
621-
let RequiredFeatures = ["zvfhmin"] in
622-
defm "" : RVVOutBuiltinSet<NAME, "x",
623-
[["vx","v", "vvz"]]>;
624618
defm "" : RVVOutBuiltinSet<NAME, "csil",
625619
[["vx","Uv", "UvUvz"]]>;
626620
}

clang/include/clang/Driver/CommonArgs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ void AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs,
3131
const llvm::opt::ArgList &Args,
3232
llvm::opt::ArgStringList &CmdArgs, const JobAction &JA);
3333

34+
const char *getLDMOption(const llvm::Triple &T, const llvm::opt::ArgList &Args);
35+
3436
void addLinkerCompressDebugSectionsOption(const ToolChain &TC,
3537
const llvm::opt::ArgList &Args,
3638
llvm::opt::ArgStringList &CmdArgs);

clang/lib/AST/ByteCode/FunctionPointer.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ void FunctionPointer::print(llvm::raw_ostream &OS) const {
2727
OS << "FnPtr(";
2828
if (Func)
2929
OS << Func->getName();
30-
else if (Func)
31-
OS << reinterpret_cast<uintptr_t>(Func);
3230
else
3331
OS << "nullptr";
3432
OS << ")";

clang/lib/CodeGen/CGClass.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ static void EmitMemberInitializer(CodeGenFunction &CGF,
627627
CXXCtorInitializer *MemberInit,
628628
const CXXConstructorDecl *Constructor,
629629
FunctionArgList &Args) {
630+
ApplyAtomGroup Grp(CGF.getDebugInfo());
630631
ApplyDebugLocation Loc(CGF, MemberInit->getSourceLocation());
631632
assert(MemberInit->isAnyMemberInitializer() &&
632633
"Must have member initializer!");
@@ -1000,7 +1001,8 @@ namespace {
10001001
void emitMemcpyIR(Address DestPtr, Address SrcPtr, CharUnits Size) {
10011002
DestPtr = DestPtr.withElementType(CGF.Int8Ty);
10021003
SrcPtr = SrcPtr.withElementType(CGF.Int8Ty);
1003-
CGF.Builder.CreateMemCpy(DestPtr, SrcPtr, Size.getQuantity());
1004+
auto *I = CGF.Builder.CreateMemCpy(DestPtr, SrcPtr, Size.getQuantity());
1005+
CGF.addInstToCurrentSourceAtom(I, nullptr);
10041006
}
10051007

10061008
void addInitialField(FieldDecl *F) {
@@ -1113,6 +1115,7 @@ namespace {
11131115
}
11141116

11151117
pushEHDestructors();
1118+
ApplyAtomGroup Grp(CGF.getDebugInfo());
11161119
emitMemcpy();
11171120
AggregatedInits.clear();
11181121
}
@@ -1248,6 +1251,7 @@ namespace {
12481251
reset();
12491252
}
12501253

1254+
ApplyAtomGroup Grp(CGF.getDebugInfo());
12511255
emitMemcpy();
12521256
AggregatedStmts.clear();
12531257
}
@@ -1338,9 +1342,9 @@ void CodeGenFunction::EmitCtorPrologue(const CXXConstructorDecl *CD,
13381342
assert(!Member->isBaseInitializer());
13391343
assert(Member->isAnyMemberInitializer() &&
13401344
"Delegating initializer on non-delegating constructor");
1341-
ApplyAtomGroup Grp(getDebugInfo());
13421345
CM.addMemberInitializer(Member);
13431346
}
1347+
13441348
CM.finish();
13451349
}
13461350

@@ -1563,6 +1567,7 @@ void CodeGenFunction::emitImplicitAssignmentOperatorBody(FunctionArgList &Args)
15631567
AssignmentMemcpyizer AM(*this, AssignOp, Args);
15641568
for (auto *I : RootCS->body())
15651569
AM.emitAssignment(I);
1570+
15661571
AM.finish();
15671572
}
15681573

clang/lib/CodeGen/CGDebugInfo.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,7 +1904,9 @@ CGDebugInfo::createInlinedSubprogram(StringRef FuncName,
19041904
/*ScopeLine=*/0,
19051905
/*Flags=*/llvm::DINode::FlagArtificial,
19061906
/*SPFlags=*/llvm::DISubprogram::SPFlagDefinition,
1907-
/*TParams=*/nullptr, /*ThrownTypes=*/nullptr, /*Annotations=*/nullptr);
1907+
/*TParams=*/nullptr, /*Decl=*/nullptr, /*ThrownTypes=*/nullptr,
1908+
/*Annotations=*/nullptr, /*TargetFuncName=*/StringRef(),
1909+
/*UseKeyInstructions=*/CGM.getCodeGenOpts().DebugKeyInstructions);
19081910
}
19091911

19101912
return SP;
@@ -2284,7 +2286,8 @@ llvm::DISubprogram *CGDebugInfo::CreateCXXMemberFunction(
22842286
llvm::DISubprogram *SP = DBuilder.createMethod(
22852287
RecordTy, MethodName, MethodLinkageName, MethodDefUnit, MethodLine,
22862288
MethodTy, VIndex, ThisAdjustment, ContainingType, Flags, SPFlags,
2287-
TParamsArray.get());
2289+
TParamsArray.get(), /*ThrownTypes*/ nullptr,
2290+
CGM.getCodeGenOpts().DebugKeyInstructions);
22882291

22892292
SPCache[Method->getCanonicalDecl()].reset(SP);
22902293

@@ -4350,7 +4353,9 @@ llvm::DISubprogram *CGDebugInfo::getFunctionFwdDeclOrStub(GlobalDecl GD,
43504353
return DBuilder.createFunction(
43514354
DContext, Name, LinkageName, Unit, Line,
43524355
getOrCreateFunctionType(GD.getDecl(), FnType, Unit), 0, Flags, SPFlags,
4353-
TParamsArray.get(), getFunctionDeclaration(FD));
4356+
TParamsArray.get(), getFunctionDeclaration(FD), /*ThrownTypes*/ nullptr,
4357+
/*Annotations*/ nullptr, /*TargetFuncName*/ "",
4358+
CGM.getCodeGenOpts().DebugKeyInstructions);
43544359
}
43554360

43564361
llvm::DISubprogram *SP = DBuilder.createTempFunctionFwdDecl(
@@ -4686,8 +4691,9 @@ void CGDebugInfo::emitFunctionStart(GlobalDecl GD, SourceLocation Loc,
46864691
llvm::DISubprogram *SP = DBuilder.createFunction(
46874692
FDContext, Name, LinkageName, Unit, LineNo, DIFnType, ScopeLine,
46884693
FlagsForDef, SPFlagsForDef, TParamsArray.get(), Decl, nullptr,
4689-
Annotations);
4694+
Annotations, "", CGM.getCodeGenOpts().DebugKeyInstructions);
46904695
Fn->setSubprogram(SP);
4696+
46914697
// We might get here with a VarDecl in the case we're generating
46924698
// code for the initialization of globals. Do not record these decls
46934699
// as they will overwrite the actual VarDecl Decl in the cache.
@@ -4746,9 +4752,12 @@ void CGDebugInfo::EmitFunctionDecl(GlobalDecl GD, SourceLocation Loc,
47464752

47474753
llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);
47484754
llvm::DISubroutineType *STy = getOrCreateFunctionType(D, FnType, Unit);
4755+
// Key Instructions: Don't set flag on declarations.
4756+
assert(~SPFlags & llvm::DISubprogram::SPFlagDefinition);
47494757
llvm::DISubprogram *SP = DBuilder.createFunction(
47504758
FDContext, Name, LinkageName, Unit, LineNo, STy, ScopeLine, Flags,
4751-
SPFlags, TParamsArray.get(), nullptr, nullptr, Annotations);
4759+
SPFlags, TParamsArray.get(), nullptr, nullptr, Annotations,
4760+
/*TargetFunctionName*/ "", /*UseKeyInstructions*/ false);
47524761

47534762
// Preserve btf_decl_tag attributes for parameters of extern functions
47544763
// for BPF target. The parameters created in this loop are attached as

0 commit comments

Comments
 (0)