[
https://issues.apache.org/jira/browse/STDCXX-415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12569465#action_12569465
]
Martin Sebor commented on STDCXX-415:
-------------------------------------
FWIW, many/most of these warnings have disappeared since gcc 3.3. I'm not sure
if it's because the inliner has been changed to handle bigger functions or
because the gcc maintainers have simply silenced the warnings. It might be
worthwhile to look at the disassembly to see what the deal is. If it turns out
that the function still is too big to be inlined (it looks like it might be),
breaking it up into 2, an inline one that handles, say, 1 and 2-byte
characters, and an out-of-line one that does the rest, might be a reasonably
efficient compromise.
> [gcc 3.3.3] __rw_utf8toucs4() too big to be inlined
> ---------------------------------------------------
>
> Key: STDCXX-415
> URL: https://issues.apache.org/jira/browse/STDCXX-415
> Project: C++ Standard Library
> Issue Type: Bug
> Components: Build
> Affects Versions: 4.1.3
> Environment: gcc 3.3.3 (SuSE Linux)
> Reporter: Martin Sebor
> Assignee: Travis Vitek
> Priority: Minor
> Fix For: 4.2.1
>
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> We're getting a few warnings for the __rw_utf8toucs4() inline function
> indicating that the function is too big to be inlined. It might be a good
> idea to split it up into two, a simple inline wrapper to handle the common
> case for single and perhaps two-byte characters and a bigger out-of-line
> implementation to handle the more complicated multibyte characters.
> {noformat}
> c++ -O2 -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings
> -Wno-long-long -Wcast-align -fPIC /amd/devco/sebor/stdcxx/src/wctype.cpp
> gencat rwstderr.cat /amd/devco/sebor/stdcxx/src/rwstderr.msg
> /amd/devco/sebor/stdcxx/src/wcodecvt.cpp: In member function `virtual int
> std::codecvt_byname<wchar_t, char, __mbstate_t>::do_length(__mbstate_t&,
> const char*, const char*, unsigned int) const':
> /amd/devco/sebor/stdcxx/include/loc/_localedef.h:735: warning: inlining
> failed
> in call to `const char* __rw::__rw_utf8toucs4(int*, const char*, const
> char*)'
> /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:964: warning: called from here
> In file included from /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:1065,
> from /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:1621:
> /amd/devco/sebor/stdcxx/include/loc/_localedef.h:735: warning: inlining
> failed
> in call to `const char* __rw::__rw_utf8toucs4(int*, const char*, const
> char*)'
> /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:964: warning: called from here
> /amd/devco/sebor/stdcxx/src/wcodecvt.cpp: In member function `virtual
> std::codecvt_base::result std::codecvt_byname<wchar_t, char,
> __mbstate_t>::do_in(__mbstate_t&, const char*, const char*, const char*&,
> wchar_t*, wchar_t*, wchar_t*&) const':
> /amd/devco/sebor/stdcxx/include/loc/_localedef.h:735: warning: inlining
> failed
> in call to `const char* __rw::__rw_utf8toucs4(int*, const char*, const
> char*)'
> /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:736: warning: called from here
> In file included from /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:1396:
> /amd/devco/sebor/stdcxx/include/loc/_localedef.h:735: warning: inlining
> failed
> in call to `const char* __rw::__rw_utf8toucs4(int*, const char*, const
> char*)'
> /amd/devco/sebor/stdcxx/src/wcodecvt.cpp:736: warning: called from here
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.