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

Reply via email to