This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch] Implement std::experimental::variant


On 19/08/16 09:18, Jonathan Wakely wrote:
> On 18/08/16 13:32 -0700, Tim Shen wrote:
>> Tested on x86_64-linux-gnu and checked in as r239590.
> 
> This updates the status at
> https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.201z
> 
> Committed to trunk.
> 
> 

Hi,

I am seeing failures on arm-none-eabi for Cortex-M0 for these two tests:
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant: In
member function 'std::__detail::__variant::_Variant_base<_Types>&
std::__detail::__variant::_Variant_base<_Types>::operator=(const
std::__detail::__variant::_Variant_base<_Types>&)':
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant:442:
error: '__try' was not declared in this scope
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant:442:
note: suggested alternative: '__try'
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant:446:
error: expected primary-expression before '...' token
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant:446:
error: there are no arguments to '__catch' that depend on a template
parameter, so a declaration of '__catch' must be available [-fpermissive]^M
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant:446:
note: (if you use '-fpermissive', G++ will accept your code, but
allowing the use of an undeclared name is deprecated)^M
.../gcc-final/arm-none-eabi/armv6-m/libstdc++-v3/include/variant:447:
error: expected ';' before '{' token^M

(and more of the same ...)

Adding '#include <bits/exception_defines.h>' to
'include/c++/7.0.0/variant' "fixes" that. Not sure its the right
approach though.

For Cortex-M3 it builds but run.cc fails at execution time. I will look
further into this. The reason it succeeds for Cortex-M3 is because
'<utility>' includes '<exception>' and exception has the following code:
#if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1)
#include <bits/exception_ptr.h>
#include <bits/nested_exception.h>
#endif

Which includes bits/exception_ptr.h and thus bits/exception_defines.h
for targets with ATOMIC_INT_LOCK_FREE which is the case for Cortex-M3
but not Cortex-M0.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]