Files
compiler-explorer/test/demangle-cases/bug-7521-powerpc.asm.json
narpfel 82407976d1 Accept multiple dots in symbol names for jump to label (#8018)
Some compilers emit symbol names with multiple dots, e. g. Clang for
static data (like string literals) or GCC for function clones (e. g. due
to interprocedural constant propagation).

Test cases: https://godbolt.org/z/dGbGncnh8,
https://godbolt.org/z/dhrGGqrjo
2025-08-11 14:28:06 -05:00

233 lines
4.4 KiB
JSON
Generated

{
"asm": [
{
"labels": [],
"source": null,
"text": "some_namespace::function():",
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17,
},
},
],
"source": null,
"text": " .quad .Lfunc_begin0",
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase",
},
{
"labels": [],
"source": null,
"text": " .quad 0",
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:",
},
{
"labels": [],
"source": null,
"text": " blr",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": "main:",
},
{
"labels": [
{
"name": ".Lfunc_begin1",
"range": {
"endCol": 30,
"startCol": 17,
},
},
],
"source": null,
"text": " .quad .Lfunc_begin1",
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase",
},
{
"labels": [],
"source": null,
"text": " .quad 0",
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin1:",
},
{
"labels": [],
"source": null,
"text": " mflr 0",
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)",
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)",
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)",
},
{
"labels": [],
"source": null,
"text": " mr 31, 1",
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)",
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)",
},
{
"labels": [
{
"name": ".L.str@toc@ha",
"range": {
"endCol": 34,
"startCol": 21,
},
"target": ".L.str",
},
],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha",
},
{
"labels": [
{
"name": ".L.str@toc@l",
"range": {
"endCol": 32,
"startCol": 20,
},
"target": ".L.str",
},
],
"source": null,
"text": " addi 3, 3, .L.str@toc@l",
},
{
"labels": [
{
"name": "some_namespace::function()@toc@ha",
"range": {
"endCol": 54,
"startCol": 21,
},
"target": "some_namespace::function()",
},
],
"source": null,
"text": " addis 4, 2, some_namespace::function()@toc@ha",
},
{
"labels": [
{
"name": "some_namespace::function()@toc@l",
"range": {
"endCol": 52,
"startCol": 20,
},
"target": "some_namespace::function()",
},
],
"source": null,
"text": " addi 4, 4, some_namespace::function()@toc@l",
},
{
"labels": [],
"source": null,
"text": " bl std::printf(char const*, ...)",
},
{
"labels": [],
"source": null,
"text": " nop",
},
{
"labels": [],
"source": null,
"text": " li 3, 0",
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144",
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)",
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)",
},
{
"labels": [],
"source": null,
"text": " mtlr 0",
},
{
"labels": [],
"source": null,
"text": " blr",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": ".L.str:",
},
{
"labels": [],
"source": null,
"text": " .asciz "%zu\n"",
},
],
"labelDefinitions": {
".L.str": 33,
".Lfunc_begin0": 5,
".Lfunc_begin1": 12,
"main": 8,
"some_namespace::function()": 1,
},
}