[clang] [llvm] [RemoveDIs] Print IR with debug records by default (PR #91724)

via cfe-commits cfe-commits at lists.llvm.org
Fri May 10 03:49:08 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-debuginfo

Author: Stephen Tozer (SLTozer)

<details>
<summary>Changes</summary>

This patch makes the final major change of the RemoveDIs project, changing the default IR output from debug intrinsics to debug records.

This is expected to break a large number of tests: every single one that tests for uses or declarations of debug intrinsics and does not explicitly disable writing records. There is also some collateral damage for tests that merely *contains* debug intrinsic declarations and test for attributes, as debug intrinsic declarations will now be deleted when writing debug records which may result in renumbering of other attributes.

### Review guidance

This patch is divided into distinct sections, in the following order and comprising the following commits:

1. NFC manual test updates in preparation for the automated test updates.
    - Pre-script fixups 
2. The functional change of the patch, which enables the printing of debug records by default.
    - Print debug records by default 
3. The automated test updates, which comprise the vast majority of changes in this patch.
    - update_test_checks.py
    - update_cc_test_checks.py 
    - substitute-checks.sh
4. Further manual test updates to fix up test errors that cannot be fixed by (or are caused by) the automated test updates.
    - Manual fixups post-update_test_checks 

My recommendation is to review individual commits rather than the patch as a whole, due to the extreme size of the automated updates. The manual changes made in this patch comprise a diff of size `+48, -45`, roughly 0.7% of the diff size of the complete patch. Instead of reviewing the automated test updates, I would instead recommend reviewing the "Update script details" section below, which explains the automated update process and gives exact steps to reproduce my results.

### Update script details

For the most part, replacing debug intrinsics with debug records is trivial string substitution; replacing FileCheck CHECK lines for debug intrinsics is a slightly more complicated string substitution. For tests that use update_test_checks.py, updating the tests is entirely automatic, but for the many debug info tests that do not use update_test_checks.py I've used a less "smart" approach. The steps to produce the test updates are as follow:

1. Collect the list of failing lit tests into a single file, `failing-tests.txt`, separated by (and ending with) newlines.
2. Use the following line to split the failing tests into tests that use update_test_checks and tests that don't:
    ```
    $ while IFS= read -r f; do grep -q "Assertions have been autogenerated by" "$f" && echo "$f" >> update-checks-tests.txt || echo "$f" >> manual-tests.txt; done < failing-tests.txt
    ```
3. For the tests that use update_test_checks, run the appropriate update_test_checks script - for the updates run here, this was achieved with:
    ```
    $ xargs ./llvm/utils/update_test_checks.py --opt-binary ./build/bin/opt < update-checks-tests.txt
    $ xargs ./llvm/utils/update_cc_test_checks.py --llvm-bin ./build/bin/ < update-checks-tests.txt
    ```
4. For the manual tests, I used a pair of short scripts to perform the updates. The first script is used to fetch the check prefixes in each of the failing tests:
    ```
    $ cat ./get-checks.sh
    #!/bin/bash

    # Always add CHECK, since it's more effort than it's worth to filter files where
    # every RUN line uses other check prefixes.
    # Then detect every instance of "check-prefix(es)=..." and add the
    # comma-separated arguments as extra checks.
    for filename in "$@"
    do
        echo "$filename,CHECK"
        allchecks=$(grep -Eo 'check-prefix(es)?[ =][A-Z0-9_,-]+' $filename | sed -E 's/.+[= ]([A-Z0-9_,-]+).*/\1/g; s/,/\n/g')
        for check in $allchecks; do
            echo "$filename,$check"
        done
    done
    ```
    The second script performs the work of actually updating the check-lines in each of the failing tests, with a series of simple substitution patterns:
    ```
    $ cat ./substitute-checks.sh
    #!/bin/bash

    file="$1"
    check="$2"

    # Any test that explicitly tests debug intrinsic output is not suitable to
    # update by this script.
    if grep -q "write-experimental-debuginfo=false" "$file"; then
        exit 0
    fi

    sed -i -E -e "
    /(#|;|\/\/).*$check[A-Z0-9_\-]*:/!b
    /DIGlobalVariableExpression/b
    /!llvm.dbg./bpostcall
    s/((((((no|must)?tail )?call.*)?void )?@)?llvm.)?dbg\.([a-z]+)/#dbg_\7/
    :postcall
    /declare #dbg_/d
    s/metadata //g
    s/metadata\{/{/g
    s/DIExpression\(([^)]*)\)\)(,( !dbg)?)?/DIExpression(\1),/
    /#dbg_/!b
    s/((\))?(,) )?!dbg (![0-9]+)/\3\4\2/
    s/((\))?(, ))?!dbg/\3/
    " "$file"
    ```
    Both of these scripts combined can be used on the list in `manual-tests.txt` as follows:
    ```
    $ cat manual-tests.txt | xargs ./get-checks.sh | sort | uniq | awk -F ',' '{ system("./substitute-checks.sh " $1 " " $2) }'
    ```
    These scripts deal successfully with the vast majority of checks in `clang/test` and `llvm/test`; more explanation of why I used these scripts appears below.
5. Verify the resulting tests pass, and detect any failing tests:
    ```
    $ xargs ./build/bin/llvm-lit -q < failing-tests.txt
    ********************
    Failed Tests (5):
    LLVM :: DebugInfo/Generic/dbg-value-lower-linenos.ll
    LLVM :: Transforms/HotColdSplit/transfer-debug-info.ll
    LLVM :: Transforms/ObjCARC/basic.ll
    LLVM :: Transforms/ObjCARC/ensure-that-exception-unwind-path-is-visited.ll
    LLVM :: Transforms/SafeStack/X86/debug-loc2.ll


    Total Discovered Tests: 295
    Failed: 5 (1.69%)
    ```
6. Some tests may have failed - the update scripts are deliberately not smart, and so there are cases that they will not handle. These must be manually dealt with.


### What's with the update scripts?

The test scripts above are deliberately simple - they only operate on basic string substitution, for two reasons: the test update step should be a one-time process, so something clever that covers all cases would be wasted effort, and being very simple should give reassurance that nothing magical is happening here. Almost all the error cases result from check-lines which do not obviously apply to a debug intrinsic, and the difficulty of manually fixing up these cases should be fairly low.

### How do I fix test failures?

The simplest way to fix a test failure is to not use the new format; if an immediate fix is needed for some set of tests, then adding the LLVM flag `--write-experimental-debuginfo=false` will force it to write debug intrinsics, preserving prior behaviour. This should only be a temporary fix in most cases though, as we are moving towards deprecating debug intrinsics.

The commits in which I fixed up tests are labelled "Pre-script fixups" and "Post-script fixups" in this review, for examples of changes that were made. The reason these are divided into pre- and post- is that some fixups are trivial text changes to make check-lines intelligible to the sed scripts, and some are changes that are breaking if applied to the debug intrinsic case, so should not apply before the functional change. The pre-script changes are:

- Modifying unusually-structured check-lines to be more standard:
    ```
    -  int l = 0;    // line #<!-- -->4: CHECK: {{call.*llvm.dbg.declare.*%l.*\!dbg }}[[variable_l:![0-9]+]]
    +  int l = 0;    // line #<!-- -->4: CHECK: call void @<!-- -->llvm.dbg.declare({{.*%l.*}}!dbg [[variable_l:![0-9]+]]
    ```
- Changing some over-eager capture patterns:
    ```
    -  // CHECK: call void @<!-- -->llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
    +  // CHECK: call void @<!-- -->llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:![0-9]+]]
    ```
    In the example above, the `LABEL_LOCATION` variable will just capture "!10" in intrinsic form, but will capture "!10)" in record form since the debug loc now appears in a parenthesis-enclosed list.
- Removing certain `!dbg` prefixes:
    ```
    -// CHECK: call {{.*}}, !dbg ![[DBG_LINE:[0-9]+]]
    +// CHECK: call void @<!-- -->llvm.dbg.declare({{.+}}), !dbg ![[DBG_LINE:[0-9]+]]
    ```
    Where `!dbg !<Num>` appears in debug intrinsics, we only see `!<Num>` in debug records; the script handles this in cases where we are clearly operating on a debug intrinsic, but when the debug location check appears on a separate check-line it must be manually updated. In some cases this will require some additional context to be added to the check to ensure that the test is still valid.
- Changes without context:
    ```
    -  ; CHECK-SAME:               DW_OP_LLVM_convert, 32, DW_ATE_unsigned, DW_OP_stack_value))
    +  ; CHECK-SAME:               DW_OP_LLVM_convert, 32, DW_ATE_unsigned, DW_OP_stack_value)
    ```
    Some minor differences, like DIExpressions no longer being the final argument to a debug record, can't be fixed by the script because they appear on a line without the necessary context; these must be updated manually.
- Fixing typos:
    ```
    -; CHECK: all void @<!-- -->llvm.dbg.value(metadata ptr %lsr.iv, metadata ![[MID_p:[0-9]+]],  metadata !DIExpression(DW_OP_constu, 3, DW_OP_minus, DW_OP_stack_value))
    +; CHECK: call void @<!-- -->llvm.dbg.value(metadata ptr %lsr.iv, metadata ![[MID_p:[0-9]+]],  metadata !DIExpression(DW_OP_constu, 3, DW_OP_minus, DW_OP_stack_value))
    ```
- Ensuring that the debug intrinsic format is used where necessary:
    ```
    -; RUN: llvm-dis < %s.bc | FileCheck %s
    +; RUN: llvm-dis < %s.bc --write-experimental-debuginfo=false | FileCheck %s
    ```
    Some tests need to continue using the debug intrinsic format; use `--write-experimental-debuginfo=false` for these cases, and the update script will ignore them.

The post-script changes are generally simpler:

- Update attributes:
    ```
    -; CHECK: attributes #<!-- -->1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
    ```
    Debug intrinsic declarations are being removed, and the resulting attributes may disappear from the output.
- Fix script errors:
    ```
    -; CHECK: call void @<!-- -->llvm.random.metadata.use(ptr undef
    +; CHECK: call void @<!-- -->llvm.random.metadata.use(metadata ptr undef
    ```
    The update script errs on the side of caution, but there are some unusual cases where the patterns it expects to update are over-eager, such as the use of MetadataAsValue in functions other than debug intrinsics.


---

Patch is 2.09 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/91724.diff


343 Files Affected:

- (modified) clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c (+2-2) 
- (modified) clang/test/CodeGen/assignment-tracking/assignment-tracking.cpp (+16-16) 
- (modified) clang/test/CodeGen/assignment-tracking/memcpy-fragment.cpp (+3-3) 
- (modified) clang/test/CodeGen/assignment-tracking/nested-scope.cpp (+1-1) 
- (modified) clang/test/CodeGen/attr-nodebug.c (+1-1) 
- (modified) clang/test/CodeGen/debug-info-block-decl.c (+1-1) 
- (modified) clang/test/CodeGen/debug-info-block-expr.c (+5-5) 
- (modified) clang/test/CodeGen/debug-info-block-vars.c (+4-4) 
- (modified) clang/test/CodeGen/debug-info-matrix-types.c (+2-2) 
- (modified) clang/test/CodeGen/debug-info-vla.c (+2-2) 
- (modified) clang/test/CodeGen/debug-label-inline.c (+1-1) 
- (modified) clang/test/CodeGen/debug-label.c (+1-1) 
- (modified) clang/test/CodeGenCUDA/debug-info-address-class.cu (+2-2) 
- (modified) clang/test/CodeGenCXX/debug-info-inheriting-constructor.cpp (+3-3) 
- (modified) clang/test/CodeGenCXX/debug-info-nrvo.cpp (+4-4) 
- (modified) clang/test/CodeGenCXX/debug-info-range-for-var-names.cpp (+9-9) 
- (modified) clang/test/CodeGenCXX/debug-info-structured-binding-bitfield.cpp (+26-26) 
- (modified) clang/test/CodeGenCXX/debug-info-structured-binding.cpp (+5-5) 
- (modified) clang/test/CodeGenCXX/debug-info.cpp (+1-1) 
- (modified) clang/test/CodeGenCXX/linetable-eh.cpp (+3-3) 
- (modified) clang/test/CodeGenCXX/trivial_abi_debuginfo.cpp (+3-3) 
- (modified) clang/test/CodeGenObjC/2010-02-09-DbgSelf.m (+1-1) 
- (modified) clang/test/CodeGenObjC/debug-info-blocks.m (+3-3) 
- (modified) clang/test/CodeGenObjC/debug-info-nested-blocks.m (+1-1) 
- (modified) clang/test/CodeGenObjC/objc-fixed-enum.m (+4-4) 
- (modified) clang/test/CodeGenObjCXX/property-objects.mm (+2-2) 
- (modified) clang/test/CodeGenOpenCL/amdgpu-debug-info-variable-expression.cl (+13-13) 
- (modified) clang/test/CodeGenSYCL/debug-info-kernel-variables.cpp (+8-8) 
- (modified) clang/test/OpenMP/debug-info-complex-byval.cpp (+10-10) 
- (modified) clang/test/OpenMP/debug-info-openmp-array.cpp (+26-26) 
- (modified) clang/test/OpenMP/debug_private.c (+4-4) 
- (modified) clang/test/OpenMP/debug_task_shared.c (+4-4) 
- (modified) clang/test/OpenMP/debug_threadprivate_copyin.c (+5-5) 
- (modified) clang/test/OpenMP/irbuilder_nested_parallel_for.c (+831-831) 
- (modified) clang/test/OpenMP/nested_loop_codegen.cpp (+179-179) 
- (modified) clang/test/OpenMP/parallel_codegen.cpp (+135-135) 
- (modified) clang/test/OpenMP/target_parallel_debug_codegen.cpp (+335-335) 
- (modified) clang/test/OpenMP/target_parallel_for_debug_codegen.cpp (+456-456) 
- (modified) clang/test/OpenMP/target_parallel_generic_loop_codegen-3.cpp (+456-456) 
- (modified) clang/test/OpenMP/taskgroup_task_reduction_codegen.cpp (+1-1) 
- (modified) clang/test/OpenMP/threadprivate_codegen.cpp (+1896-1896) 
- (modified) llvm/lib/IR/IRPrintingPasses.cpp (+1-1) 
- (modified) llvm/test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll (+1-1) 
- (modified) llvm/test/Assembler/debug-label-bitcode.ll (+1-1) 
- (modified) llvm/test/Bitcode/DIExpression-aggresult.ll (+1-1) 
- (modified) llvm/test/Bitcode/constexpr-to-instr-metadata-2.ll (+2-2) 
- (modified) llvm/test/Bitcode/constexpr-to-instr-metadata.ll (+1-1) 
- (modified) llvm/test/Bitcode/dbg-label-record-bc.ll (+1-1) 
- (modified) llvm/test/Bitcode/upgrade-dbg-addr.ll (+1-1) 
- (modified) llvm/test/Bitcode/upgrade-dbg-value.ll (+3-4) 
- (modified) llvm/test/CodeGen/AArch64/dbg-declare-swift-async.ll (+1-1) 
- (modified) llvm/test/CodeGen/AArch64/stack-tagging-dbg.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-sincos.ll (+11-11) 
- (modified) llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-unoptimized-debug-data.ll (+9-9) 
- (modified) llvm/test/CodeGen/AMDGPU/si-annotate-dbg-info.ll (+5-5) 
- (modified) llvm/test/CodeGen/BPF/preserve-static-offset/load-arr-pai.ll (+1-1) 
- (modified) llvm/test/CodeGen/BPF/preserve-static-offset/load-ptr-pai.ll (+1-1) 
- (modified) llvm/test/CodeGen/BPF/preserve-static-offset/load-struct-pai.ll (+1-1) 
- (modified) llvm/test/CodeGen/BPF/preserve-static-offset/load-union-pai.ll (+1-1) 
- (modified) llvm/test/CodeGen/BPF/preserve-static-offset/store-pai.ll (+1-1) 
- (modified) llvm/test/CodeGen/Generic/MIRDebugify/locations-and-values.mir (+2-2) 
- (modified) llvm/test/CodeGen/Generic/MIRStripDebug/dont-strip-real-debug-info.mir (+2-2) 
- (modified) llvm/test/CodeGen/X86/fast-isel-dbg-value-alloca.ll (+1-1) 
- (modified) llvm/test/CodeGen/X86/pr38763.ll (+3-3) 
- (modified) llvm/test/CodeGen/X86/select-optimize.ll (+28-28) 
- (modified) llvm/test/DebugInfo/AArch64/ir-outliner.ll (+14-10) 
- (modified) llvm/test/DebugInfo/AArch64/select-optimize-trailing-dbg-records.ll (+1-1) 
- (modified) llvm/test/DebugInfo/ARM/hardware-loop-phi-insertion.ll (+1-1) 
- (modified) llvm/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll (+2-2) 
- (modified) llvm/test/DebugInfo/ARM/salvage-debug-info.ll (+1-1) 
- (modified) llvm/test/DebugInfo/ARM/sroa-complex.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/adce/no-delete.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/codegenprepare/sunk-addr.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/hwasan.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/long-double-x87.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/nullptr-declare.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/scalable-vector.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/structured-bindings.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/var-not-alloca-sized.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/vla.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/dse/dse-after-memcpyopt-merge.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/dse/shorten-offset.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/dse/shorten.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/inline/id.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/inline/inline-stores.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/inline/shared-alloca.ll (+3-3) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/inline/use-before-def.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/do-not-remove-redundant-dbg.ll (+3-3) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/memset.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/remove-redundant-dbg.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/sink-store.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/sink.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/store-new-type.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/instcombine/storemerge.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/licm/merge.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/licm/multi-exit.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/loop-deletion/dead-loop.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/loop-vectorize/remove-redundant-dbg.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/mem2reg/phi.ll (+8-8) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/mem2reg/single-block-alloca.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/mem2reg/single-store-alloca.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/mem2reg/store-to-part-of-alloca.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/memcpyopt/merge-stores.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/mldst-motion/diamond.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/optnone.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/roundtrip.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/remove-redundant-fwd-scan-linked.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/remove-redundant.ll (+8-8) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/salvage-value.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/simplifycfg/empty-block.ll (+3-3) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/simplifycfg/speculated-store.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/slp-vectorizer/merge-scalars.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/after-inlining.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/alloca-single-slice.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/arglist.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/fail-fragment.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag-2.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/id.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memcpy.ll (+5-5) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memmove-to-from-same-alloca.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/remove-redundant-dbg.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/rewrite.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/split-pre-fragmented-store-2.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/split-pre-fragmented-store.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/store.ll (+6-6) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/unspecified-var-size.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/user-memcpy.ll (+8-8) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/var-sized-fragment.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-1.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-2.ll (+3-3) 
- (modified) llvm/test/DebugInfo/Generic/assignment-tracking/track-assignments.ll (+20-20) 
- (modified) llvm/test/DebugInfo/Generic/dbg-value-lower-linenos.ll (+10-10) 
- (modified) llvm/test/DebugInfo/Generic/debug_value_list.ll (+4-4) 
- (modified) llvm/test/DebugInfo/Generic/empty-metadata.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/inline-alloca-ordering.ll (+1-2) 
- (modified) llvm/test/DebugInfo/Generic/inline-dbg-values.ll (+10-11) 
- (modified) llvm/test/DebugInfo/Generic/instcombine-replaced-select-with-operand.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/ipsccp-remap-assign-id.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/loop-deletion-inline-var.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-1.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-2.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-3.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/pr40628.ll (+2-2) 
- (modified) llvm/test/DebugInfo/Generic/sroa-larger.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/sroa-samesize.ll (+1-1) 
- (modified) llvm/test/DebugInfo/Generic/volatile-alloca.ll (+3-3) 
- (modified) llvm/test/DebugInfo/X86/LLVM_implicit_pointer.ll (+3-3) 
- (modified) llvm/test/DebugInfo/X86/array2.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/codegenprep-addrsink.ll (+7-7) 
- (modified) llvm/test/DebugInfo/X86/codegenprep-value.ll (+2-2) 
- (modified) llvm/test/DebugInfo/X86/codegenprepare-rollback.ll (+4-4) 
- (modified) llvm/test/DebugInfo/X86/dbg-value-dropped-instcombine.ll (+2-2) 
- (modified) llvm/test/DebugInfo/X86/dead-store-elimination-marks-undef.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/formal_parameter.ll (+3-3) 
- (modified) llvm/test/DebugInfo/X86/instcombine-demanded-bits-salvage.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/instcombine-fold-cast-into-phi.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/instcombine-instrinsics.ll (+2-2) 
- (modified) llvm/test/DebugInfo/X86/licm-undef-dbg-value.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/mem2reg_fp80.ll (+2-2) 
- (modified) llvm/test/DebugInfo/X86/sroa-after-inlining.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/sroasplit-1.ll (+2-2) 
- (modified) llvm/test/DebugInfo/X86/sroasplit-2.ll (+4-4) 
- (modified) llvm/test/DebugInfo/X86/sroasplit-3.ll (+1-1) 
- (modified) llvm/test/DebugInfo/X86/sroasplit-4.ll (+4-4) 
- (modified) llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll (+4-4) 
- (modified) llvm/test/DebugInfo/duplicate_dbgvalue.ll (+1-1) 
- (modified) llvm/test/DebugInfo/instcombine-sink-latest-assignment.ll (+1-1) 
- (modified) llvm/test/DebugInfo/salvage-cast-debug-info.ll (+3-3) 
- (modified) llvm/test/DebugInfo/salvage-duplicate-values.ll (+4-4) 
- (modified) llvm/test/DebugInfo/salvage-gep.ll (+4-4) 
- (modified) llvm/test/DebugInfo/salvage-icmp.ll (+4-4) 
- (modified) llvm/test/DebugInfo/salvage-limit-expr-size.ll (+4-4) 
- (modified) llvm/test/DebugInfo/salvage-nonconst-binop.ll (+2-2) 
- (modified) llvm/test/Instrumentation/AddressSanitizer/debug_info.ll (+2-2) 
- (modified) llvm/test/Instrumentation/AddressSanitizer/local_stack_base.ll (+1-1) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/RISCV/alloca.ll (+84-86) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/alloca-uninteresting.ll (+1-1) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/alloca.ll (+10-12) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/dbg-assign-tag-offset.ll (+2-2) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/dbg-declare-tag-offset.ll (+4-4) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/dbg-value-tag-offset-nopad.ll (+3-3) 
- (modified) llvm/test/Instrumentation/HWAddressSanitizer/dbg-value-tag-offset.ll (+3-3) 
- (modified) llvm/test/Linker/DbgDeclare.ll (+5-5) 
- (modified) llvm/test/Linker/debug-info-use-before-def.ll (+2-2) 
- (modified) llvm/test/Transforms/ADCE/adce-salvage-dbg-value.ll (+2-2) 
- (modified) llvm/test/Transforms/ADCE/debug-info-intrinsic.ll (+1-1) 
- (modified) llvm/test/Transforms/AggressiveInstCombine/AArch64/combine_ignore_debug.ll (+1-1) 
- (modified) llvm/test/Transforms/ArgumentPromotion/pr33641_remove_arg_dbgvalue.ll (+1-1) 
- (modified) llvm/test/Transforms/Attributor/ArgumentPromotion/pr33641_remove_arg_dbgvalue.ll (+2-4) 
- (modified) llvm/test/Transforms/BDCE/basic.ll (+1-1) 
- (modified) llvm/test/Transforms/BDCE/dbg-multipleuses.ll (+1-1) 
- (modified) llvm/test/Transforms/BDCE/pr26587.ll (+1-1) 
- (modified) llvm/test/Transforms/BDCE/pr41925.ll (+7-7) 
- (modified) llvm/test/Transforms/CallSiteSplitting/callsite-split-debug.ll (+14-14) 
- (modified) llvm/test/Transforms/CallSiteSplitting/callsite-split-preserve-debug.ll (+6-7) 
- (modified) llvm/test/Transforms/CodeExtractor/LoopExtractor_alloca.ll (+1-1) 
- (modified) llvm/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll (+2-2) 
- (modified) llvm/test/Transforms/CodeGenPrepare/X86/cttz-ctlz.ll (+2-2) 
- (modified) llvm/test/Transforms/CodeGenPrepare/X86/select.ll (+109-27) 
- (modified) llvm/test/Transforms/CodeGenPrepare/debug-info-on-skipped-selects.ll (+1-2) 
- (modified) llvm/test/Transforms/CodeGenPrepare/sink-shift-and-trunc.ll (+1-1) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug-O2.ll (+1-1) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll (+2-2) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll (+2-2) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll (+14-14) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll (+6-6) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug-spill-dbg.declare.ll (+3-3) 
- (modified) llvm/test/Transforms/Coroutines/coro-debug.ll (+8-8) 
- (modified) llvm/test/Transforms/Coroutines/swift-async-dbg.ll (+8-8) 
- (modified) llvm/test/Transforms/DCE/basic.ll (+6-6) 
- (modified) llvm/test/Transforms/DCE/dbg-value-removal.ll (+15-15) 
- (modified) llvm/test/Transforms/DeadArgElim/2010-04-30-DbgInfo.ll (+11-12) 
- (modified) llvm/test/Transforms/DeadArgElim/dbginfo-preserve-dbgloc.ll (+2-2) 
- (modified) llvm/test/Transforms/DeadArgElim/dbginfo-update-dbgval-local.ll (+2-2) 
- (modified) llvm/test/Transforms/DeadArgElim/dbginfo-update-dbgval.ll (+1-1) 
- (modified) llvm/test/Transforms/DeadStoreElimination/debuginfo.ll (+2-2) 
- (modified) llvm/test/Transforms/EarlyCSE/debug-info-undef.ll (+1-1) 
- (modified) llvm/test/Transforms/EarlyCSE/debuginfo-dce.ll (+1-1) 
- (modified) llvm/test/Transforms/GVN/load-through-select-dbg.ll (+1-1) 
- (modified) llvm/test/Transforms/GlobalOpt/deadglobal-diarglist-use.ll (+1-1) 
- (modified) llvm/test/Transforms/GlobalOpt/localize-constexpr-debuginfo.ll (+1-1) 
- (modified) llvm/test/Transforms/GlobalOpt/shrink-global-to-bool-check-debug.ll (+1-1) 
- (modified) llvm/test/Transforms/HotColdSplit/split-out-dbg-label.ll (+3-3) 
- (modified) llvm/test/Transforms/HotColdSplit/transfer-debug-info.ll (+9-9) 
- (modified) llvm/test/Transforms/IROutliner/legal-debug.ll (+14-10) 
- (modified) llvm/test/Transforms/IndVarSimplify/X86/indvar-debug-value.ll (+2-2) 
- (modified) llvm/test/Transforms/IndVarSimplify/X86/indvar-debug-value2.ll (+2-2) 
- (modified) llvm/test/Transforms/IndVarSimplify/X86/scev-phi-debug-info.ll (+1-1) 
- (modified) llvm/test/Transforms/Inline/alloca-dbgdeclare.ll (+1-1) 
- (modified) llvm/test/Transforms/Inline/inline_dbg_declare.ll (+1-1) 
- (modified) llvm/test/Transforms/Inline/local-as-metadata-undominated-use.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/alloca-cast-debuginfo.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/assume.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/cast-mul-select.ll (+37-37) 
- (modified) llvm/test/Transforms/InstCombine/cast-set-preserve-signed-dbg-val.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/consecutive-fences.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/dbg-scalable-store-fixed-frag.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/dbg-simplify-alloca-size.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo-dce.ll (+9-9) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo-dce2.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo-sink.ll (+13-13) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo-skip.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo-variables.ll (+18-18) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo.ll (+7-7) 
- (modified) llvm/test/Transforms/InstCombine/debuginfo_add.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/erase-dbg-values-at-dead-alloc-site.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/lifetime-no-null-opt.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/lifetime.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/lower-dbg-declare.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/pr43893.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/salvage-dbg-declare.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/sink-instruction-introduces-unnecessary-poison-value.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/stacksave-debuginfo.ll (+5-5) 
- (modified) llvm/test/Transforms/InstCombine/unavailable-debug.ll (+1-1) 
- (modified) llvm/test/Transforms/JumpThreading/guard-split-debuginfo.ll (+2-2) 
- (modified) llvm/test/Transforms/JumpThreading/redundant-dbg-info.ll (+3-3) 
- (modified) llvm/test/Transforms/JumpThreading/thread-debug-info.ll (+9-9) 
- (modified) llvm/test/Transforms/LCSSA/rewrite-existing-dbg-values.ll (+7-7) 


``````````diff
diff --git a/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c b/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c
index 645403284b8b0..e6b7aa0af81b2 100644
--- a/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c
+++ b/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
 // Insure that dbg.declare lines for locals refer to correct line number records.
 void foo(void) {
-  int l = 0;    // line #4: CHECK: {{call.*llvm.dbg.declare.*%l.*\!dbg }}[[variable_l:![0-9]+]]
-  int p = 0;    // line #5: CHECK: {{call.*llvm.dbg.declare.*%p.*\!dbg }}[[variable_p:![0-9]+]]
+  int l = 0;    // line #4: CHECK: #dbg_declare({{.*%l.*}} [[variable_l:![0-9]+]]
+  int p = 0;    // line #5: CHECK: #dbg_declare({{.*%p.*}} [[variable_p:![0-9]+]]
 }
 // Now match the line number records:
 // CHECK: {{^}}[[variable_l]] = !DILocation(line: 4,
diff --git a/clang/test/CodeGen/assignment-tracking/assignment-tracking.cpp b/clang/test/CodeGen/assignment-tracking/assignment-tracking.cpp
index b96ad7ca6fac3..fd5a5b24920ec 100644
--- a/clang/test/CodeGen/assignment-tracking/assignment-tracking.cpp
+++ b/clang/test/CodeGen/assignment-tracking/assignment-tracking.cpp
@@ -20,16 +20,16 @@ Large L;
 void zeroInit() { int Z[3] = {0, 0, 0}; }
 // CHECK-LABEL: define dso_local void @_Z8zeroInitv
 // CHECK:       %Z = alloca [3 x i32], align 4, !DIAssignID ![[ID_0:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_0:[0-9]+]], metadata !DIExpression(), metadata ![[ID_0]], metadata ptr %Z, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_0:[0-9]+]], !DIExpression(), ![[ID_0]], ptr %Z, !DIExpression(),
 // CHECK:        @llvm.memset{{.*}}, !DIAssignID ![[ID_1:[0-9]+]]
-// CHECK-NEXT:   call void @llvm.dbg.assign(metadata i8 0, metadata ![[VAR_0]], metadata !DIExpression(), metadata ![[ID_1]], metadata ptr %Z, metadata !DIExpression())
+// CHECK-NEXT:   #dbg_assign(i8 0, ![[VAR_0]], !DIExpression(), ![[ID_1]], ptr %Z, !DIExpression(),
 
 void memcpyInit() { int A[4] = {0, 1, 2, 3}; }
 // CHECK-LABEL: define dso_local void @_Z10memcpyInitv
 // CHECK:       %A = alloca [4 x i32], align 16, !DIAssignID ![[ID_2:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_1:[0-9]+]], metadata !DIExpression(), metadata ![[ID_2]], metadata ptr %A, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_1:[0-9]+]], !DIExpression(), ![[ID_2]], ptr %A, !DIExpression(),
 // CHECK:        @llvm.memcpy{{.*}}, !DIAssignID ![[ID_3:[0-9]+]]
-// CHECK-NEXT:   call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_1]], metadata !DIExpression(), metadata ![[ID_3]], metadata ptr %A, metadata !DIExpression())
+// CHECK-NEXT:   #dbg_assign(i1 undef, ![[VAR_1]], !DIExpression(), ![[ID_3]], ptr %A, !DIExpression(),
 
 void setField() {
   Outer O;
@@ -37,9 +37,9 @@ void setField() {
 }
 // CHECK-LABEL: define dso_local void @_Z8setFieldv
 // CHECK:       %O = alloca %struct.Outer, align 4, !DIAssignID ![[ID_4:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_2:[0-9]+]], metadata !DIExpression(), metadata ![[ID_4]], metadata ptr %O, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_2:[0-9]+]], !DIExpression(), ![[ID_4]], ptr %O, !DIExpression(),
 // CHECK:       store i32 %0, ptr %B, align 4,{{.*}}!DIAssignID ![[ID_5:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i32 %0, metadata ![[VAR_2]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 32), metadata ![[ID_5]], metadata ptr %B, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i32 %0, ![[VAR_2]], !DIExpression(DW_OP_LLVM_fragment, 32, 32), ![[ID_5]], ptr %B, !DIExpression(),
 
 void unknownOffset() {
   int A[2];
@@ -47,7 +47,7 @@ void unknownOffset() {
 }
 // CHECK-LABEL: define dso_local void @_Z13unknownOffsetv
 // CHECK:       %A = alloca [2 x i32], align 4, !DIAssignID ![[ID_6:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_3:[0-9]+]], metadata !DIExpression(), metadata ![[ID_6]], metadata ptr %A, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_3:[0-9]+]], !DIExpression(), ![[ID_6]], ptr %A, !DIExpression(),
 
 Inner sharedAlloca() {
   if (Cond) {
@@ -60,34 +60,34 @@ Inner sharedAlloca() {
 }
 // CHECK-LABEL: define dso_local i64 @_Z12sharedAllocav
 // CHECK:       %retval = alloca %struct.Inner, align 4, !DIAssignID ![[ID_7:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_4:[0-9]+]], metadata !DIExpression(), metadata ![[ID_7]], metadata ptr %retval, metadata !DIExpression())
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_5:[0-9]+]], metadata !DIExpression(), metadata ![[ID_7]], metadata ptr %retval, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_4:[0-9]+]], !DIExpression(), ![[ID_7]], ptr %retval, !DIExpression(),
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_5:[0-9]+]], !DIExpression(), ![[ID_7]], ptr %retval, !DIExpression(),
 // CHECK:     if.then:
 // CHECK:       call void @llvm.memcpy{{.*}}, !DIAssignID ![[ID_8:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_4]], metadata !DIExpression(), metadata ![[ID_8]], metadata ptr %retval, metadata !DIExpression())
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_5]], metadata !DIExpression(), metadata ![[ID_8]], metadata ptr %retval, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_4]], !DIExpression(), ![[ID_8]], ptr %retval, !DIExpression(),
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_5]], !DIExpression(), ![[ID_8]], ptr %retval, !DIExpression(),
 // CHECK:     if.else:
 // CHECK:       call void @llvm.memcpy{{.*}}, !DIAssignID ![[ID_9:[0-9]+]]
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_4]], metadata !DIExpression(), metadata ![[ID_9]], metadata ptr %retval, metadata !DIExpression())
-// CHECK-NEXT:  call void @llvm.dbg.assign(metadata i1 undef, metadata ![[VAR_5]], metadata !DIExpression(), metadata ![[ID_9]], metadata ptr %retval, metadata !DIExpression())
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_4]], !DIExpression(), ![[ID_9]], ptr %retval, !DIExpression(),
+// CHECK-NEXT:  #dbg_assign(i1 undef, ![[VAR_5]], !DIExpression(), ![[ID_9]], ptr %retval, !DIExpression(),
 
 Large sret() {
   Large X = L;
   return X;
 }
 // CHECK-LABEL: define dso_local void @_Z4sretv
-// CHECK:       llvm.dbg.declare
+// CHECK:       #dbg_declare
 
 void byval(Large X) {}
 // CHECK-LABEL: define dso_local void @_Z5byval5Large
-// CHECK:       llvm.dbg.declare
+// CHECK:       #dbg_declare
 
 LCopyCtor indirectReturn() {
   LCopyCtor R;
   return R;
 }
 // CHECK-LABEL: define dso_local void @_Z14indirectReturnv
-// CHECK:       call void @llvm.dbg.declare
+// CHECK:       #dbg_declare
 
 // CHECK-DAG: ![[VAR_0]] = !DILocalVariable(name: "Z",
 // CHECK-DAG: ![[VAR_1]] = !DILocalVariable(name: "A",
diff --git a/clang/test/CodeGen/assignment-tracking/memcpy-fragment.cpp b/clang/test/CodeGen/assignment-tracking/memcpy-fragment.cpp
index 126bc8f54eb43..85ec68066199d 100644
--- a/clang/test/CodeGen/assignment-tracking/memcpy-fragment.cpp
+++ b/clang/test/CodeGen/assignment-tracking/memcpy-fragment.cpp
@@ -23,7 +23,7 @@ void fragmentWhole()
  __builtin_memcpy(&dest.ch, &src, sizeof(char));
 }
 // CHECK: call void @llvm.memcpy{{.+}}, !DIAssignID ![[memberID:[0-9]+]]
-// CHECK-NEXT: call void @llvm.dbg.assign(metadata{{.*}}undef, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_LLVM_fragment, 32, 8), metadata ![[memberID]], metadata ptr %ch, metadata !DIExpression())
+// CHECK-NEXT: #dbg_assign({{.*}}undef, !{{[0-9]+}}, !DIExpression(DW_OP_LLVM_fragment, 32, 8), ![[memberID]], ptr %ch, !DIExpression(),
 
 // Write starting at a field and overlapping part of another.
 void fragmentWholeToPartial()
@@ -38,7 +38,7 @@ void fragmentWholeToPartial()
  __builtin_memcpy(&dest.num1, &src, 5);
 }
 // CHECK: call void @llvm.memcpy{{.+}}, !DIAssignID ![[exceed:[0-9]+]]
-// CHECK-NEXT: call void @llvm.dbg.assign(metadata{{.*}}undef, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 40), metadata ![[exceed]], metadata ptr %num1, metadata !DIExpression())
+// CHECK-NEXT: #dbg_assign({{.*}}undef, !{{[0-9]+}}, !DIExpression(DW_OP_LLVM_fragment, 0, 40), ![[exceed]], ptr %num1, !DIExpression(),
 
 // Write starting between fields.
 void fragmentPartialToWhole()
@@ -54,4 +54,4 @@ void fragmentPartialToWhole()
  __builtin_memcpy((char*)&(dest.num2) + 3, &src, 5);
 }
 // CHECK: call void @llvm.memcpy{{.+}}, !DIAssignID ![[addendID:[0-9]+]]
-// CHECK-NEXT: call void @llvm.dbg.assign(metadata{{.*}}undef, metadata !{{.*}}, metadata !DIExpression(DW_OP_LLVM_fragment, 56, 40), metadata ![[addendID]], metadata ptr %add.ptr, metadata !DIExpression())
+// CHECK-NEXT: #dbg_assign({{.*}}undef, !{{.*}}, !DIExpression(DW_OP_LLVM_fragment, 56, 40), ![[addendID]], ptr %add.ptr, !DIExpression(),
diff --git a/clang/test/CodeGen/assignment-tracking/nested-scope.cpp b/clang/test/CodeGen/assignment-tracking/nested-scope.cpp
index d94e42a139c1c..7d918821b3e30 100644
--- a/clang/test/CodeGen/assignment-tracking/nested-scope.cpp
+++ b/clang/test/CodeGen/assignment-tracking/nested-scope.cpp
@@ -6,7 +6,7 @@
 // Check that dbg.assign intrinsics get a !dbg with with the same scope as
 // their variable.
 
-// CHECK: call void @llvm.dbg.assign({{.+}}, metadata [[local:![0-9]+]], {{.+}}, {{.+}}, {{.+}}), !dbg [[dbg:![0-9]+]]
+// CHECK: #dbg_assign({{.+}}, [[local:![0-9]+]], {{.+}}, {{.+}}, {{.+}},  [[dbg:![0-9]+]]
 // CHECK-DAG: [[local]] = !DILocalVariable(name: "local", scope: [[scope:![0-9]+]],
 // CHECK-DAG: [[dbg]] = !DILocation({{.+}}, scope: [[scope]])
 // CHECK-DAG: [[scope]] = distinct !DILexicalBlock
diff --git a/clang/test/CodeGen/attr-nodebug.c b/clang/test/CodeGen/attr-nodebug.c
index fde0c912b16dc..75b4089408fcb 100644
--- a/clang/test/CodeGen/attr-nodebug.c
+++ b/clang/test/CodeGen/attr-nodebug.c
@@ -21,7 +21,7 @@ void t2(void)
 
 // Verify those things do occur normally.
 // CHECK-LABEL: @t2
-// CHECK:       call{{.*}}llvm.dbg
+// CHECK:       #dbg_declare
 // CHECK:       !dbg
 // CHECK:       }
 
diff --git a/clang/test/CodeGen/debug-info-block-decl.c b/clang/test/CodeGen/debug-info-block-decl.c
index 8db13c377ede2..6e95ecc54fd5a 100644
--- a/clang/test/CodeGen/debug-info-block-decl.c
+++ b/clang/test/CodeGen/debug-info-block-decl.c
@@ -4,7 +4,7 @@
 // CHECK: define{{.*}}@main()
 // CHECK: store {{.*}}, !dbg ![[ASSIGNMENT:[0-9]+]]
 // CHECK: define {{.*}} @__main_block_invoke
-// CHECK: , !dbg ![[BLOCK_ENTRY:[0-9]+]]
+// CHECK: , ![[BLOCK_ENTRY:[0-9]+]])
 
 int main(void)
 {
diff --git a/clang/test/CodeGen/debug-info-block-expr.c b/clang/test/CodeGen/debug-info-block-expr.c
index 6ca8a826cacfd..712158f271522 100644
--- a/clang/test/CodeGen/debug-info-block-expr.c
+++ b/clang/test/CodeGen/debug-info-block-expr.c
@@ -10,7 +10,7 @@ void noEscapeFunc(__attribute__((noescape)) BlockTy);
 // 'noescape') blocks.
 void test_escape_func(void) {
 // CHECK-LABEL: void @test_escape_func
-// CHECK: call void @llvm.dbg.declare({{.*}}metadata ![[ESCAPE_VAR:[0-9]+]], metadata !DIExpression(DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}){{.*}})
+// CHECK: #dbg_declare({{.*}}![[ESCAPE_VAR:[0-9]+]], !DIExpression(DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}){{.*}})
   __block int escape_var;
 // Blocks in dead code branches still capture __block variables.
 #ifdef DEAD_CODE
@@ -22,7 +22,7 @@ void test_escape_func(void) {
 // Verify that the desired DIExpression are generated for noescape blocks.
 void test_noescape_func(void) {
 // CHECK-LABEL: void @test_noescape_func
-// CHECK: call void @llvm.dbg.declare({{.*}}metadata ![[NOESCAPE_VAR:[0-9]+]], metadata !DIExpression())
+// CHECK: #dbg_declare({{.*}}![[NOESCAPE_VAR:[0-9]+]], !DIExpression(),
   __block int noescape_var;
   noEscapeFunc(^{ (void)noescape_var; });
 }
@@ -30,11 +30,11 @@ void test_noescape_func(void) {
 // Verify that the desired DIExpression are generated for blocks.
 void test_local_block(void) {
 // CHECK-LABEL: void @test_local_block
-// CHECK: call void @llvm.dbg.declare({{.*}}metadata ![[BLOCK_VAR:[0-9]+]], metadata !DIExpression(DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}){{.*}})
+// CHECK: #dbg_declare({{.*}}![[BLOCK_VAR:[0-9]+]], !DIExpression(DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}){{.*}})
   __block int block_var;
 
 // CHECK-LABEL: @__test_local_block_block_invoke
-// CHECK: call void @llvm.dbg.declare({{.*}}!DIExpression(DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}){{.*}})
+// CHECK: #dbg_declare({{.*}}!DIExpression(DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}){{.*}})
   ^ { block_var = 1; }();
 }
 
@@ -42,7 +42,7 @@ void test_local_block(void) {
 // in any block.
 void test_unused(void) {
 // CHECK-LABEL: void @test_unused
-// CHECK: call void @llvm.dbg.declare({{.*}}metadata ![[UNUSED_VAR:[0-9]+]], metadata !DIExpression())
+// CHECK: #dbg_declare({{.*}}![[UNUSED_VAR:[0-9]+]], !DIExpression(),
   __block int unused_var;
 // Use i (not inside a block).
   ++unused_var;
diff --git a/clang/test/CodeGen/debug-info-block-vars.c b/clang/test/CodeGen/debug-info-block-vars.c
index 4e00721470606..90d1d4b42223c 100644
--- a/clang/test/CodeGen/debug-info-block-vars.c
+++ b/clang/test/CodeGen/debug-info-block-vars.c
@@ -8,14 +8,14 @@
 // CHECK: %.block_descriptor.addr = alloca ptr, align 8
 // CHECK: %block.addr = alloca ptr, align 8
 // CHECK: store ptr %.block_descriptor, ptr %.block_descriptor.addr, align 8
-// CHECK: call void @llvm.dbg.declare(metadata ptr %.block_descriptor.addr,
-// CHECK-SAME:                        metadata !DIExpression())
+// CHECK: #dbg_declare(ptr %.block_descriptor.addr,
+// CHECK-SAME:                        !DIExpression(),
 // CHECK-OPT-NOT: alloca
 // Since the block address is not used anywhere in this function,
 // the optimizer (DeadArgElim) has replaced all the false uses
 // (i.e., metadata users) with poison.
-// CHECK-OPT: call void @llvm.dbg.value(metadata ptr poison,
-// CHECK-OPT-SAME:                      metadata !DIExpression())
+// CHECK-OPT: #dbg_value(ptr poison,
+// CHECK-OPT-SAME:                      !DIExpression(),
 void f(void) {
   a(^{
     b();
diff --git a/clang/test/CodeGen/debug-info-matrix-types.c b/clang/test/CodeGen/debug-info-matrix-types.c
index bc0a70a9ec4fa..c16e35e8d33da 100644
--- a/clang/test/CodeGen/debug-info-matrix-types.c
+++ b/clang/test/CodeGen/debug-info-matrix-types.c
@@ -3,8 +3,8 @@
 typedef double dx2x3_t __attribute__((matrix_type(2, 3)));
 
 void load_store_double(dx2x3_t *a, dx2x3_t *b) {
-  // CHECK-DAG:  @llvm.dbg.declare(metadata ptr %a.addr, metadata [[EXPR_A:![0-9]+]]
-  // CHECK-DAG:  @llvm.dbg.declare(metadata ptr %b.addr, metadata [[EXPR_B:![0-9]+]]
+  // CHECK-DAG:  #dbg_declare(ptr %a.addr, [[EXPR_A:![0-9]+]]
+  // CHECK-DAG:  #dbg_declare(ptr %b.addr, [[EXPR_B:![0-9]+]]
   // CHECK: [[PTR_TY:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: [[TYPEDEF:![0-9]+]], size: 64)
   // CHECK: [[TYPEDEF]] = !DIDerivedType(tag: DW_TAG_typedef, name: "dx2x3_t", {{.+}} baseType: [[MATRIX_TY:![0-9]+]])
   // CHECK: [[MATRIX_TY]] = !DICompositeType(tag: DW_TAG_array_type, baseType: [[ELT_TY:![0-9]+]], size: 384, elements: [[ELEMENTS:![0-9]+]])
diff --git a/clang/test/CodeGen/debug-info-vla.c b/clang/test/CodeGen/debug-info-vla.c
index 22b3930dfc88c..e9494111d207f 100644
--- a/clang/test/CodeGen/debug-info-vla.c
+++ b/clang/test/CodeGen/debug-info-vla.c
@@ -2,8 +2,8 @@
 
 void testVLAwithSize(int s)
 {
-// CHECK-DAG: dbg.declare({{.*}} %__vla_expr0, metadata ![[VLAEXPR:[0-9]+]]
-// CHECK-DAG: dbg.declare({{.*}} %vla, metadata ![[VAR:[0-9]+]]
+// CHECK-DAG: #dbg_declare({{.*}} %__vla_expr0, ![[VLAEXPR:[0-9]+]]
+// CHECK-DAG: #dbg_declare({{.*}} %vla, ![[VAR:[0-9]+]]
 // CHECK-DAG: ![[VLAEXPR]] = !DILocalVariable(name: "__vla_expr0", {{.*}} flags: DIFlagArtificial
 // CHECK-DAG: ![[VAR]] = !DILocalVariable(name: "vla",{{.*}} line: [[@LINE+2]]
 // CHECK-DAG: !DISubrange(count: ![[VLAEXPR]])
diff --git a/clang/test/CodeGen/debug-label-inline.c b/clang/test/CodeGen/debug-label-inline.c
index c0b089aad8eb9..972a32b5af32d 100644
--- a/clang/test/CodeGen/debug-label-inline.c
+++ b/clang/test/CodeGen/debug-label-inline.c
@@ -16,7 +16,7 @@ int f2(void) {
   int result;
 
   result = f1(ga, gb);
-  // CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
+  // CHECK: #dbg_label([[LABEL_METADATA:!.*]],  [[LABEL_LOCATION:![0-9]+]]
 
   return result;
 }
diff --git a/clang/test/CodeGen/debug-label.c b/clang/test/CodeGen/debug-label.c
index 179132ecd6f0a..662b1a7dd2062 100644
--- a/clang/test/CodeGen/debug-label.c
+++ b/clang/test/CodeGen/debug-label.c
@@ -7,7 +7,7 @@ int f1(int a, int b) {
   int sum;
 
 top:
-  // CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
+  // CHECK: #dbg_label([[LABEL_METADATA:!.*]],  [[LABEL_LOCATION:![0-9]+]]
   sum = a + b;
   return sum;
 }
diff --git a/clang/test/CodeGenCUDA/debug-info-address-class.cu b/clang/test/CodeGenCUDA/debug-info-address-class.cu
index 5e0f775cbe9e3..876d2de31664a 100644
--- a/clang/test/CodeGenCUDA/debug-info-address-class.cu
+++ b/clang/test/CodeGenCUDA/debug-info-address-class.cu
@@ -14,12 +14,12 @@ __device__ __constant__ int FileVar2;
 
 __device__ void kernel1(
     // CHECK-DAG: ![[ARG:[0-9]+]] = !DILocalVariable(name: "Arg", arg: {{[0-9]+}}, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: !{{[0-9]+}})
-    // CHECK-DAG: call void @llvm.dbg.declare(metadata ptr {{.*}}, metadata ![[ARG]], metadata !DIExpression()), !dbg !{{[0-9]+}}
+    // CHECK-DAG: #dbg_declare(ptr {{.*}}, ![[ARG]], !DIExpression(), !{{[0-9]+}}
     int Arg) {
     // CHECK-DAG: ![[FUNCVAR0:[0-9]+]] = distinct !DIGlobalVariable(name: "FuncVar0", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: !{{[0-9]+}}, isLocal: true, isDefinition: true)
     // CHECK-DAG: !DIGlobalVariableExpression(var: ![[FUNCVAR0]], expr: !DIExpression(DW_OP_constu, 8, DW_OP_swap, DW_OP_xderef))
   __shared__ int FuncVar0;
   // CHECK-DAG: ![[FUNCVAR1:[0-9]+]] = !DILocalVariable(name: "FuncVar1", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: !{{[0-9]+}})
-  // CHECK-DAG: call void @llvm.dbg.declare(metadata ptr {{.*}}, metadata ![[FUNCVAR1]], metadata !DIExpression()), !dbg !{{[0-9]+}}
+  // CHECK-DAG: #dbg_declare(ptr {{.*}}, ![[FUNCVAR1]], !DIExpression(), !{{[0-9]+}}
   int FuncVar1;
 }
diff --git a/clang/test/CodeGenCXX/debug-info-inheriting-constructor.cpp b/clang/test/CodeGenCXX/debug-info-inheriting-constructor.cpp
index 78b99f86ee292..7918387edc79a 100644
--- a/clang/test/CodeGenCXX/debug-info-inheriting-constructor.cpp
+++ b/clang/test/CodeGenCXX/debug-info-inheriting-constructor.cpp
@@ -10,10 +10,10 @@ struct B : A {
 A::A(int i, ...) {}
 // CHECK: define{{.*}} void @{{.*}}foo
 // CHECK-NOT: ret void
-// CHECK: call void @llvm.dbg.declare
+// CHECK: #dbg_declare
 // CHECK-NOT: ret void
-// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[^,]+}},
-// CHECK-SAME: metadata ![[THIS:[0-9]+]], metadata !DIExpression()), !dbg ![[LOC:[0-9]+]]
+// CHECK: #dbg_declare(ptr %{{[^,]+}},
+// CHECK-SAME: ![[THIS:[0-9]+]], !DIExpression(), ![[LOC:[0-9]+]]
 // CHECK: ret void, !dbg ![[NOINL:[0-9]+]]
 // CHECK: ![[FOO:.*]] = distinct !DISubprogram(name: "foo"
 // CHECK-DAG: ![[A:.*]] = distinct !DISubprogram(name: "A", linkageName: "_ZN1BCI11AEiz"
diff --git a/clang/test/CodeGenCXX/debug-info-nrvo.cpp b/clang/test/CodeGenCXX/debug-info-nrvo.cpp
index 6916207b8806a..b36e371910140 100644
--- a/clang/test/CodeGenCXX/debug-info-nrvo.cpp
+++ b/clang/test/CodeGenCXX/debug-info-nrvo.cpp
@@ -27,9 +27,9 @@ int main() {
 // stored in the return register.
 
 // CHECK: %[[RESULT:.*]] = alloca ptr, align 8
-// CHECK: call void @llvm.dbg.declare(metadata ptr %[[RESULT]],
-// CHECK-SAME: metadata !DIExpression(DW_OP_deref)
+// CHECK: #dbg_declare(ptr %[[RESULT]],
+// CHECK-SAME: !DIExpression(DW_...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/91724


More information about the cfe-commits mailing list