Message ID | ZhjpfSG+ZJS7PI7Z@tucnak |
---|---|
State | New |
Headers | show |
Series | tree-cfg: Make the verifier returns_twice message translatable | expand |
> Am 12.04.2024 um 09:58 schrieb Jakub Jelinek <jakub@redhat.com>: > > Hi! > > While translation of the verifier messages is questionable, that case is > something that ideally should never happen except to gcc developers > and so pressumably English should be fine, we use error etc. APIs and > those imply translatations and some translators translate it. > The following patch adjusts the code such that we don't emit > appel returns_twice est not first dans le bloc de base 33 > in French (i.e. 2 English word in the middle of a French message). > Similarly Swedish or Ukrainian. > Note, the German translator did differentiate between these verifier > messages vs. normal user facing and translated it to: > "Interner Fehler: returns_twice call is %s in basic block %d" > so just a German prefix before English message. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? Ok Richard > 2024-04-12 Jakub Jelinek <jakub@redhat.com> > > * tree-cfg.cc (gimple_verify_flow_info): Make the misplaced > returns_twice diagnostics translatable. > > --- gcc/tree-cfg.cc.jj 2024-04-10 10:19:04.237471564 +0200 > +++ gcc/tree-cfg.cc 2024-04-11 17:18:57.962672110 +0200 > @@ -5818,7 +5818,7 @@ gimple_verify_flow_info (void) > if (gimple_code (stmt) == GIMPLE_CALL > && gimple_call_flags (stmt) & ECF_RETURNS_TWICE) > { > - const char *misplaced = NULL; > + bool misplaced = false; > /* TM is an exception: it points abnormal edges just after the > call that starts a transaction, i.e. it must end the BB. */ > if (gimple_call_builtin_p (stmt, BUILT_IN_TM_START)) > @@ -5826,18 +5826,23 @@ gimple_verify_flow_info (void) > if (single_succ_p (bb) > && bb_has_abnormal_pred (single_succ (bb)) > && !gsi_one_nondebug_before_end_p (gsi)) > - misplaced = "not last"; > + { > + error ("returns_twice call is not last in basic block " > + "%d", bb->index); > + misplaced = true; > + } > } > else > { > - if (seen_nondebug_stmt > - && bb_has_abnormal_pred (bb)) > - misplaced = "not first"; > + if (seen_nondebug_stmt && bb_has_abnormal_pred (bb)) > + { > + error ("returns_twice call is not first in basic block " > + "%d", bb->index); > + misplaced = true; > + } > } > if (misplaced) > { > - error ("returns_twice call is %s in basic block %d", > - misplaced, bb->index); > print_gimple_stmt (stderr, stmt, 0, TDF_SLIM); > err = true; > } > > Jakub >
--- gcc/tree-cfg.cc.jj 2024-04-10 10:19:04.237471564 +0200 +++ gcc/tree-cfg.cc 2024-04-11 17:18:57.962672110 +0200 @@ -5818,7 +5818,7 @@ gimple_verify_flow_info (void) if (gimple_code (stmt) == GIMPLE_CALL && gimple_call_flags (stmt) & ECF_RETURNS_TWICE) { - const char *misplaced = NULL; + bool misplaced = false; /* TM is an exception: it points abnormal edges just after the call that starts a transaction, i.e. it must end the BB. */ if (gimple_call_builtin_p (stmt, BUILT_IN_TM_START)) @@ -5826,18 +5826,23 @@ gimple_verify_flow_info (void) if (single_succ_p (bb) && bb_has_abnormal_pred (single_succ (bb)) && !gsi_one_nondebug_before_end_p (gsi)) - misplaced = "not last"; + { + error ("returns_twice call is not last in basic block " + "%d", bb->index); + misplaced = true; + } } else { - if (seen_nondebug_stmt - && bb_has_abnormal_pred (bb)) - misplaced = "not first"; + if (seen_nondebug_stmt && bb_has_abnormal_pred (bb)) + { + error ("returns_twice call is not first in basic block " + "%d", bb->index); + misplaced = true; + } } if (misplaced) { - error ("returns_twice call is %s in basic block %d", - misplaced, bb->index); print_gimple_stmt (stderr, stmt, 0, TDF_SLIM); err = true; }