-Wsign-promo (Re: [BUILD FAILS DEBUG MODE] with test_strings_valuex.cxx)

Lubos Lunak l.lunak at suse.cz
Sat Jan 19 02:28:35 PST 2013


On Friday 18 of January 2013, julien2412 wrote:
> Hello,
>
> On pc Debian x86-64 with master sources after having runned "make clean",
> I've got this:
> /home/julien/compile-libreoffice/libo/sal/qa/rtl/strings/test_strings_value
>x.cxx: In instantiation of ‘void testInt() [with T = rtl::OUString]’:
> /home/julien/compile-libreoffice/libo/sal/qa/rtl/strings/test_strings_value
>x.cxx:77:28: required from here
> /home/julien/compile-libreoffice/libo/sal/qa/rtl/strings/test_strings_value
>x.cxx:48:5: error: passing ‘unsigned char’ chooses ‘int’ over ‘unsigned int’
> [-Werror=sign-promo]

 -Wsign-promo is a rather pointless warning these days (the section in the gcc 
manpage is a funny read and not only because it talks about Cfront). I've 
added more overloads to silence it, but I rather wonder why we have this 
explicitly enabled at all.

 My hypothesis is like this:
- the idea behind the warning is just nonsense (who cares to what integer type 
the value is promoted)
- but it incidentally triggers when passing bool to SvStream, because it 
doesn't have any overload for operator<<(bool), and int is chosen over 
unsigned char AKA sal_Bool , so Caolan added it in 
e8bbb76827dd7a0e30d7d1db34a812a84d85f390
- if SvStream gets overload for bool, the warning can be dumped

 Or am I missing something there?

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list