From 48d58ba09599ae020419feb15dee80d8958edf83 Mon Sep 17 00:00:00 2001 From: Rangi Date: Fri, 6 Mar 2026 22:01:37 -0500 Subject: [PATCH] Pass `-Wdangling-alias` to Bison 3.5 or newer `bison -Wall` enables all diagnostics except `-Wcounterexamples` (added in 3.7; we already pass it), `-Wyacc` (which we do not need), and `-Wdangling-alias` (added in 3.5). --- src/CMakeLists.txt | 7 +++++-- src/bison.sh | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 70ebfe63..26d9dd4d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,15 +14,18 @@ set(common_src find_package(BISON 3.0.0 REQUIRED) set(BISON_FLAGS "-Wall -Dlr.type=ielr") -# Set some optimization flags on versions that support them +# Set some flags on versions that support them if(BISON_VERSION VERSION_GREATER_EQUAL "3.5") - set(BISON_FLAGS "${BISON_FLAGS} -Dparse.lac=full -Dapi.token.raw=true") + set(BISON_FLAGS "${BISON_FLAGS} -Dparse.lac=full -Dapi.token.raw=true -Wdangling-alias") endif() if(BISON_VERSION VERSION_GREATER_EQUAL "3.6") set(BISON_FLAGS "${BISON_FLAGS} -Dparse.error=detailed") else() set(BISON_FLAGS "${BISON_FLAGS} -Dparse.error=verbose") endif() +if(BISON_VERSION VERSION_GREATER_EQUAL "3.7") + set(BISON_FLAGS "${BISON_FLAGS} -Wcounterexamples") +endif() BISON_TARGET(ASM_PARSER "asm/parser.y" "${PROJECT_SOURCE_DIR}/src/asm/parser.cpp" diff --git a/src/bison.sh b/src/bison.sh index 0e58c0cd..732b124e 100755 --- a/src/bison.sh +++ b/src/bison.sh @@ -14,9 +14,9 @@ fi BISON_FLAGS="-Wall -Dlr.type=ielr" -# Set some optimization flags on versions that support them +# Set some flags on versions that support them if [ "$BISON_MAJOR" -ge 4 ] || [ "$BISON_MAJOR" -eq 3 ] && [ "$BISON_MINOR" -ge 5 ]; then - BISON_FLAGS="$BISON_FLAGS -Dparse.lac=full -Dapi.token.raw=true" + BISON_FLAGS="$BISON_FLAGS -Dparse.lac=full -Dapi.token.raw=true -Wdangling-alias" fi if [ "$BISON_MAJOR" -ge 4 ] || [ "$BISON_MAJOR" -eq 3 ] && [ "$BISON_MINOR" -ge 6 ]; then BISON_FLAGS="$BISON_FLAGS -Dparse.error=detailed"