[Bug c++/79241] New: error wen compiling -Os, OK with another optimizations
night_ghost at ykoctpa dot ru
gcc-bugzilla@gcc.gnu.org
Thu Jan 26 11:39:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79241
Bug ID: 79241
Summary: error wen compiling -Os, OK with another optimizations
Product: gcc
Version: 4.8.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: night_ghost at ykoctpa dot ru
Target Milestone: ---
When I compile this (https://github.com/night-ghost/ardupilot) project with -Os
I got errors
==========
In file included from
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/AP_HAL_Namespace.h:4:0,
from
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/AP_HAL.h:6,
from
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL_REVOMINI/AnalogIn.cpp:22:
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/utility/functor.h:
In instantiation of 'static constexpr Functor<RetType, Args> Functor<RetType,
Args>::bind(T*) [with T = REVOMINI::REVOMINIAnalogIn; RetType (T::*
method)(Args ...) = &REVOMINI::REVOMINIAnalogIn::_timer_event; RetType = void;
Args = {}]':
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL_REVOMINI/AnalogIn.cpp:48:43:
required from here
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/utility/functor.h:73:49:
error: could not convert '{obj, method_wrapper<REVOMINI::REVOMINIAnalogIn,
&REVOMINI::REVOMINIAnalogIn::_timer_event>}' from '<brace-enclosed initializer
list>' to 'Functor<void>'
return { obj, method_wrapper<T, method> };
^
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/utility/functor.h:74:5:
error: body of constexpr function 'static constexpr Functor<RetType, Args>
Functor<RetType, Args>::bind(T*) [with T = REVOMINI::REVOMINIAnalogIn; RetType
(T::* method)(Args ...) = &REVOMINI::REVOMINIAnalogIn::_timer_event; RetType =
void; Args = {}]' not a return-statement
}
^
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/utility/functor.h:
In static member function 'static constexpr Functor<RetType, Args>
Functor<RetType, Args>::bind(T*) [with T = REVOMINI::REVOMINIAnalogIn; RetType
(T::* method)(Args ...) = &REVOMINI::REVOMINIAnalogIn::_timer_event; RetType =
void; Args = {}]':
/mnt/disk_d/src/quad-copter/ardu-copter/3.4.2-git/ardupilot.3.4-revo/libraries/AP_HAL/utility/functor.h:74:5:
warning: control reaches end of non-void function [-Wreturn-type]
}
^
make: *** [/tmp/ArduCopter.build/libraries/AP_HAL_REVOMINI/AnalogIn.o] Ошибка 1
==============
but all OK with -O0, -Og and -O2
moreover all turns to OK when I change
#include "functor.h"
to
#pragma GCC push_options
#pragma GCC optimize ("O2")
#include "functor.h"
#pragma GCC pop_options
(https://github.com/night-ghost/ardupilot/blob/RevoMini/libraries/AP_HAL/utility/functor.h)
tested on GCC 4.8.3, 4.9 and 5.4 with same results
More information about the Gcc-bugs
mailing list