lovyan03 / LovyanGFX

SPI LCD graphics library for ESP32 (ESP-IDF/ArduinoESP32) / ESP8266 (ArduinoESP8266) / SAMD51(Seeed ArduinoSAMD51)
Other
1.03k stars 189 forks source link

-Wshadow warnings everywhere #233

Closed wrgallo closed 1 year ago

wrgallo commented 2 years ago

Compiling with the flag -Wshadow will trigger lots of warnings/errors in the library. Many companies have 'coding standards' that specify that every parameter in a function must start with param or the letter p, only to avoid shadowing.

Example:

class MyClass{
   protected:
   int a;

   public:
   void foo(int a){
      a = a; // This must trigger a warning or error [-Wshadow]
   }

   void bar(int paramA){
      a = paramA; // This is fine
   }

   void foo2(int a){
      this.a = a; // This is fine too
      a = 2; // But this is not  [-Wshadow]
   }

Shadowing occurs at least 7 times in lgfx_fonts.hpp :

  1. declaration of 'baseline' shadows a member of 'lgfx::v1::BaseFont' [-Wshadow]
  2. declaration of 'baseline' shadows a member of 'lgfx::v1::GLCDfont' [-Wshadow]
  3. declaration of 'baseline' shadows a member of 'lgfx::v1::FixedBMPfont' [-Wshadow]
  4. declaration of 'baseline' shadows a member of 'lgfx::v1::BMPfont' [-Wshadow]
  5. declaration of 'baseline' shadows a member of 'lgfx::v1::RLEfont' [-Wshadow]
  6. declaration of 'y_advance' shadows a member of 'lgfx::v1::BDFfont' [-Wshadow]
  7. declaration of 'range_num' shadows a member of 'lgfx::v1::GFXfont' [-Wshadow]

Shadowing occurs at least 2 times in colortype.hpp :

  1. declaration of 'depth' shadows a member of 'lgfx::v1::color_conv_t' [-Wshadow]
  2. declaration of 'depth' shadows a member of 'lgfx::v1::color_conv_t' [-Wshadow]

PlatformIO compiling results with library version 0.4.15: compiling_lovyan_0_4_15

tobozo commented 2 years ago

@wrgallo thanks for your feedback :+1:

Is there an exhaustive build_flags value for platformio.ini you can suggest to meet said standards?

wrgallo commented 2 years ago

@wrgallo thanks for your feedback +1

Is there an exhaustive build_flags value for platformio.ini you can suggest to meet said standards?

-Wall -Wextra -Wshadow -Wdouble-promotion -Wformat -Wnonnull
tobozo commented 2 years ago

thanks :+1: will try to use it where possible

tobozo commented 1 year ago

closing this issue as solved, feel free to reopen if needed

wrgallo commented 1 year ago

@tobozo

closing this issue as solved, feel free to reopen if needed

There is still one last pending -WShadow warning at lgfx_fonts.hpp

declaration of 'range_num' shadows a member of 'lgfx::v1::GFXfont' [-Wshadow]
tobozo commented 1 year ago

oh right, looks like there's some warnings in lgfx/utility/lgfx_qrcode.c too, reopening

tobozo commented 1 year ago

edit: link to unified diff (whitespaces disabled)

I managed to reduce the warnings to this.

Note: all -Wshadow warnings are now deliberately silent with all v0 codebase. As this part of the library won't be maintained any more I didn't bother fixing the warnings there and only added some pragmas to get them silent.

I've also left the [-Wdouble-promotion] warnings in place as I don't know what could be the effects, and it's not my decision to change that.

However, a few -Wshadow warnings are still emitted by the arduino packages, I'm not sure how to cope with that.

I've created a special branch with the -Wshadow changes,.

this will need @lovyan03's approval though

Processing esp32@default (board: esp32dev; platform: https://github.com/tasmota/platform-espressif32; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (2.0.5+sha.f53ca2d) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 2.0.5 
 - tool-esptoolpy @ 1.40300.220914 (4.3.0) 
 - tool-mklittlefs @ 1.203.210628 (2.3) 
 - tool-mkspiffs @ 2.230.0 (2.30) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- LovyanGFX @ 0.4.18
|   |-- SPI @ 2.0.0
|   |-- Wire @ 2.0.0
|-- SPIFFS @ 2.0.0
|   |-- FS @ 2.0.0
Building in release mode
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/Fonts/IPA/lgfx_font_japan.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/Fonts/efont/lgfx_efont_cn.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/Fonts/efont/lgfx_efont_ja.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/Fonts/efont/lgfx_efont_kr.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/Fonts/efont/lgfx_efont_tw.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/utility/lgfx_pngle.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/utility/lgfx_qoi.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/utility/lgfx_qrcode.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/utility/lgfx_tjpgd.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/utility/miniz.c.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/LGFXBase.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/lgfx_fonts.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/panel/Panel_GDEW0154M09.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/panel/Panel_IT8951.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/platforms/esp32_common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/platforms/samd51_common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/touch/Touch_FT5x06.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/touch/Touch_GT911.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/touch/Touch_STMPE610.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v0/touch/Touch_XPT2046.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/LGFXBase.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/LGFX_Button.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/LGFX_Sprite.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/lgfx_fonts.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/misc/SpriteBuffer.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/misc/common_function.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/misc/pixelcopy.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_Device.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_FrameBufferBase.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_GDEW0154M09.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_HasBuffer.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_ILI9225.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_IT8951.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_LCD.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_M5HDMI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_M5UnitLCD.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_RA8875.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_RM68120.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_SSD1306.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_SSD1327.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_SSD1331.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_SSD1351.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/panel/Panel_SSD1963.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/arduino_default/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/arduino_default/Bus_Stream.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/arduino_default/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32/Bus_I2C.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32/Bus_Parallel8.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32/Light_PWM.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32/Panel_CVBS.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32c3/Bus_Parallel8.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32s2/Bus_Parallel16.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32s2/Bus_Parallel8.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32s3/Bus_Parallel16.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp32s3/Bus_Parallel8.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp8266/Bus_I2C.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp8266/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/esp8266/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/framebuffer/Panel_fb.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/framebuffer/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/opencv/Panel_OpenCV.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/opencv/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/rp2040/Bus_I2C.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/rp2040/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/rp2040/Light_PWM.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/rp2040/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/samd21/Bus_I2C.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/samd21/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/samd21/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/samd51/Bus_I2C.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/samd51/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/samd51/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/sdl/Panel_sdl.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/sdl/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/spresense/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/spresense/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/stm32/Bus_SPI.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/platforms/stm32/common.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_FT5x06.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_GSLx680.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_GT911.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_NS2009.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_STMPE610.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_TT21xxx.cpp.o
Compiling .pio/build/esp32@default/libac3/LovyanGFX/lgfx/v1/touch/Touch_XPT2046.cpp.o
Compiling .pio/build/esp32@default/src/main.cpp.o
Generating partitions .pio/build/esp32@default/partitions.bin
Compiling .pio/build/esp32@default/lib368/SPI/SPI.cpp.o
Compiling .pio/build/esp32@default/liba50/Wire/Wire.cpp.o
Compiling .pio/build/esp32@default/lib0c0/FS/FS.cpp.o
Archiving .pio/build/esp32@default/lib368/libSPI.a
Indexing .pio/build/esp32@default/lib368/libSPI.a
Compiling .pio/build/esp32@default/lib0c0/FS/vfs_api.cpp.o
Archiving .pio/build/esp32@default/liba50/libWire.a
Indexing .pio/build/esp32@default/liba50/libWire.a
Compiling .pio/build/esp32@default/liba15/SPIFFS/SPIFFS.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/Esp.cpp.o
Archiving .pio/build/esp32@default/lib0c0/libFS.a
Indexing .pio/build/esp32@default/lib0c0/libFS.a
Compiling .pio/build/esp32@default/FrameworkArduino/FirmwareMSC.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/FunctionalInterrupt.cpp.o
Archiving .pio/build/esp32@default/liba15/libSPIFFS.a
Indexing .pio/build/esp32@default/liba15/libSPIFFS.a
Compiling .pio/build/esp32@default/FrameworkArduino/HWCDC.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/HardwareSerial.cpp.o
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp: In member function 'uint32_t EspClass::magicFlashChipSize(uint8_t)':
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:367:51: warning: declaration of 'byte' shadows a global declaration [-Wshadow]
 uint32_t EspClass::magicFlashChipSize(uint8_t byte)
                                                   ^
In file included from ~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:20:
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:133:17: note: shadowed declaration is here
 typedef uint8_t byte;
                 ^~~~
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp: In member function 'uint32_t EspClass::magicFlashChipSpeed(uint8_t)':
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:385:52: warning: declaration of 'byte' shadows a global declaration [-Wshadow]
 uint32_t EspClass::magicFlashChipSpeed(uint8_t byte)
                                                    ^
In file included from ~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:20:
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:133:17: note: shadowed declaration is here
 typedef uint8_t byte;
                 ^~~~
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp: In member function 'FlashMode_t EspClass::magicFlashChipMode(uint8_t)':
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:401:54: warning: declaration of 'byte' shadows a global declaration [-Wshadow]
 FlashMode_t EspClass::magicFlashChipMode(uint8_t byte)
                                                      ^
In file included from ~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:20:
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:133:17: note: shadowed declaration is here
 typedef uint8_t byte;
                 ^~~~
Compiling .pio/build/esp32@default/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/IPv6Address.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/MD5Builder.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/Print.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/StreamString.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/USB.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/USBCDC.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/USBMSC.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/WString.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/base64.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/cbuf.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-adc.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-bt.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-cpu.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-dac.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-gpio.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-i2c-slave.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-i2c.c.o
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-i2c-slave.c: In function 'i2c_slave_check_line_state':
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-i2c-slave.c:547:30: warning: declaration of 'a' shadows a previous local [-Wshadow]
                 for (uint8_t a=0;a<9; a++) {
                              ^
~/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-i2c-slave.c:541:22: note: shadowed declaration is here
         for (uint8_t a=0; a<9; a++) {
                      ^
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-ledc.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-matrix.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-misc.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-psram.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-rgb-led.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-rmt.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-sigmadelta.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-spi.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-time.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-timer.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-tinyusb.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-touch.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/esp32-hal-uart.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/firmware_msc_fat.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/libb64/cdecode.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/libb64/cencode.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/main.cpp.o
Compiling .pio/build/esp32@default/FrameworkArduino/stdlib_noniso.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/esp32@default/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/esp32@default/libFrameworkArduino.a
Indexing .pio/build/esp32@default/libFrameworkArduino.a
Linking .pio/build/esp32@default/firmware.elf
Retrieving maximum program size .pio/build/esp32@default/firmware.elf
Checking size .pio/build/esp32@default/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   4.9% (used 15904 bytes from 327680 bytes)
Flash: [==        ]  19.6% (used 257209 bytes from 1310720 bytes)
Building .pio/build/esp32@default/firmware.bin
esptool.py v4.3
Creating esp32 image...
Merged 2 ELF sections
Successfully created esp32 image.
========================= [SUCCESS] Took 39.98 seconds =========================

Environment    Status    Duration
-------------  --------  ------------
esp32@default  SUCCESS   00:00:39.982
========================= 1 succeeded in 00:00:39.982 =========================
wrgallo commented 1 year ago

About the -Wdouble-promotion warnings, just placing f after the float constants will silent the warnings, and can even make the math operations faster, as described by GCC Warning Options.

A float constant without the floating-point literal f explicitly added to the number is actually a double, and if a double and a float actually differ (usually it does), all math operations between a float and a double will require the float number to be promoted to double.

#define MY_FLOAT_CONSTANT 3.14f // Usually take 32bits (4 bytes)
#define MY_DOUBLE_CONSTANT 3.14 // Usually take 64bits (8 bytes)

Example:

float area_wrong(float radius)
{
  // radius would be promoted from float to double, to match the constant that should be float too
   return 3.14159 * radius * radius;
}

float area_right(float radius)
{
  // radius and the PI constant are both float
   return 3.14159f * radius * radius;
}
tobozo commented 1 year ago

that's also happening when multiplicating in32_t and floats, i.e. in the beziers functions, could be one of those situations where ignoring the warning is more beneficial for performances than fixing it?

that won't fix the issues in the espressif core anyway

tobozo commented 1 year ago

based on your suggestion I've pushed some changes on the 'wshadow' branch and updated the log output in my previous comment, much smaller now :-)

diff link

lovyan03 commented 1 year ago

There are so many changes that it's very hard to check.

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

github-actions[bot] commented 1 year ago

This issue has been automatically closed because it has not had recent activity. Thank you for your contributions.