https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81147
Bug ID: 81147 Summary: [avr] C++ for -mmcu=atmega2560 doesn't do NRVO or RVO when class inherits from empty base Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: felipe at expertisesolutions dot com.br Target Milestone: --- Created attachment 41594 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41594&action=edit Source file Compilation of the attached example generates the also attached assembly. The file was compiled with the following flags. The same file compiled for x86_64 generates optimal code and doesn't make any copies. It can be seen that many copies happen between Z and X pointer registers in ld, st instructions that follow r26 and r30 register setup. avr-g++ -std=c++14 -I. -I../avr-traits/include -I../avr-add/include -DNDEBUG -DBOOST_SPIRIT_X3_NO_RTTI -DBOOST_EXCEPTION_DISABLE -DBOOST_NO_EXCEPTIONS -DBOOST_ASIO_USE_STD_SYSTEM_ERROR -I../../../Beast/include -I../boost/libs/utility/include -I../boost/libs/tti/include -I../boost/libs/spirit/include -I../boost/libs/mpl/include -I../boost/libs/config/include -I../boost/libs/preprocessor/include -I../boost/libs/type_traits/include -I../boost/libs/core/include -I../boost/libs/fusion/include -I../boost/libs/utility/include -I../boost/libs/static_assert/include -I../boost/libs/variant/include -I../boost/libs/type_index/include -I../boost/libs/detail/include -I../boost/libs/assert/include -I../boost/libs/move/include -I../boost/libs/functional/include -I../boost/libs/math/include -I../boost/libs/throw_exception/include -I../boost/libs/tti/include -I../boost/libs/function_types/include -I../boost/libs/concept_check/include -I../boost/libs/range/include -I../boost/libs/iterator/include -I../boost/libs/optional/include -I../boost/libs/integer/include -I../boost/libs/predef/include -I../boost/libs/smart_ptr/include -I../boost/libs/intrusive/include -I../boost/libs/lexical_cast/include -I../boost/libs/numeric/conversion/include -I../boost/libs/array/include -I../boost/libs/container/include -I../boost/libs/system/include -I../boost/libs/asio/include -I../boost/libs/logic/include -I../boost/libs/regex/include -I../contiki++/include -DBOOST_SPIRIT_STANDARD_WIDE_NOVEMBER_10_2006_0913AM -DBOOST_SPIRIT_NO_STANDARD_WIDE -DBOOST_SPIRIT_NO_REAL_NUMBERS -fno-exceptions -fno-rtti -Wno-unused-local-typedefs -fno-use-cxa-atexit -save-temps -fverbose-asm -dap -fdump-tree-all-all -DCONTIKI=1 -DCONTIKI_TARGET_AVR_ATMEGA2560=1 -Wall -mmcu=atmega2560 -fno-strict-aliasing -I../contiki/platform/avr-atmega2560 -I. -I../contiki/core -I../contiki/cpu/avr -DF_CPU=16000000UL -DAUTO_CRC_PADDING=2 -Os -ffunction-sections -fdata-sections -I. -Isrc -I../contiki/platform/avr-atmega2560/. -I../contiki/platform/avr-atmega2560/apps -I../contiki/platform/avr-atmega2560/net -I../contiki/platform/avr-atmega2560/loader -I../contiki/cpu/avr/. -I../contiki/cpu/avr/dev -I../contiki/cpu/avr/radio/rf230bb -I../contiki/core/dev -I../contiki/core/lib -I../contiki/core/net -I../contiki/core/net/llsec -I../contiki/core/net/mac -I../contiki/core/net/rime -I../contiki/core/net/rpl -I../contiki/core/sys -I../contiki/core/cfs -I../contiki/core/ctk -I../contiki/core/lib/ctk -I../contiki/core/loader -I../contiki/core/. -I../contiki/core/sys -I../contiki/core/dev -I../contiki/core/lib -I../contiki/platform/avr-atmega2560/ -I../contiki -DCONTIKI_VERSION_STRING=\"Contiki-1d456a24b\" -MMD -c src/config-process.cpp