-
Notifications
You must be signed in to change notification settings - Fork 15k
Open
Labels
Description
The bytecode roundtrip for attributes aliases that contain a distinct attribute fails. The problem is related to the serialization / deserialization of attribute aliases and was likely solved by the following PR:
#151267
However, the PR was reverted due to another issue.
Reproducer:
➜ build git:(main) ./bin/mlir-opt ../mlir/test/Dialect/LLVMIR/debuginfo.mlir --verify-roundtrip
../mlir/test/Dialect/LLVMIR/debuginfo.mlir:0:0: error: 'builtin.module' op bytecode roundTrip testing roundtripped module differs from reference:
<<<<<<Reference
#di_basic_type = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>
#di_basic_type1 = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">
#di_composite_type = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array0", line = 10, sizeInBits = 128, alignInBits = 32>
#di_derived_type = #llvm.di_derived_type<tag = DW_TAG_pointer_type, name = "ptr1">
#di_file = #llvm.di_file<"debuginfo.mlir" in "/test/">
#di_namespace = #llvm.di_namespace<name = "toplevel", exportSymbols = true>
#di_null_type = #llvm.di_null_type
#di_subroutine_type = #llvm.di_subroutine_type<callingConvention = DW_CC_normal>
#loc3 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":203:17)
#loc9 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:18)
#loc10 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:30)
#loc11 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:42)
#di_composite_type1 = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array1", file = #di_file, scope = #di_file, baseType = #di_basic_type1, allocated = <[DW_OP_push_object_address, DW_OP_deref]>, elements = #llvm.di_subrange<count = 4 : i64>>
#di_composite_type2 = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "expr_elements2", baseType = #di_basic_type1, elements = #llvm.di_generic_subrange<count = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(16), DW_OP_deref]>, lowerBound = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(24), DW_OP_deref]>, stride = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(32), DW_OP_deref]>>>
#di_derived_type1 = #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #di_basic_type1, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, extraData = #di_basic_type>
#di_derived_type2 = #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #di_basic_type1, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, dwarfAddressSpace = 3, extraData = #di_basic_type>
#di_module = #llvm.di_module<file = #di_file, scope = #di_file, name = "module", configMacros = "bar", includePath = "/", apinotes = "/", line = 42, isDecl = true>
#di_namespace1 = #llvm.di_namespace<name = "nested", scope = #di_namespace, exportSymbols = false>
#di_namespace2 = #llvm.di_namespace<scope = #di_file, exportSymbols = false>
#di_subroutine_type1 = #llvm.di_subroutine_type<types = #di_basic_type, #di_basic_type>
#di_composite_type3 = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = #di_file, scope = #di_namespace1, flags = "TypePassByReference|NonTrivial">
#di_subprogram = #llvm.di_subprogram<compileUnit = <id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = #di_file, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #di_module, name = "value", file = #di_file, subprogramFlags = Definition, type = #di_subroutine_type, annotations = #llvm.di_annotation<name = "foo", value = "bar">>
#di_subprogram1 = #llvm.di_subprogram<scope = #di_derived_type2, file = #di_file, type = #di_subroutine_type1>
#di_lexical_block = #llvm.di_lexical_block<scope = #di_subprogram>
#di_lexical_block1 = #llvm.di_lexical_block<scope = #di_subprogram1>
#di_subprogram2 = #llvm.di_subprogram<scope = #di_composite_type3, file = #di_file, type = #di_subroutine_type1>
#di_subroutine_type2 = #llvm.di_subroutine_type<callingConvention = DW_CC_normal, types = #di_null_type, #di_basic_type1, #di_derived_type1, #di_derived_type, #di_derived_type2, #di_composite_type, #di_composite_type1, #di_composite_type3, #di_composite_type2>
#di_common_block = #llvm.di_common_block<scope = #di_subprogram2, name = "block", file = #di_file, line = 3>
#di_label = #llvm.di_label<scope = #di_lexical_block>
#di_lexical_block2 = #llvm.di_lexical_block<scope = #di_subprogram2>
#di_local_variable = #llvm.di_local_variable<scope = #di_lexical_block, name = "arg2">
#di_local_variable1 = #llvm.di_local_variable<scope = #di_lexical_block1, name = "arg3">
#di_subprogram3 = #llvm.di_subprogram<compileUnit = <id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = #di_file, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #di_namespace2, name = "addr", linkageName = "addr", file = #di_file, line = 3, scopeLine = 3, subprogramFlags = "Definition|Optimized", type = #di_subroutine_type2>
#di_global_variable = #llvm.di_global_variable<scope = #di_common_block, name = "a", file = #di_file, line = 2, type = #di_basic_type1>
#di_global_variable1 = #llvm.di_global_variable<scope = #di_common_block, name = "b", file = #di_file, line = 3, type = #di_basic_type1>
#di_label1 = #llvm.di_label<scope = #di_lexical_block2, name = "label", file = #di_file, line = 42>
#di_lexical_block3 = #llvm.di_lexical_block<scope = #di_subprogram3, line = 1, column = 2>
#di_local_variable2 = #llvm.di_local_variable<scope = #di_lexical_block2, name = "arg1">
#di_global_variable_expression = #llvm.di_global_variable_expression<var = #di_global_variable, expr = <>>
#di_global_variable_expression1 = #llvm.di_global_variable_expression<var = #di_global_variable1, expr = <>>
#di_local_variable3 = #llvm.di_local_variable<scope = #di_lexical_block3, name = "alloc", file = #di_file, line = 6, arg = 1, alignInBits = 32, type = #di_basic_type1>
"builtin.module"() ({
"llvm.mlir.global"() <{addr_space = 0 : i32, dbg_exprs = [#di_global_variable_expression, #di_global_variable_expression1], global_type = i64, linkage = #llvm.linkage<external>, sym_name = "data", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
}) : () -> () loc(#loc1)
"llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<void (i64)>, linkage = #llvm.linkage<external>, sym_name = "addr", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
^bb0(%arg3: i64 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":203:17)):
%0 = "llvm.mlir.constant"() <{value = 1 : i32}> : () -> i32 loc(#loc4)
%1 = "llvm.alloca"(%0) <{elem_type = i64}> : (i32) -> !llvm.ptr loc(#loc5)
"llvm.intr.dbg.declare"(%1) <{locationExpr = #llvm.di_expression<>, varInfo = #di_local_variable3}> : (!llvm.ptr) -> () loc(#loc6)
"llvm.return"() : () -> () loc(#loc7)
}) : () -> () loc(#loc2)
"llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<void (i32, i32, i32)>, linkage = #llvm.linkage<external>, sym_name = "value", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
^bb0(%arg0: i32 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:18), %arg1: i32 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:30), %arg2: i32 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:42)):
"llvm.intr.dbg.value"(%arg0) <{locationExpr = #llvm.di_expression<[DW_OP_LLVM_fragment(16, 8), DW_OP_plus_uconst(2), DW_OP_deref]>, varInfo = #di_local_variable2}> : (i32) -> () loc(#loc12)
"llvm.intr.dbg.value"(%arg1) <{locationExpr = #llvm.di_expression<>, varInfo = #di_local_variable}> : (i32) -> () loc(#loc13)
"llvm.intr.dbg.value"(%arg2) <{locationExpr = #llvm.di_expression<>, varInfo = #di_local_variable1}> : (i32) -> () loc(#loc14)
"llvm.intr.dbg.label"() <{label = #di_label1}> : () -> () loc(#loc15)
"llvm.intr.dbg.label"() <{label = #di_label}> : () -> () loc(#loc16)
"llvm.return"() : () -> () loc(#loc17)
}) : () -> () loc(#loc8)
}) : () -> () loc(#loc)
#loc = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":0:0)
#loc1 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":193:1)
#loc2 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":203:1)
#loc4 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":205:17)
#loc5 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":206:12)
#loc6 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":209:3)
#loc7 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":210:3)
#loc8 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:1)
#loc12 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":216:3)
#loc13 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":218:3)
#loc14 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":220:3)
#loc15 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":222:3)
#loc16 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":224:3)
#loc17 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":225:3)
=====
#di_basic_type = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>
#di_basic_type1 = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">
#di_composite_type = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array0", line = 10, sizeInBits = 128, alignInBits = 32>
#di_derived_type = #llvm.di_derived_type<tag = DW_TAG_pointer_type, name = "ptr1">
#di_file = #llvm.di_file<"debuginfo.mlir" in "/test/">
#di_namespace = #llvm.di_namespace<name = "toplevel", exportSymbols = true>
#di_null_type = #llvm.di_null_type
#di_subroutine_type = #llvm.di_subroutine_type<callingConvention = DW_CC_normal>
#loc3 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":203:17)
#loc9 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:18)
#loc10 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:30)
#loc11 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:42)
#di_composite_type1 = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array1", file = #di_file, scope = #di_file, baseType = #di_basic_type1, allocated = <[DW_OP_push_object_address, DW_OP_deref]>, elements = #llvm.di_subrange<count = 4 : i64>>
#di_composite_type2 = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "expr_elements2", baseType = #di_basic_type1, elements = #llvm.di_generic_subrange<count = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(16), DW_OP_deref]>, lowerBound = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(24), DW_OP_deref]>, stride = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(32), DW_OP_deref]>>>
#di_derived_type1 = #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #di_basic_type1, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, extraData = #di_basic_type>
#di_derived_type2 = #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #di_basic_type1, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, dwarfAddressSpace = 3, extraData = #di_basic_type>
#di_module = #llvm.di_module<file = #di_file, scope = #di_file, name = "module", configMacros = "bar", includePath = "/", apinotes = "/", line = 42, isDecl = true>
#di_namespace1 = #llvm.di_namespace<name = "nested", scope = #di_namespace, exportSymbols = false>
#di_namespace2 = #llvm.di_namespace<scope = #di_file, exportSymbols = false>
#di_subroutine_type1 = #llvm.di_subroutine_type<types = #di_basic_type, #di_basic_type>
#di_composite_type3 = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = #di_file, scope = #di_namespace1, flags = "TypePassByReference|NonTrivial">
#di_subprogram = #llvm.di_subprogram<compileUnit = <id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = #di_file, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #di_module, name = "value", file = #di_file, subprogramFlags = Definition, type = #di_subroutine_type, annotations = #llvm.di_annotation<name = "foo", value = "bar">>
#di_subprogram1 = #llvm.di_subprogram<scope = #di_derived_type2, file = #di_file, type = #di_subroutine_type1>
#di_subprogram2 = #llvm.di_subprogram<compileUnit = <id = distinct[1]<>, sourceLanguage = DW_LANG_C, file = #di_file, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #di_module, name = "value", file = #di_file, subprogramFlags = Definition, type = #di_subroutine_type, annotations = #llvm.di_annotation<name = "foo", value = "bar">>
#di_lexical_block = #llvm.di_lexical_block<scope = #di_subprogram>
#di_lexical_block1 = #llvm.di_lexical_block<scope = #di_subprogram1>
#di_lexical_block2 = #llvm.di_lexical_block<scope = #di_subprogram2>
#di_subprogram3 = #llvm.di_subprogram<scope = #di_composite_type3, file = #di_file, type = #di_subroutine_type1>
#di_subroutine_type2 = #llvm.di_subroutine_type<callingConvention = DW_CC_normal, types = #di_null_type, #di_basic_type1, #di_derived_type1, #di_derived_type, #di_derived_type2, #di_composite_type, #di_composite_type1, #di_composite_type3, #di_composite_type2>
#di_common_block = #llvm.di_common_block<scope = #di_subprogram3, name = "block", file = #di_file, line = 3>
#di_label = #llvm.di_label<scope = #di_lexical_block2>
#di_lexical_block3 = #llvm.di_lexical_block<scope = #di_subprogram3>
#di_local_variable = #llvm.di_local_variable<scope = #di_lexical_block, name = "arg2">
#di_local_variable1 = #llvm.di_local_variable<scope = #di_lexical_block1, name = "arg3">
#di_subprogram4 = #llvm.di_subprogram<compileUnit = <id = distinct[2]<>, sourceLanguage = DW_LANG_C, file = #di_file, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #di_namespace2, name = "addr", linkageName = "addr", file = #di_file, line = 3, scopeLine = 3, subprogramFlags = "Definition|Optimized", type = #di_subroutine_type2>
#di_global_variable = #llvm.di_global_variable<scope = #di_common_block, name = "a", file = #di_file, line = 2, type = #di_basic_type1>
#di_global_variable1 = #llvm.di_global_variable<scope = #di_common_block, name = "b", file = #di_file, line = 3, type = #di_basic_type1>
#di_label1 = #llvm.di_label<scope = #di_lexical_block3, name = "label", file = #di_file, line = 42>
#di_lexical_block4 = #llvm.di_lexical_block<scope = #di_subprogram4, line = 1, column = 2>
#di_local_variable2 = #llvm.di_local_variable<scope = #di_lexical_block3, name = "arg1">
#di_global_variable_expression = #llvm.di_global_variable_expression<var = #di_global_variable, expr = <>>
#di_global_variable_expression1 = #llvm.di_global_variable_expression<var = #di_global_variable1, expr = <>>
#di_local_variable3 = #llvm.di_local_variable<scope = #di_lexical_block4, name = "alloc", file = #di_file, line = 6, arg = 1, alignInBits = 32, type = #di_basic_type1>
"builtin.module"() ({
"llvm.mlir.global"() <{addr_space = 0 : i32, dbg_exprs = [#di_global_variable_expression, #di_global_variable_expression1], global_type = i64, linkage = #llvm.linkage<external>, sym_name = "data", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
}) : () -> () loc(#loc1)
"llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<void (i64)>, linkage = #llvm.linkage<external>, sym_name = "addr", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
^bb0(%arg3: i64 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":203:17)):
%0 = "llvm.mlir.constant"() <{value = 1 : i32}> : () -> i32 loc(#loc4)
%1 = "llvm.alloca"(%0) <{elem_type = i64}> : (i32) -> !llvm.ptr loc(#loc5)
"llvm.intr.dbg.declare"(%1) <{locationExpr = #llvm.di_expression<>, varInfo = #di_local_variable3}> : (!llvm.ptr) -> () loc(#loc6)
"llvm.return"() : () -> () loc(#loc7)
}) : () -> () loc(#loc2)
"llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<void (i32, i32, i32)>, linkage = #llvm.linkage<external>, sym_name = "value", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
^bb0(%arg0: i32 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:18), %arg1: i32 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:30), %arg2: i32 loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:42)):
"llvm.intr.dbg.value"(%arg0) <{locationExpr = #llvm.di_expression<[DW_OP_LLVM_fragment(16, 8), DW_OP_plus_uconst(2), DW_OP_deref]>, varInfo = #di_local_variable2}> : (i32) -> () loc(#loc12)
"llvm.intr.dbg.value"(%arg1) <{locationExpr = #llvm.di_expression<>, varInfo = #di_local_variable}> : (i32) -> () loc(#loc13)
"llvm.intr.dbg.value"(%arg2) <{locationExpr = #llvm.di_expression<>, varInfo = #di_local_variable1}> : (i32) -> () loc(#loc14)
"llvm.intr.dbg.label"() <{label = #di_label1}> : () -> () loc(#loc15)
"llvm.intr.dbg.label"() <{label = #di_label}> : () -> () loc(#loc16)
"llvm.return"() : () -> () loc(#loc17)
}) : () -> () loc(#loc8)
}) : () -> () loc(#loc)
#loc = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":0:0)
#loc1 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":193:1)
#loc2 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":203:1)
#loc4 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":205:17)
#loc5 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":206:12)
#loc6 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":209:3)
#loc7 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":210:3)
#loc8 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":214:1)
#loc12 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":216:3)
#loc13 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":218:3)
#loc14 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":220:3)
#loc15 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":222:3)
#loc16 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":224:3)
#loc17 = loc("../mlir/test/Dialect/LLVMIR/debuginfo.mlir":225:3)
>>>>>roundtripped
../mlir/test/Dialect/LLVMIR/debuginfo.mlir:0:0: note: see current operation:
"builtin.module"() ({
"llvm.mlir.global"() <{addr_space = 0 : i32, dbg_exprs = [#llvm.di_global_variable_expression<var = <scope = #llvm.di_common_block<scope = #llvm.di_subprogram<scope = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_namespace<name = "nested", scope = #llvm.di_namespace<name = "toplevel", exportSymbols = true>, exportSymbols = false>, flags = "TypePassByReference|NonTrivial">, file = <"debuginfo.mlir" in "/test/">, type = <types = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>, #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>>, name = "block", file = <"debuginfo.mlir" in "/test/">, line = 3>, name = "a", file = <"debuginfo.mlir" in "/test/">, line = 2, type = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">>, expr = <>>, #llvm.di_global_variable_expression<var = <scope = #llvm.di_common_block<scope = #llvm.di_subprogram<scope = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_namespace<name = "nested", scope = #llvm.di_namespace<name = "toplevel", exportSymbols = true>, exportSymbols = false>, flags = "TypePassByReference|NonTrivial">, file = <"debuginfo.mlir" in "/test/">, type = <types = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>, #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>>, name = "block", file = <"debuginfo.mlir" in "/test/">, line = 3>, name = "b", file = <"debuginfo.mlir" in "/test/">, line = 3, type = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">>, expr = <>>], global_type = i64, linkage = #llvm.linkage<external>, sym_name = "data", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
}) : () -> ()
"llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<void (i64)>, linkage = #llvm.linkage<external>, sym_name = "addr", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
^bb0(%arg3: i64):
%0 = "llvm.mlir.constant"() <{value = 1 : i32}> : () -> i32
%1 = "llvm.alloca"(%0) <{elem_type = i64}> : (i32) -> !llvm.ptr
"llvm.intr.dbg.declare"(%1) <{locationExpr = #llvm.di_expression<>, varInfo = #llvm.di_local_variable<scope = #llvm.di_lexical_block<scope = #llvm.di_subprogram<compileUnit = <id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = <"debuginfo.mlir" in "/test/">, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #llvm.di_namespace<scope = #llvm.di_file<"debuginfo.mlir" in "/test/">, exportSymbols = false>, name = "addr", linkageName = "addr", file = <"debuginfo.mlir" in "/test/">, line = 3, scopeLine = 3, subprogramFlags = "Definition|Optimized", type = <callingConvention = DW_CC_normal, types = #llvm.di_null_type, #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">, #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, extraData = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>, #llvm.di_derived_type<tag = DW_TAG_pointer_type, name = "ptr1">, #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, dwarfAddressSpace = 3, extraData = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>, #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array0", line = 10, sizeInBits = 128, alignInBits = 32>, #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array1", file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_file<"debuginfo.mlir" in "/test/">, baseType = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">, allocated = <[DW_OP_push_object_address, DW_OP_deref]>, elements = #llvm.di_subrange<count = 4 : i64>>, #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_namespace<name = "nested", scope = #llvm.di_namespace<name = "toplevel", exportSymbols = true>, exportSymbols = false>, flags = "TypePassByReference|NonTrivial">, #llvm.di_composite_type<tag = DW_TAG_array_type, name = "expr_elements2", baseType = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">, elements = #llvm.di_generic_subrange<count = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(16), DW_OP_deref]>, lowerBound = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(24), DW_OP_deref]>, stride = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(32), DW_OP_deref]>>>>>, line = 1, column = 2>, name = "alloc", file = <"debuginfo.mlir" in "/test/">, line = 6, arg = 1, alignInBits = 32, type = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">>}> : (!llvm.ptr) -> ()
"llvm.return"() : () -> ()
}) : () -> ()
"llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<void (i32, i32, i32)>, linkage = #llvm.linkage<external>, sym_name = "value", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
^bb0(%arg0: i32, %arg1: i32, %arg2: i32):
"llvm.intr.dbg.value"(%arg0) <{locationExpr = #llvm.di_expression<[DW_OP_LLVM_fragment(16, 8), DW_OP_plus_uconst(2), DW_OP_deref]>, varInfo = #llvm.di_local_variable<scope = #llvm.di_lexical_block<scope = #llvm.di_subprogram<scope = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_namespace<name = "nested", scope = #llvm.di_namespace<name = "toplevel", exportSymbols = true>, exportSymbols = false>, flags = "TypePassByReference|NonTrivial">, file = <"debuginfo.mlir" in "/test/">, type = <types = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>, #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>>>, name = "arg1">}> : (i32) -> ()
"llvm.intr.dbg.value"(%arg1) <{locationExpr = #llvm.di_expression<>, varInfo = #llvm.di_local_variable<scope = #llvm.di_lexical_block<scope = #llvm.di_subprogram<compileUnit = <id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = <"debuginfo.mlir" in "/test/">, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #llvm.di_module<file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_file<"debuginfo.mlir" in "/test/">, name = "module", configMacros = "bar", includePath = "/", apinotes = "/", line = 42, isDecl = true>, name = "value", file = <"debuginfo.mlir" in "/test/">, subprogramFlags = Definition, type = <callingConvention = DW_CC_normal>, annotations = #llvm.di_annotation<name = "foo", value = "bar">>>, name = "arg2">}> : (i32) -> ()
"llvm.intr.dbg.value"(%arg2) <{locationExpr = #llvm.di_expression<>, varInfo = #llvm.di_local_variable<scope = #llvm.di_lexical_block<scope = #llvm.di_subprogram<scope = #llvm.di_derived_type<tag = DW_TAG_pointer_type, baseType = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int0">, sizeInBits = 64, alignInBits = 32, offsetInBits = 4, dwarfAddressSpace = 3, extraData = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>, file = <"debuginfo.mlir" in "/test/">, type = <types = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>, #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>>>, name = "arg3">}> : (i32) -> ()
"llvm.intr.dbg.label"() <{label = #llvm.di_label<scope = #llvm.di_lexical_block<scope = #llvm.di_subprogram<scope = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_namespace<name = "nested", scope = #llvm.di_namespace<name = "toplevel", exportSymbols = true>, exportSymbols = false>, flags = "TypePassByReference|NonTrivial">, file = <"debuginfo.mlir" in "/test/">, type = <types = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>, #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int1", sizeInBits = 32, encoding = DW_ATE_signed>>>>, name = "label", file = <"debuginfo.mlir" in "/test/">, line = 42>}> : () -> ()
"llvm.intr.dbg.label"() <{label = #llvm.di_label<scope = #llvm.di_lexical_block<scope = #llvm.di_subprogram<compileUnit = <id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = <"debuginfo.mlir" in "/test/">, producer = "MLIR", isOptimized = true, emissionKind = Full>, scope = #llvm.di_module<file = <"debuginfo.mlir" in "/test/">, scope = #llvm.di_file<"debuginfo.mlir" in "/test/">, name = "module", configMacros = "bar", includePath = "/", apinotes = "/", line = 42, isDecl = true>, name = "value", file = <"debuginfo.mlir" in "/test/">, subprogramFlags = Definition, type = <callingConvention = DW_CC_normal>, annotations = #llvm.di_annotation<name = "foo", value = "bar">>>>}> : () -> ()
"llvm.return"() : () -> ()
}) : () -> ()
}) : () -> ()
bcardosolopes