stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farid Zaripov (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (STDCXX-666) [MSVC 8-x64] 21.string.cons.cpp test fails in optimized builds due to bad codegeneration by the compiler
Date Wed, 19 Dec 2007 14:38:43 GMT

     [ https://issues.apache.org/jira/browse/STDCXX-666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Farid Zaripov resolved STDCXX-666.
----------------------------------

    Resolution: Fixed

The issue resolved thus resolving the STDCXX-226.

> [MSVC 8-x64] 21.string.cons.cpp test fails in optimized builds due to bad codegeneration
by the compiler
> --------------------------------------------------------------------------------------------------------
>
>                 Key: STDCXX-666
>                 URL: https://issues.apache.org/jira/browse/STDCXX-666
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    Affects Versions: 4.2.0
>         Environment: MSVC 8.0-x64, builds 8{d|s}, 12{d|s}
>            Reporter: Farid Zaripov
>            Assignee: Farid Zaripov
>             Fix For: 4.2.1
>
>
> The 21.string.cons.cpp test fails with 16 assertions on 64-bit MSVC in optimized builds.
> The reason is the bad codegeneration in __rw_new_capacity() inlined in std::basic_string
ctors. Because of this bug the __rw_new_capacity(0, const std::basic_string<> *) returns
value greater that size_max() and ctor throws exception.
> The temporary workaround might be definition of the __rw_new_capacity() as __declspec
(noinline).
> ------------------------------
> Index: include/string
> ===================================================================
> --- include/string	(revision 593511)
> +++ include/string	(working copy)
> @@ -1528,8 +1528,13 @@
>  // more specialized version for basic_string<>; may be further specialized  //
in user code for example on a user-defined allocator
>  
> +#if !defined (_WIN64) || !defined (_MSC_VER) || defined
> (__INTEL_COMPILER)
>  template <class _CharT, class _Traits, class _Allocator>  inline _RWSTD_STRING_SIZE_TYPE
> +#else    // _WIN64 && _MSC_VER && !__INTEL_COMPILER
> +template <class _CharT, class _Traits, class _Allocator> __declspec 
> +(noinline) _RWSTD_STRING_SIZE_TYPE
> +#endif   // !_WIN64 || !_MSC_VER || __INTEL_COMPILER
>  __rw_new_capacity (_RWSTD_STRING_SIZE_TYPE __size,
>                     const _STD::basic_string<_CharT, _Traits,
> _Allocator>*)
>  {
> ------------------------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message