From: Jason Merrill Date: Mon, 12 Nov 2012 17:51:26 +0000 (-0500) Subject: * include/std/complex (real, imag): Add ABI tag in C++11 mode. X-Git-Tag: upstream/12.2.0~72867 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7a3a9e6821ff5ed3e6f41e58d1d47bbbbd4e3e2b;p=platform%2Fupstream%2Fgcc.git * include/std/complex (real, imag): Add ABI tag in C++11 mode. From-SVN: r193445 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7276018..391e5d9 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2012-11-11 Jason Merrill + + * include/std/complex (real, imag): Add ABI tag in C++11 mode. + 2012-11-11 Andreas Schwab * doc/xml/chapter.txml: Remove whitespace inside . diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index f9221a8..b13b11b 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -141,9 +141,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) constexpr _Tp real() { return _M_real; } + __attribute ((__abi_tag__ ("cxx11"))) constexpr _Tp imag() { return _M_imag; } #else @@ -1061,9 +1063,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) constexpr float real() { return __real__ _M_value; } + __attribute ((__abi_tag__ ("cxx11"))) constexpr float imag() { return __imag__ _M_value; } #else @@ -1210,9 +1214,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) constexpr double real() { return __real__ _M_value; } + __attribute ((__abi_tag__ ("cxx11"))) constexpr double imag() { return __imag__ _M_value; } #else @@ -1360,9 +1366,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) constexpr long double real() { return __real__ _M_value; } + __attribute ((__abi_tag__ ("cxx11"))) constexpr long double imag() { return __imag__ _M_value; } #else diff --git a/libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc b/libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc new file mode 100644 index 0000000..a845466 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc @@ -0,0 +1,25 @@ +// Test that the C++11 variants of real/imag have an ABI tag +// { dg-do compile } +// { dg-options -std=c++11 } + +#include + +// { dg-final { scan-assembler "_ZNKSt7complexIfE4realB5cxx11Ev" } } +float (std::complex::*p1)() const = &std::complex::real; +// { dg-final { scan-assembler "_ZNKSt7complexIdE4realB5cxx11Ev" } } +double (std::complex::*p2)() const = &std::complex::real; +// { dg-final { scan-assembler "_ZNKSt7complexIeE4realB5cxx11Ev" } } +long double (std::complex::*p3)() const + = &std::complex::real; +// { dg-final { scan-assembler "_ZNKSt7complexIiE4realB5cxx11Ev" } } +int (std::complex::*p4)() const = &std::complex::real; + +// { dg-final { scan-assembler "_ZNKSt7complexIfE4imagB5cxx11Ev" } } +float (std::complex::*p5)() const = &std::complex::imag; +// { dg-final { scan-assembler "_ZNKSt7complexIdE4imagB5cxx11Ev" } } +double (std::complex::*p6)() const = &std::complex::imag; +// { dg-final { scan-assembler "_ZNKSt7complexIeE4imagB5cxx11Ev" } } +long double (std::complex::*p7)() const + = &std::complex::imag; +// { dg-final { scan-assembler "_ZNKSt7complexIiE4imagB5cxx11Ev" } } +int (std::complex::*p8)() const = &std::complex::imag;