Re: compile with gcc option -O0 or -O

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16/09/2011 11:12, zou wonder wrote:
hi david:
i have tried to enable all the warning option you provided :
and here are some warnings:


As I mentioned in another post, those were warning flags /I/ use, and may not suit other people's code. In particular, you want to disable flags for warnings that don't affect the correctness of the code but lead to lots of warnings. In your case here, all the warnings have come from two flags: -Winline, and -Wpadded.

-Winline warns you when the compiler does not inline a function that is otherwise marked for inlining (either explicitly, or implicitly from a class definition). Normally I would say that this indicates that something is not happening as you expect it to, perhaps due to an error in your code. But as gcc gets steadily smarter, it finds good reasons to ignore the "inline" hint.

-Wpadded warns when structs have extra space added for alignment purposes. For the type of code I write, if there is extra space in the struct then I've made a mistake in the definition, so I like this warning. For many other types of code, the warnings are just annoying noise. It really depends on whether the struct has to match an existing external structure, or if it is only used within the program.

So remove these two and compile again. Alternatively, begin with just "-Wall -Wextra" and see if they help you spot your mistake - most code should compile cleanly with these enabled.

mvh.,

David



                 from xmmmapte.cc:3:
/work/smsc/include/stlport/stl/_ostream.h:357: warning: inlining
failed in call to ‘stlpmtx_std::basic_ostream<_CharT, _Traits>&
stlpmtx_std::endl(stlpmtx_std::basic_ostream<_CharT, _Traits>&) [with
_CharT = char, _Traits = stlpmtx_std::char_traits<char>]’: call is
unlikely and code size would grow
/work/smsc/include/stlport/stl/_ostream.h:78: warning: called from here
In file included from xmmmapte.cc:3:
/work/smsc/include/stlport/stl/_string.h: In function ‘void
set_map_perror_from_report_cause(VARIABLE_STR*, VTASK*)’:
/work/smsc/include/stlport/stl/_string.h:372: warning: inlining failed
in call to ‘stlpmtx_std::basic_string<_CharT, _Traits,
_Alloc>::~basic_string() [with _CharT = char, _Traits =
stlpmtx_std::char_traits<char>, _Alloc =
stlpmtx_std::allocator<char>]’: call is unlikely and code size would
grow
xmmmap.cc:2166: warning: called from here
/work/smsc/include/stlport/stl/_string.h:372: warning: inlining failed
in call to ‘stlpmtx_std::basic_string<_CharT, _Traits,
_Alloc>::~basic_string() [with _CharT = char, _Traits =
stlpmtx_std::char_traits<char>, _Alloc =
stlpmtx_std::allocator<char>]’: call is unlikely and code size would
grow
xmmmap.cc:2166: warning: called from here
/work/smsc/include/stlport/stl/_string.h:372: warning: inlining failed
in call to ‘stlpmtx_std::basic_string<_CharT, _Traits,
_Alloc>::~basic_string() [with _CharT = char, _Traits =
stlpmtx_std::char_traits<char>, _Alloc =
stlpmtx_std::allocator<char>]’: call is unlikely and code size would
grow
xmmmap.cc:2166: warning: called from here
/work/smsc/include/stlport/stl/_string.h:372: warning: inlining failed
in call to ‘stlpmtx_std::basic_string<_CharT, _Traits,
_Alloc>::~basic_string() [with _CharT = char, _Traits =
stlpmtx_std::char_traits<char>, _Alloc =
stlpmtx_std::allocator<char>]’: call is unlikely and code size would
grow
xmmmap.cc:2166: warning: called from here
/work/smsc/include/stlport/stl/_string.h:372: warning: inlining failed
in call to ‘stlpmtx_std::basic_string<_CharT, _Traits,
_Alloc>::~basic_string() [with _CharT = char, _Traits =
stlpmtx_std::char_traits<char>, _Alloc =
stlpmtx_std::allocator<char>]’: call is unlikely and code size would
grow
xmmmap.cc:2168: warning: called from here
/work/smsc/include/stlport/stl/_string.h:372: warning: inlining failed
in call to ‘stlpmtx_std::basic_string<_CharT, _Traits,
_Alloc>::~basic_string() [with _CharT = char, _Traits =
stlpmtx_std::char_traits<char>, _Alloc =
stlpmtx_std::allocator<char>]’: call is unlikely and code size would
grow
xmmmap.cc:2168: warning: called from here
In file included from /work/smsc/include/stlport/stl/_string_io.h:23,

                  from /work/smsc/include/xmmhdrmx.h:24,
                  from xmmmanmx.cc:21:
/work/smsc/include/xrslimmx.h:213: warning: padding struct to align
‘xrsIpSocketParameters_s::portNumber’
In file included from /work/smsc/include/xsc_common_mx.h:25,
                  from /work/smsc/include/xscalamx.h:31,
                  from /work/smsc/include/xmmhdrmx.h:24,
                  from xmmmanmx.cc:21:
/work/smsc/include/xrsdefmx.h:54: warning: padding struct size to
alignment boundary
/work/smsc/include/xrsdefmx.h:59: warning: padding struct size to
alignment boundary
/work/smsc/include/xrsdefmx.h:89: warning: padding struct to align
‘<anonymous struct>::smUserData’
/work/smsc/include/xrsdefmx.h:93: warning: padding struct to align
‘<anonymous struct>::tariffClass’
/work/smsc/include/xrsdefmx.h:83: warning: padding struct size to
alignment boundary
/work/smsc/include/xrsdefmx.h:106: warning: padding struct to align
‘<anonymous struct>::msgRef’
/work/smsc/include/xrsdefmx.h:114: warning: padding struct to align
‘<anonymous struct>::msgRef’
/work/smsc/include/xrsdefmx.h:116: warning: padding struct to align
‘<anonymous struct>::destIMSIAddr’
/work/smsc/include/xrsdefmx.h:118: warning: padding struct to align
‘<anonymous struct>::smUserData’
/work/smsc/include/xrsdefmx.h:125: warning: padding struct to align
‘<anonymous struct>::msgRef’
/work/smsc/include/xrsdefmx.h:127: warning: padding struct to align
‘<anonymous struct>::smUserData’
/work/smsc/include/xrsdefmx.h:130: warning: padding struct to align
‘<anonymous struct>::origIMSIAddr’
/work/smsc/include/xrsdefmx.h:137: warning: padding struct to align
‘<anonymous struct>::msgRef’
/work/smsc/include/xrsdefmx.h:146: warning: padding struct to align
‘<anonymous struct>::msgRef’
/work/smsc/include/xrsdefmx.h:162: warning: padding struct to align
‘<anonymous struct>::destIMSIAddr’
/work/smsc/include/xrsdefmx.h:164: warning: padding struct to align
‘<anonymous struct>::smUserData’
/work/smsc/include/xrsdefmx.h:172: warning: padding struct to align
‘<anonymous struct>::moSmLimit’
/work/smsc/include/xrsdefmx.h:198: warning: padding struct size to
alignment boundary
/work/smsc/include/xrsdefmx.h:205: warning: padding struct to align
‘<anonymous struct>::imsiAddr’
/work/smsc/include/xrsdefmx.h:203: warning: padding struct size to
alignment boundary
/work/smsc/include/xrsdefmx.h:212: warning: padding struct to align
‘<anonymous struct>::cause’
/work/smsc/include/xrsdefmx.h:225: warning: padding struct size to
alignment boundary
/work/smsc/include/xrsdefmx.h:317: warning: padding struct to align ‘WPrim::req’

thanks
On Fri, Sep 16, 2011 at 2:31 PM, Ian Lance Taylor<iant@xxxxxxxxxx>  wrote:
zou wonder<wonder.zou@xxxxxxxxx>  writes:

another is what is the difference between -O0 and -O?

Please reply to the mailing list, not just to me.  Thanks.

-O0 means no optimization.  -O, which is the same as -O1, means to
optimize the code.  This is explained in the manual.


On Fri, Sep 16, 2011 at 2:16 PM, zou wonder<wonder.zou@xxxxxxxxx>  wrote:
Hi Ian:

     Acctually, i intercept the codes from our product, and there are
tons of lines.

so how can i provide that useful information?

I don't know.  What I do know is that we can't help you without seeing
much more of the program.  The tiny bit of code you showed looked fine.
The problem was probably somewhere else.

Ian


On Fri, Sep 16, 2011 at 1:40 PM, Ian Lance Taylor<iant@xxxxxxxxxx>  wrote:
zou wonder<wonder.zou@xxxxxxxxx>  writes:

but one weird problem is that the following codes compiled with option -O0

You need to show us a small complete self-contained example.

Normally a program which works at -O0 and fails at -O1 has an
uninitialized variable somewhere.

Ian








[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux