Skip to content

Build issues in PlatformIO when using -O3 #768

@eosti

Description

@eosti

Using the latest PlatformIO (6.1.5a1) and the arduino-pico core pulled today using platform-raspberrypi in PlatformIO.

Compiling with the following settings will throw a warning, which is reproducible using the most basic "hello world" script. It also at one point caused the USB port to become unresponsive (serial and flashing broke when not holding BOOTSEL), but I haven't been able to reproduce that.

; platformio.ini
build_unflags = -Os
build_flags = -O3 -Wall

Build warning:

Compiling .pio/build/pico/FrameworkArduino/main.cpp.o
In file included from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/ArduinoAPI.h:36,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/Arduino.h:28,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.h:24,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:21:
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h: In member function 'fs::File fs::Dir::openFile(const char*)':
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h:50:7: warning: 'f.arduino::Stream::_startMillis' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 | class Stream : public Print
      |       ^~~~~~
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:241:10: note: 'f.arduino::Stream::_startMillis' was declared here
  241 |     File f(_impl->openFile(om, am), _baseFS);
      |          ^
Compiling .pio/build/pico/FrameworkArduino/posix.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/cyw43_arch_threadsafe_background.c.o
In file included from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/ArduinoAPI.h:36,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/Arduino.h:28,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.h:24,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:21:
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h: In member function 'fs::File fs::FS::open(const arduino::String&, const char*)':
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h:50:7: warning: 'f.arduino::Stream::_startMillis' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 | class Stream : public Print
      |       ^~~~~~
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:392:10: note: 'f.arduino::Stream::_startMillis' was declared here
  392 |     File f(_impl->open(path, om, am), this);
      |          ^
Compiling .pio/build/pico/FrameworkArduino/stdlib_noniso.cpp.o
In file included from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/ArduinoAPI.h:36,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/Arduino.h:28,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.h:24,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:21:
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h: In member function 'fs::File fs::FS::open(const char*, const char*)':
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h:50:7: warning: 'f.arduino::Stream::_startMillis' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 | class Stream : public Print
      |       ^~~~~~
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:392:10: note: 'f.arduino::Stream::_startMillis' was declared here
  392 |     File f(_impl->open(path, om, am), this);
      |          ^
Compiling .pio/build/pico/FrameworkArduino/wiring_analog.cpp.o
In file included from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/ArduinoAPI.h:36,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/Arduino.h:28,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.h:24,
                 from /Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:21:
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h: In member function 'fs::File fs::File::openNextFile()':
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/api/Stream.h:50:7: warning: 'f.arduino::Stream::_startMillis' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 | class Stream : public Print
      |       ^~~~~~
/Users/reid/.platformio/packages/framework-arduinopico/cores/rp2040/FS.cpp:241:10: note: 'f.arduino::Stream::_startMillis' was declared here
  241 |     File f(_impl->openFile(om, am), _baseFS);
      |   

Removing the unflags will let it compile correctly, as well as changing the optimization level to -O2 instead of -O3. Is this just a weird interaction between PlatformIO and the compiler, or is there some issue in the core?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions