Skip to content

Commit 4f42488

Browse files
committed
Fix gcc build on mac
1 parent 458a6bb commit 4f42488

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/prune_symbol.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -707,11 +707,12 @@ namespace detail {
707707
// https://github.com/gcc-mirror/gcc/blob/b76f1fb7bf8a7b66b8acd469309257f8b18c0c51/libiberty/cp-demangle.c#L6210-L6251 TODO: What special characters can appear?
708708
TRY_TOK(opening_brace, tokenizer.accept({token_type::punctuation, "{"}));
709709
if(opening_brace) {
710-
optional<token> token1;
711-
optional<token> token2;
710+
token token1{};
711+
token token2{};
712+
bool two_tokens = false; // this awfulness to work around gcc's maybe-uninitialized analysis
712713
TRY_TOK(lambda_token, tokenizer.accept({token_type::identifier, "lambda"}));
713714
if(lambda_token) {
714-
token1 = lambda_token;
715+
token1 = lambda_token.unwrap();
715716
} else {
716717
TRY_TOK(unnamed_token, tokenizer.accept({token_type::identifier, "unnamed"}));
717718
if(!unnamed_token) {
@@ -721,8 +722,9 @@ namespace detail {
721722
if(!type_token) {
722723
return parse_error{};
723724
}
724-
token1 = unnamed_token;
725-
token2 = type_token;
725+
token1 = unnamed_token.unwrap();
726+
token2 = type_token.unwrap();
727+
two_tokens = true;
726728
}
727729
TRY_PARSE(consume_punctuation(), (void)0);
728730
TRY_TOK(hash_token, tokenizer.accept({token_type::punctuation, "#"}));
@@ -738,9 +740,9 @@ namespace detail {
738740
return parse_error{};
739741
}
740742
append_output({token_type::punctuation, "<"});
741-
append_output(token1.unwrap());
742-
if(token2) {
743-
append_output(token2.unwrap());
743+
append_output(token1);
744+
if(two_tokens) {
745+
append_output(token2);
744746
}
745747
append_output(hash_token.unwrap());
746748
append_output(discriminator_token.unwrap());

0 commit comments

Comments
 (0)