Skip to content

Commit

Permalink
Rework how we avoid clang's -Wunused-function
Browse files Browse the repository at this point in the history
The previous technique to avoid this was to have explicit

(void)(wuffs_foo__bar_baz);

no-op lines of code. However, on MSVC, this triggers warning C4551
"function call missing argument list".

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4551
says that "A function call must include the open and close parentheses".
But this is not a function call, it is casting the function pointer.
This false positive is a bug in MSVC, but we work around it for Wuffs.
  • Loading branch information
nigeltao committed Apr 7, 2019
1 parent 0e3d691 commit ed52fde
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 594 deletions.
20 changes: 20 additions & 0 deletions internal/cgen/base/all-impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@
#include <stdint.h>
#include <string.h>

// GCC does not warn for unused *static inline* functions, but clang does.
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-function"
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand All @@ -40,9 +46,19 @@ extern "C" {
} // extern "C"
#endif

#ifdef __clang__
#pragma clang diagnostic pop
#endif

// WUFFS C HEADER ENDS HERE.
#ifdef WUFFS_IMPLEMENTATION

// GCC does not warn for unused *static inline* functions, but clang does.
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-function"
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -105,6 +121,10 @@ const uint64_t wuffs_base__low_bits_mask__u64[65] = {
} // extern "C"
#endif

#ifdef __clang__
#pragma clang diagnostic pop
#endif

#endif // WUFFS_IMPLEMENTATION

// !! WUFFS MONOLITHIC RELEASE DISCARDS EVERYTHING BELOW.
Expand Down
53 changes: 0 additions & 53 deletions internal/cgen/base/core-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -420,56 +420,3 @@ wuffs_base__table_u8__row(wuffs_base__table_u8 t, uint32_t y) {
// ---------------- Slices and Tables (Utility)

#define wuffs_base__utility__null_slice_u8 wuffs_base__null_slice_u8

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__core_private()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__core_private() {
(void)(wuffs_base__ignore_status);
(void)(wuffs_base__load_u16be);
(void)(wuffs_base__load_u16le);
(void)(wuffs_base__load_u24be);
(void)(wuffs_base__load_u24le);
(void)(wuffs_base__load_u32be);
(void)(wuffs_base__load_u32le);
(void)(wuffs_base__load_u40be);
(void)(wuffs_base__load_u40le);
(void)(wuffs_base__load_u48be);
(void)(wuffs_base__load_u48le);
(void)(wuffs_base__load_u56be);
(void)(wuffs_base__load_u56le);
(void)(wuffs_base__load_u64be);
(void)(wuffs_base__load_u64le);
(void)(wuffs_base__load_u8be);
(void)(wuffs_base__slice_u8__copy_from_slice);
(void)(wuffs_base__slice_u8__prefix);
(void)(wuffs_base__slice_u8__suffix);
(void)(wuffs_base__store_u16be);
(void)(wuffs_base__store_u16le);
(void)(wuffs_base__store_u24be);
(void)(wuffs_base__store_u24le);
(void)(wuffs_base__store_u32be);
(void)(wuffs_base__store_u32le);
(void)(wuffs_base__store_u40be);
(void)(wuffs_base__store_u40le);
(void)(wuffs_base__store_u48be);
(void)(wuffs_base__store_u48le);
(void)(wuffs_base__store_u56be);
(void)(wuffs_base__store_u56le);
(void)(wuffs_base__store_u64be);
(void)(wuffs_base__store_u64le);
(void)(wuffs_base__store_u8be);
(void)(wuffs_base__table_u8__row);
(void)(wuffs_base__u16__sat_add_indirect);
(void)(wuffs_base__u16__sat_sub_indirect);
(void)(wuffs_base__u32__sat_add_indirect);
(void)(wuffs_base__u32__sat_sub_indirect);
(void)(wuffs_base__u64__sat_add_indirect);
(void)(wuffs_base__u64__sat_sub_indirect);
(void)(wuffs_base__u8__sat_add_indirect);
(void)(wuffs_base__u8__sat_sub_indirect);
}
41 changes: 0 additions & 41 deletions internal/cgen/base/core-public.h
Original file line number Diff line number Diff line change
Expand Up @@ -425,44 +425,3 @@ wuffs_base__slice_u8__subslice_ij(wuffs_base__slice_u8 s,
}
return wuffs_base__make_slice_u8(NULL, 0);
}

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__core_public()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__core_public() {
(void)(wuffs_base__make_empty_struct);
(void)(wuffs_base__make_slice_u16);
(void)(wuffs_base__make_slice_u32);
(void)(wuffs_base__make_slice_u64);
(void)(wuffs_base__make_slice_u8);
(void)(wuffs_base__null_slice_u8);
(void)(wuffs_base__null_table_u8);
(void)(wuffs_base__slice_u8__subslice_i);
(void)(wuffs_base__slice_u8__subslice_ij);
(void)(wuffs_base__slice_u8__subslice_j);
(void)(wuffs_base__status__is_complete);
(void)(wuffs_base__status__is_error);
(void)(wuffs_base__status__is_ok);
(void)(wuffs_base__status__is_suspension);
(void)(wuffs_base__status__is_warning);
(void)(wuffs_base__u16__max);
(void)(wuffs_base__u16__min);
(void)(wuffs_base__u16__sat_add);
(void)(wuffs_base__u16__sat_sub);
(void)(wuffs_base__u32__max);
(void)(wuffs_base__u32__min);
(void)(wuffs_base__u32__sat_add);
(void)(wuffs_base__u32__sat_sub);
(void)(wuffs_base__u64__max);
(void)(wuffs_base__u64__min);
(void)(wuffs_base__u64__sat_add);
(void)(wuffs_base__u64__sat_sub);
(void)(wuffs_base__u8__max);
(void)(wuffs_base__u8__min);
(void)(wuffs_base__u8__sat_add);
(void)(wuffs_base__u8__sat_sub);
}
53 changes: 0 additions & 53 deletions internal/cgen/base/image-public.h
Original file line number Diff line number Diff line change
Expand Up @@ -1109,56 +1109,3 @@ wuffs_base__pixel_swizzler::swizzle_packed(wuffs_base__slice_u8 dst,
}

#endif // __cplusplus

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__image_public()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__image_public() {
(void)(wuffs_base__frame_config__blend);
(void)(wuffs_base__frame_config__bounds);
(void)(wuffs_base__frame_config__disposal);
(void)(wuffs_base__frame_config__duration);
(void)(wuffs_base__frame_config__height);
(void)(wuffs_base__frame_config__index);
(void)(wuffs_base__frame_config__io_position);
(void)(wuffs_base__frame_config__update);
(void)(wuffs_base__frame_config__width);
(void)(wuffs_base__image_config__first_frame_io_position);
(void)(wuffs_base__image_config__first_frame_is_opaque);
(void)(wuffs_base__image_config__invalidate);
(void)(wuffs_base__image_config__is_valid);
(void)(wuffs_base__image_config__set);
(void)(wuffs_base__null_frame_config());
(void)(wuffs_base__null_image_config());
(void)(wuffs_base__null_pixel_buffer());
(void)(wuffs_base__null_pixel_config());
(void)(wuffs_base__pixel_buffer__palette);
(void)(wuffs_base__pixel_buffer__pixel_format);
(void)(wuffs_base__pixel_buffer__plane);
(void)(wuffs_base__pixel_buffer__set_from_slice);
(void)(wuffs_base__pixel_config__bounds);
(void)(wuffs_base__pixel_config__height);
(void)(wuffs_base__pixel_config__invalidate);
(void)(wuffs_base__pixel_config__is_valid);
(void)(wuffs_base__pixel_config__pixbuf_len);
(void)(wuffs_base__pixel_config__pixel_format);
(void)(wuffs_base__pixel_config__pixel_subsampling);
(void)(wuffs_base__pixel_config__set);
(void)(wuffs_base__pixel_config__width);
(void)(wuffs_base__pixel_format__bits_per_pixel);
(void)(wuffs_base__pixel_format__is_indexed);
(void)(wuffs_base__pixel_format__is_packed);
(void)(wuffs_base__pixel_format__is_planar);
(void)(wuffs_base__pixel_format__is_valid);
(void)(wuffs_base__pixel_format__num_planes);
(void)(wuffs_base__pixel_subsampling__bias_x);
(void)(wuffs_base__pixel_subsampling__bias_y);
(void)(wuffs_base__pixel_subsampling__shift_x);
(void)(wuffs_base__pixel_subsampling__shift_y);
(void)(wuffs_base__pixel_swizzler__prepare);
(void)(wuffs_base__pixel_swizzler__swizzle_packed);
}
25 changes: 0 additions & 25 deletions internal/cgen/base/io-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -279,28 +279,3 @@ wuffs_base__io_writer__set_mark(wuffs_base__io_writer* o, uint8_t* mark) {

#define wuffs_base__utility__null_io_reader wuffs_base__null_io_reader
#define wuffs_base__utility__null_io_writer wuffs_base__null_io_writer

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__io_private()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__io_private() {
(void)(wuffs_base__io_buffer__is_valid);
(void)(wuffs_base__io_reader__is_eof);
(void)(wuffs_base__io_reader__is_valid);
(void)(wuffs_base__io_reader__set);
(void)(wuffs_base__io_reader__set_limit);
(void)(wuffs_base__io_reader__set_mark);
(void)(wuffs_base__io_reader__take);
(void)(wuffs_base__io_writer__copy_from_slice);
(void)(wuffs_base__io_writer__copy_n_from_history);
(void)(wuffs_base__io_writer__copy_n_from_history_fast);
(void)(wuffs_base__io_writer__copy_n_from_reader);
(void)(wuffs_base__io_writer__copy_n_from_slice);
(void)(wuffs_base__io_writer__is_valid);
(void)(wuffs_base__io_writer__set);
(void)(wuffs_base__io_writer__set_mark);
}
21 changes: 0 additions & 21 deletions internal/cgen/base/io-public.h
Original file line number Diff line number Diff line change
Expand Up @@ -205,24 +205,3 @@ wuffs_base__io_buffer__struct::writer_io_position() {
}

#endif // __cplusplus

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__io_public()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__io_public() {
(void)(wuffs_base__io_buffer__compact);
(void)(wuffs_base__io_buffer__reader);
(void)(wuffs_base__io_buffer__reader_io_position);
(void)(wuffs_base__io_buffer__writer);
(void)(wuffs_base__io_buffer__writer_io_position);
(void)(wuffs_base__make_io_buffer);
(void)(wuffs_base__make_io_buffer_meta);
(void)(wuffs_base__null_io_buffer);
(void)(wuffs_base__null_io_buffer_meta);
(void)(wuffs_base__null_io_reader);
(void)(wuffs_base__null_io_writer);
}
14 changes: 0 additions & 14 deletions internal/cgen/base/memory-public.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,3 @@ wuffs_base__malloc_slice_u64(void* (*malloc_func)(size_t), uint64_t num_u64) {
}
return wuffs_base__make_slice_u64(NULL, 0);
}

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__memory_public()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__memory_public() {
(void)(wuffs_base__malloc_slice_u16);
(void)(wuffs_base__malloc_slice_u32);
(void)(wuffs_base__malloc_slice_u64);
(void)(wuffs_base__malloc_slice_u8);
}
17 changes: 0 additions & 17 deletions internal/cgen/base/range-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,20 +65,3 @@ wuffs_base__range_ie_u64__get_max_excl(const wuffs_base__range_ie_u64* r) {
#define wuffs_base__utility__make_rect_ii_u32 wuffs_base__make_rect_ii_u32
#define wuffs_base__utility__make_rect_ie_u32 wuffs_base__make_rect_ie_u32

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__range_private()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__range_private() {
(void)(wuffs_base__range_ie_u32__get_max_excl);
(void)(wuffs_base__range_ie_u32__get_min_incl);
(void)(wuffs_base__range_ie_u64__get_max_excl);
(void)(wuffs_base__range_ie_u64__get_min_incl);
(void)(wuffs_base__range_ii_u32__get_max_incl);
(void)(wuffs_base__range_ii_u32__get_min_incl);
(void)(wuffs_base__range_ii_u64__get_max_incl);
(void)(wuffs_base__range_ii_u64__get_min_incl);
}
56 changes: 0 additions & 56 deletions internal/cgen/base/range-public.h
Original file line number Diff line number Diff line change
Expand Up @@ -797,59 +797,3 @@ wuffs_base__rect_ie_u32::height() {
}

#endif // __cplusplus

// ---------------- Bureaucracy re -Wunused-function

static inline void
wuffs_base__acknowledge_potentially_unused_functions__range_public()
WUFFS_BASE__POTENTIALLY_UNUSED;

static inline void
wuffs_base__acknowledge_potentially_unused_functions__range_public() {
(void)(wuffs_base__make_range_ie_u32);
(void)(wuffs_base__make_range_ie_u64);
(void)(wuffs_base__make_range_ii_u32);
(void)(wuffs_base__make_range_ii_u64);
(void)(wuffs_base__make_rect_ie_u32);
(void)(wuffs_base__make_rect_ii_u32);
(void)(wuffs_base__range_ie_u32__contains);
(void)(wuffs_base__range_ie_u32__contains_range);
(void)(wuffs_base__range_ie_u32__equals);
(void)(wuffs_base__range_ie_u32__intersect);
(void)(wuffs_base__range_ie_u32__is_empty);
(void)(wuffs_base__range_ie_u32__length);
(void)(wuffs_base__range_ie_u32__unite);
(void)(wuffs_base__range_ie_u64__contains);
(void)(wuffs_base__range_ie_u64__contains_range);
(void)(wuffs_base__range_ie_u64__equals);
(void)(wuffs_base__range_ie_u64__intersect);
(void)(wuffs_base__range_ie_u64__is_empty);
(void)(wuffs_base__range_ie_u64__length);
(void)(wuffs_base__range_ie_u64__unite);
(void)(wuffs_base__range_ii_u32__contains);
(void)(wuffs_base__range_ii_u32__contains_range);
(void)(wuffs_base__range_ii_u32__equals);
(void)(wuffs_base__range_ii_u32__intersect);
(void)(wuffs_base__range_ii_u32__is_empty);
(void)(wuffs_base__range_ii_u32__unite);
(void)(wuffs_base__range_ii_u64__contains);
(void)(wuffs_base__range_ii_u64__contains_range);
(void)(wuffs_base__range_ii_u64__equals);
(void)(wuffs_base__range_ii_u64__intersect);
(void)(wuffs_base__range_ii_u64__is_empty);
(void)(wuffs_base__range_ii_u64__unite);
(void)(wuffs_base__rect_ie_u32__contains);
(void)(wuffs_base__rect_ie_u32__contains_rect);
(void)(wuffs_base__rect_ie_u32__equals);
(void)(wuffs_base__rect_ie_u32__height);
(void)(wuffs_base__rect_ie_u32__intersect);
(void)(wuffs_base__rect_ie_u32__is_empty);
(void)(wuffs_base__rect_ie_u32__unite);
(void)(wuffs_base__rect_ie_u32__width);
(void)(wuffs_base__rect_ii_u32__contains);
(void)(wuffs_base__rect_ie_u32__contains_rect);
(void)(wuffs_base__rect_ii_u32__equals);
(void)(wuffs_base__rect_ii_u32__intersect);
(void)(wuffs_base__rect_ii_u32__is_empty);
(void)(wuffs_base__rect_ii_u32__unite);
}
Loading

0 comments on commit ed52fde

Please sign in to comment.