https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115448
Bug ID: 115448
Summary: Improvements to CFG edge visualization in diagnostic
paths
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
Assignee: unassigned at gcc dot gnu.org
Reporter: dmalcolm at gcc dot gnu.org
Target Milestone: ---
See https://godbolt.org/z/5e6d3Pvff (from bug 115436) where the path has:
│
└──> 'my_str_push_char': events 3-4
│
│ 28 | static bool my_str_push_char(my_str* s, char c) {
│ | ^~~~~~~~~~~~~~~~
│ | |
│ | (3) entry to 'my_str_push_char'
│ 29 | if (s->len >= s->cap) if (!my_str_realloc(s, s->cap * 2))
return false;
│ | ~
│ | |
│ | (4) following 'true' branch... ─>─┐
│ | │
│
'my_str_push_char': event 5
│
│ | │
│ |┌───────────────────────────────────────┘
│ 29 |│ if (s->len >= s->cap) if (!my_str_realloc(s, s->cap * 2))
return false;
│ |│ ~^~~~~
│ |│ |
│ |└───────────────────────────────────────────────>(5) ...to
here
│
'my_str_push_char': event 6
│
│ 29 | if (s->len >= s->cap) if (!my_str_realloc(s, s->cap * 2))
return false;
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ | |
│ | (6) calling 'my_str_realloc'
from 'my_str_push_char'
│
└──> 'my_str_realloc': events 7-13
│
If we supported "intraline" edges, then events 4 and 5 could probably be linked
like this (thus consolidating event 5 in with events 3-4):
│
└──> 'my_str_push_char': events 3-5
│
│ 28 | static bool my_str_push_char(my_str* s, char c) {
│ | ^~~~~~~~~~~~~~~~
│ | |
│ | (3) entry to 'my_str_push_char'
│ 29 | if (s->len >= s->cap) if (!my_str_realloc(s, s->cap * 2))
return false;
│ | ~ ~^~~~~
│ | | |
│ | (4) following 'true' branch... ───────────>(5) ...to
here
│
'my_str_push_char': event 6
│
│ 29 | if (s->len >= s->cap) if (!my_str_realloc(s, s->cap * 2))
return false;
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ | |
│ | (6) calling 'my_str_realloc'
from 'my_str_push_char'
│
└──> 'my_str_realloc': events 7-13
│