[ 
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.

Reply via email to