Skip to content

Commit 605e71d

Browse files
committed
Suppress null dereference warnings during IPO build
These warnings come from external code (e.g. pugixml, flex/bison generated) and only appear during link time since IPO re-optimizes the program at that point. Since we will not fix these we suppress them to keep the build warning count at zero.
1 parent 6510675 commit 605e71d

File tree

6 files changed

+49
-1
lines changed

6 files changed

+49
-1
lines changed

CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,19 @@ foreach(flag ${FLEX_BISON_WARN_SUPPRESS_FLAGS_TO_CHECK})
184184
endif()
185185
endforeach()
186186

187+
#Suppress IPO link warnings
188+
set(IPO_LINK_WARN_SUPRESS_FLAGS "")
189+
set(IPO_LINK_WARN_SUPRESS_FLAGS_TO_CHECK
190+
"-Wno-null-dereference"
191+
)
192+
foreach(flag ${IPO_LINK_WARN_SUPRESS_FLAGS_TO_CHECK})
193+
CHECK_CXX_COMPILER_FLAG(${flag} CXX_COMPILER_SUPPORTS_${flag})
194+
if(CXX_COMPILER_SUPPORTS_${flag})
195+
#Flag supported, so enable it
196+
set(IPO_LINK_WARN_SUPRESS_FLAGS "${IPO_LINK_WARN_SUPRESS_FLAGS} ${flag}")
197+
endif()
198+
endforeach()
199+
187200
#
188201
# Sanitizer flags
189202
#

ODIN_II/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,5 +135,10 @@ add_executable(odin_II ${EXEC_SOURCES})
135135
target_link_libraries(odin_II
136136
libodin_ii)
137137

138+
#Supress IPO link warnings if IPO is enabled
139+
get_target_property(ODIN_USES_IPO odin_II INTERPROCEDURAL_OPTIMIZATION)
140+
if (ODIN_USES_IPO)
141+
set_target_properties(odin_II PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
142+
endif()
138143

139144
install(TARGETS odin_II libodin_ii DESTINATION bin)

libs/EXTERNAL/libpugixml/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ set(PUGIXML_SUPPRESS_FLAGS -w)
2020
target_compile_options(libpugixml PRIVATE ${PUGIXML_SUPPRESS_FLAGS})
2121

2222
#Enable compact mode which reduces memory usage.
23-
add_definitions(-DPUGIXML_COMPACT)
23+
target_compile_definitions(libpugixml PRIVATE PUGIXML_COMPACT)
2424

2525
install(TARGETS libpugixml DESTINATION bin)

libs/libarchfpga/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,10 @@ target_link_libraries(libarchfpga
2727
add_executable(read_arch ${EXEC_SOURCES})
2828
target_link_libraries(read_arch libarchfpga)
2929

30+
#Supress IPO link warnings if IPO is enabled
31+
get_target_property(READ_ARCH_USES_IPO read_arch INTERPROCEDURAL_OPTIMIZATION)
32+
if (READ_ARCH_USES_IPO)
33+
set_target_properties(read_arch PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
34+
endif()
35+
3036
install(TARGETS libarchfpga read_arch DESTINATION bin)

utils/fasm/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ target_link_libraries(fasm
2828
add_executable(genfasm src/main.cpp)
2929
target_link_libraries(genfasm fasm)
3030

31+
#Supress IPO link warnings if IPO is enabled
32+
get_target_property(GENFASM_USES_IPO genfasm INTERPROCEDURAL_OPTIMIZATION)
33+
if (GENFASM_USES_IPO)
34+
set_target_properties(genfasm PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
35+
endif()
36+
3137
#Specify link-time dependancies
3238
install(TARGETS genfasm DESTINATION bin)
3339

@@ -44,6 +50,12 @@ set(TEST_SOURCES
4450
add_executable(test_fasm ${TEST_SOURCES})
4551
target_link_libraries(test_fasm fasm libcatch)
4652

53+
#Supress IPO link warnings if IPO is enabled
54+
get_target_property(TEST_FASM_USES_IPO test_fasm INTERPROCEDURAL_OPTIMIZATION)
55+
if (TEST_FASM_USES_IPO)
56+
set_target_properties(test_fasm PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
57+
endif()
58+
4759
add_test(
4860
NAME test_fasm
4961
COMMAND test_fasm --use-colour=yes

vpr/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ add_executable(vpr ${EXEC_SOURCES})
4848
target_link_libraries(vpr
4949
libvpr)
5050

51+
#Supress IPO link warnings if IPO is enabled
52+
get_target_property(VPR_USES_IPO vpr INTERPROCEDURAL_OPTIMIZATION)
53+
if (VPR_USES_IPO)
54+
set_target_properties(vpr PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
55+
endif()
56+
5157
#
5258
# Profile Guilded Optimization Configuration
5359
#
@@ -148,6 +154,12 @@ target_link_libraries(test_vpr
148154
libcatch
149155
libvpr)
150156

157+
#Supress IPO link warnings if IPO is enabled
158+
get_target_property(TEST_VPR_USES_IPO vpr INTERPROCEDURAL_OPTIMIZATION)
159+
if (TEST_VPR_USES_IPO)
160+
set_target_properties(test_vpr PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
161+
endif()
162+
151163
add_test(NAME test_vpr
152164
COMMAND test_vpr --use-colour=yes
153165
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test

0 commit comments

Comments
 (0)