Re: Performance samples for LibreOffice ...

classic Classic list List threaded Threaded
26 messages Options
Next » 12
Michael Meeks-5 Michael Meeks-5
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

Hi Matus,

        Any chance you can fix / commit this one ? :-)

        Jan - wow - that is a nice error =) are there any other ODR issues ?
they habitually bite us hard so ... great to get libmerged debugged even
more. CC'ing the list too.

        Thanks !

                Michael.


On Fri, 2014-08-22 at 17:05 +0200, Jan Hubicka wrote:

> Hi,
> this is another warning that may be worth fixing
> /aux/hubicka/libreoffice/sc/source/ui/vba/vbastyles.cxx:68:7: warning: type �struct EnumWrapper� violates one definition rule [-Wodr]
>  class EnumWrapper : public EnumerationHelper_BASE
>        ^
> /aux/hubicka/libreoffice/sc/source/ui/vba/vbaoleobjects.cxx:74:7: note: a different type is defined in another translation unit
>  class EnumWrapper : public EnumerationHelper_BASE
>        ^
> /aux/hubicka/libreoffice/sc/source/ui/vba/vbastyles.cxx:70:50: note: the first difference of corresponding definitions is field �m_xIndexAccess�
>          uno::Reference<container::XIndexAccess > m_xIndexAccess;
>                                                   ^
> /aux/hubicka/libreoffice/sc/source/ui/vba/vbaoleobjects.cxx:77:43: note: a field with different name is defined in another translation unit
>          uno::Reference<XHelperInterface > m_xParent;
>

--
 [hidden email]  <><, Pseudo Engineer, itinerant idiot

_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

> Hi Matus,
>
> Any chance you can fix / commit this one ? :-)
>
> Jan - wow - that is a nice error =) are there any other ODR issues ?
> they habitually bite us hard so ... great to get libmerged debugged even
> more. CC'ing the list too.

I have patch in way for type & virtual tables ODR checking (the problem is that
it requires us to stream mangled type names to establish ODR equivalency at
link time. This adds extra 2% of streaming that I need to justify).  Current
mainline (I used for my test) reports ODR violation only for types with virtual
tables.  I will check if I notice more and will try to run it with full ODR
checking enabled.

I also want to add a way to dump the translation unit, because often these are
caused by different #defines or by -funsigned-char/-fsigned-char differences.
In those cases the erros output are quite puzzling ;)

Honza

>
> Thanks !
>
> Michael.
>
>
> On Fri, 2014-08-22 at 17:05 +0200, Jan Hubicka wrote:
> > Hi,
> > this is another warning that may be worth fixing
> > /aux/hubicka/libreoffice/sc/source/ui/vba/vbastyles.cxx:68:7: warning: type �struct EnumWrapper� violates one definition rule [-Wodr]
> >  class EnumWrapper : public EnumerationHelper_BASE
> >        ^
> > /aux/hubicka/libreoffice/sc/source/ui/vba/vbaoleobjects.cxx:74:7: note: a different type is defined in another translation unit
> >  class EnumWrapper : public EnumerationHelper_BASE
> >        ^
> > /aux/hubicka/libreoffice/sc/source/ui/vba/vbastyles.cxx:70:50: note: the first difference of corresponding definitions is field �m_xIndexAccess�
> >          uno::Reference<container::XIndexAccess > m_xIndexAccess;
> >                                                   ^
> > /aux/hubicka/libreoffice/sc/source/ui/vba/vbaoleobjects.cxx:77:43: note: a field with different name is defined in another translation unit
> >          uno::Reference<XHelperInterface > m_xParent;
> >
>
> --
>  [hidden email]  <><, Pseudo Engineer, itinerant idiot
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by Michael Meeks-5
> Hi Matus,
>
> Any chance you can fix / commit this one ? :-)
>
> Jan - wow - that is a nice error =) are there any other ODR issues ?
> they habitually bite us hard so ... great to get libmerged debugged even
> more. CC'ing the list too.
Another one I noticed :)
/aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: warning: type �struct ODbaseIndex� violates one definition rule [-Wodr]
         class ODbaseIndex : public ODbaseIndex_BASE
               ^
/aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: note: a different type is defined in another translation unit
         class ODbaseIndex : public ODbaseIndex_BASE
               ^
/aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: the first difference of corresponding definitions is field �m_aHeader�
             NDXHeader       m_aHeader;
                             ^
/aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: a field of same name but different type is defined in another translation unit
             NDXHeader       m_aHeader;
                             ^
/aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: type �struct NDXHeader� should match type �struct NDXHeader�
             struct NDXHeader
                    ^
/aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: the incompatible type is defined here
             struct NDXHeader

Thisone will be harder to track - I can get better diagnostic with ODR merging patch once I get around updating it for mainline


/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:28:5: warning: type of �OpenOffice_sent_brk� does not match original declaration
     OpenOffice_sent_brk[];
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/sent_brk.c:10:3: note: previously declared here
 } OpenOffice_sent_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:27:5: warning: type of �OpenOffice_line_brk� does not match original declaration
     OpenOffice_line_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/line_brk.c:10:3: note: previously declared here
 } OpenOffice_line_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:26:5: warning: type of �OpenOffice_edit_word_hu_brk� does not match original declaration
     OpenOffice_edit_word_hu_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/edit_word_hu_brk.c:10:3: note: previously declared here
 } OpenOffice_edit_word_hu_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:25:5: warning: type of �OpenOffice_edit_word_he_brk� does not match original declaration
     OpenOffice_edit_word_he_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/edit_word_he_brk.c:10:3: note: previously declared here
 } OpenOffice_edit_word_he_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:24:5: warning: type of �OpenOffice_edit_word_brk� does not match original declaration
     OpenOffice_edit_word_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/edit_word_brk.c:10:3: note: previously declared here
 } OpenOffice_edit_word_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:23:5: warning: type of �OpenOffice_dict_word_prepostdash_brk� does not match original declaration  
     OpenOffice_dict_word_prepostdash_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_prepostdash_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_prepostdash_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:22:5: warning: type of �OpenOffice_dict_word_nodash_brk� does not match original declaration
     OpenOffice_dict_word_nodash_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_nodash_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_nodash_brk={ 0.0, {
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_hu_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_hu_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:20:5: warning: type of �OpenOffice_dict_word_he_brk� does not match original declaration
     OpenOffice_dict_word_he_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_he_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_he_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:19:5: warning: type of �OpenOffice_dict_word_fi_brk� does not match original declaration
     OpenOffice_dict_word_fi_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_fi_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_fi_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:18:5: warning: type of �OpenOffice_dict_word_brk� does not match original declaration
     OpenOffice_dict_word_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:17:5: warning: type of �OpenOffice_count_word_fi_brk� does not match original declaration
     OpenOffice_count_word_fi_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/count_word_fi_brk.c:10:3: note: previously declared here
 } OpenOffice_count_word_fi_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:16:5: warning: type of �OpenOffice_count_word_brk� does not match original declaration
     OpenOffice_count_word_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/count_word_brk.c:10:3: note: previously declared here
 } OpenOffice_count_word_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:15:5: warning: type of �OpenOffice_char_in_brk� does not match original declaration
     OpenOffice_char_in_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/char_in_brk.c:10:3: note: previously declared here
 } OpenOffice_char_in_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:14:5: warning: type of �OpenOffice_char_brk� does not match original declaration
     OpenOffice_char_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/char_brk.c:10:3: note: previously declared here
 } OpenOffice_char_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/i18npool/source/breakiterator/breakiterator_unicode.cxx:34:0: warning: type of �OpenOffice_dat� does not match original declaration
 extern const char OpenOffice_dat[];
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:36:7: warning: type �struct transliteration_Ignore� violates one definition rule [-Wodr]
 class transliteration_Ignore : public transliteration_commonclass
       ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:36:0: note: a different type is defined in another translation unit
 class transliteration_Ignore : public transliteration_commonclass
 ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:74:24: note: the first difference of corresponding definitions is field �map�
         const Mapping *map;
                        ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:74:24: note: a field of same name but different type is defined in another translation unit
         const Mapping *map;
                        ^
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.hxx:42:0: warning: type of �aSvLevelNameTOCMap� does not match original declaration
 extern const SvXMLEnumMapEntry aSvLevelNameTOCMap[];
 ^
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.hxx:42:0: warning: type of �aSvLevelNameTOCMap� does not match original declaration
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.cxx:342:25: note: previously declared here
 const SvXMLEnumMapEntry aSvLevelNameTOCMap[] =
                         ^

_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Lionel Elie Mamane Lionel Elie Mamane
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

On Fri, Aug 22, 2014 at 09:06:24PM +0200, Jan Hubicka wrote:

> Another one I noticed :)
> /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: warning: type �struct ODbaseIndex� violates one definition rule [-Wodr]
>          class ODbaseIndex : public ODbaseIndex_BASE
>                ^
> /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: note: a different type is defined in another translation unit
>          class ODbaseIndex : public ODbaseIndex_BASE
>                ^
> /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: the first difference of corresponding definitions is field �m_aHeader�
>              NDXHeader       m_aHeader;
>                              ^
> /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: a field of same name but different type is defined in another translation unit
>              NDXHeader       m_aHeader;
>                              ^
> /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: type �struct NDXHeader� should match type �struct NDXHeader�
>              struct NDXHeader
>                     ^
> /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: the incompatible type is defined here
>              struct NDXHeader
>
> Thisone will be harder to track - I can get better diagnostic with ODR merging patch once I get around updating it for mainline

This looks like it is saying that there are two different
(incompatible) definitions of type
connectivity::dbase::ODbaseIndex::NDXHeader, but "git grep NDXHeader"
finds only one.

Care to explain the problem? Thanks.

--
Lionel
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

Hello,
I finally had chance to put the data together:
http://hubicka.blogspot.ca/2014/09/linktime-optimization-in-gcc-part-3.html
any comments are welcome.

> On Fri, Aug 22, 2014 at 09:06:24PM +0200, Jan Hubicka wrote:
>
> > Another one I noticed :)
> > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: warning: type �struct ODbaseIndex� violates one definition rule [-Wodr]
> >          class ODbaseIndex : public ODbaseIndex_BASE
> >                ^
> > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: note: a different type is defined in another translation unit
> >          class ODbaseIndex : public ODbaseIndex_BASE
> >                ^
> > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: the first difference of corresponding definitions is field �m_aHeader�
> >              NDXHeader       m_aHeader;
> >                              ^
> > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: a field of same name but different type is defined in another translation unit
> >              NDXHeader       m_aHeader;
> >                              ^
> > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: type �struct NDXHeader� should match type �struct NDXHeader�
> >              struct NDXHeader
> >                     ^
> > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: the incompatible type is defined here
> >              struct NDXHeader
> >
> > Thisone will be harder to track - I can get better diagnostic with ODR merging patch once I get around updating it for mainline
>
> This looks like it is saying that there are two different
> (incompatible) definitions of type
> connectivity::dbase::ODbaseIndex::NDXHeader, but "git grep NDXHeader"
> finds only one.
>
> Care to explain the problem? Thanks.

The problem here will be most probably cause by difference in one of types NDXHeader is built from.
(or by #define somewhere earlier that makes it to diverge)

Currently GCC report just topelvel type difference, I have patch for the ODR merging that reports
the inner type too. I will try to update it for mainline today or tomorrow and get back to you.

Honza
>
> --
> Lionel
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Lionel Elie Mamane Lionel Elie Mamane
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

On Wed, Sep 10, 2014 at 01:20:28AM +0200, Jan Hubicka wrote:

> > On Fri, Aug 22, 2014 at 09:06:24PM +0200, Jan Hubicka wrote:
> >
> > > Another one I noticed :)
> > > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: warning: type �struct ODbaseIndex� violates one definition rule [-Wodr]
> > >          class ODbaseIndex : public ODbaseIndex_BASE
> > >                ^
> > > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:41:15: note: a different type is defined in another translation unit
> > >          class ODbaseIndex : public ODbaseIndex_BASE
> > >                ^
> > > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: the first difference of corresponding definitions is field �m_aHeader�
> > >              NDXHeader       m_aHeader;
> > >                              ^
> > > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:74:29: note: a field of same name but different type is defined in another translation unit
> > >              NDXHeader       m_aHeader;
> > >                              ^
> > > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: type �struct NDXHeader� should match type �struct NDXHeader�
> > >              struct NDXHeader
> > >                     ^
> > > /aux/hubicka/libreoffice/connectivity/source/inc/dbase/DIndex.hxx:55:20: note: the incompatible type is defined here
> > >              struct NDXHeader
> > >
> > > Thisone will be harder to track - I can get better diagnostic with ODR merging patch once I get around updating it for mainline
> >
> > This looks like it is saying that there are two different
> > (incompatible) definitions of type
> > connectivity::dbase::ODbaseIndex::NDXHeader, but "git grep NDXHeader"
> > finds only one.
> >
> > Care to explain the problem? Thanks.
>
> The problem here will be most probably cause by difference in one of types NDXHeader is built from.
> (or by #define somewhere earlier that makes it to diverge)

Here's the struct:

struct NDXHeader
{
    sal_uInt32  db_rootpage;                    /* Rootpage position                */
    sal_uInt32  db_pagecount;                   /* Page count                       */
    sal_uInt8   db_frei[4];                     /* Reserved                         */
    sal_uInt16  db_keylen;                      /* Key length                       */
    sal_uInt16  db_maxkeys;                     /* Maximum number of keys per page  */
    sal_uInt16  db_keytype;                     /* Type of key:
                                                   0 = Text
                                                   1 = Numerical                    */
    sal_uInt16  db_keyrec;                      /* Length of an index record
                                                   RecordNumber + keylen            */
    sal_uInt8   db_frei1[3];                    /* Reserved                         */
    sal_uInt8   db_unique;                      /* Unique                           */
    char        db_name[488];                   /* index_name (field name)          */
};

sal_uIntXX are LibreOffice internal #define for the unsigned integer
type of size XX bits. I find it rather unlikely they would differ
across the LibreOffice codebase; if they do, we have a "bigger"
problem.

What do you think about this conjecture: maybe gcc compiles the
structure with different alignment in different contexts? (Possibly
because the LibreOffice build system forces it to with compiler flags?)

> Currently GCC report just topelvel type difference, I have patch for
> the ODR merging that reports the inner type too. I will try to
> update it for mainline today or tomorrow and get back to you.

Great, thanks. I'm waiting for the result with great curiosity.

--
Lionel
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

>
> Here's the struct:
>
> struct NDXHeader
> {
>     sal_uInt32  db_rootpage;                    /* Rootpage position                */
>     sal_uInt32  db_pagecount;                   /* Page count                       */
>     sal_uInt8   db_frei[4];                     /* Reserved                         */
>     sal_uInt16  db_keylen;                      /* Key length                       */
>     sal_uInt16  db_maxkeys;                     /* Maximum number of keys per page  */
>     sal_uInt16  db_keytype;                     /* Type of key:
>                                                    0 = Text
>                                                    1 = Numerical                    */
>     sal_uInt16  db_keyrec;                      /* Length of an index record
>                                                    RecordNumber + keylen            */
>     sal_uInt8   db_frei1[3];                    /* Reserved                         */
>     sal_uInt8   db_unique;                      /* Unique                           */
>     char        db_name[488];                   /* index_name (field name)          */
> };
>
> sal_uIntXX are LibreOffice internal #define for the unsigned integer
> type of size XX bits. I find it rather unlikely they would differ
> across the LibreOffice codebase; if they do, we have a "bigger"
> problem.
>
> What do you think about this conjecture: maybe gcc compiles the
> structure with different alignment in different contexts? (Possibly
> because the LibreOffice build system forces it to with compiler flags?)

I have seen similar problem of warning in betwen units because one was compiled
with -fsigned-char and other with -funsigned-char (in Firefox). I think compiler is
valid to warn here about ODR violation since those flags are ABI breaking flags.

It is also possible it is compare bug in the new ODR checking code - but I do not
really see how it could get confused in such a rather simple structure.

>
> > Currently GCC report just topelvel type difference, I have patch for
> > the ODR merging that reports the inner type too. I will try to
> > update it for mainline today or tomorrow and get back to you.
>
> Great, thanks. I'm waiting for the result with great curiosity.

Yep, I am curious too.  I just got my trees updated after vacation so hopefully
I will get there soon (for sure libreoffice will trigger few GCC bugs first)

Honza
>
> --
> Lionel
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Michael Stahl-2 Michael Stahl-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

On 10/09/14 07:45, Jan Hubicka wrote:

> Yep, I am curious too.  I just got my trees updated after vacation so hopefully
> I will get there soon (for sure libreoffice will trigger few GCC bugs first)

yes we do have a certain reputation for that...thanks to Miklos now you
can even get the t-shirt for it:

http://vmiklos.hu/blog/so-many-bugs.html

_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

> On 10/09/14 07:45, Jan Hubicka wrote:
>
> > Yep, I am curious too.  I just got my trees updated after vacation so hopefully
> > I will get there soon (for sure libreoffice will trigger few GCC bugs first)
>
> yes we do have a certain reputation for that...thanks to Miklos now you
> can even get the t-shirt for it:
>
> http://vmiklos.hu/blog/so-many-bugs.html

:) Lovely
After all I needed to fix only two bugs to get LO build with mainline LTO again.

Anyway those are warning I currently get with ODR type merging.  The first three are
quite puzzling - the type layout differs, but by abstract field so I am unable to print
out any resonable message. This may suggest difference in virtual inheritance or someting like
that (or just plain bug in my code comparing types).  I will dig deeper into it tomorrow.

Most of the later cases seems real.

/aux/hubicka/libreoffice/i18npool/inc/nativenumbersupplier.hxx:33:0: warning: type ‘struct NativeNumberSupplier’ violates one definition rule [-Wodr]
 class NativeNumberSupplier : public cppu::WeakImplHelper2
 ^
/aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/NativeNumberSupplier.hpp:29:0: note: a type with different memory representation is defined in another translation unit
 class NativeNumberSupplier {
 ^
/aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/OrdinalSuffix.hpp:29:0: warning: type ‘struct OrdinalSuffix’ violates one definition rule [-Wodr]
 class OrdinalSuffix {
 ^
/aux/hubicka/libreoffice/i18npool/inc/ordinalsuffix.hxx:28:0: note: a type with different memory representation is defined in another translation unit
 class OrdinalSuffix : public cppu::WeakImplHelper2
 ^
/aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/TextConversion.hpp:29:0: warning: type ‘struct TextConversion’ violates one definition rule [-Wodr]
 class TextConversion {
 ^
/aux/hubicka/libreoffice/i18npool/inc/textconversion.hxx:36:0: note: a type with different memory representation is defined in another translation unit
 class TextConversion: public cppu::WeakImplHelper2
 ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:36:7: warning: type ‘struct transliteration_Ignore’ violates one definition rule [-Wodr]
 class transliteration_Ignore : public transliteration_commonclass
       ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:36:7: note: a different type is defined in another translation unit
 class transliteration_Ignore : public transliteration_commonclass
       ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:74:24: note: the first difference of corresponding definitions is field ‘map’
         const Mapping *map;
                        ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:74:24: note: a field of same name but different type is defined in another translation unit
         const Mapping *map;
                        ^
/aux/hubicka/libreoffice/include/i18nutil/casefolding.hxx:51:0: note: type ‘const struct Mapping’ should match type ‘const struct Mapping’ but is defined in different namespace  
 struct Mapping
 ^
/aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:32:3: note: the incompatible type is defined here
 } Mapping;
   ^
/aux/hubicka/libreoffice/xmloff/source/core/XMLEmbeddedObjectImportContext.cxx:44:0: warning: type ‘struct XMLServiceMapEntry_Impl’ violates one definition rule [-Wodr]
 struct XMLServiceMapEntry_Impl
 ^
/aux/hubicka/libreoffice/xmloff/source/core/xmlexp.cxx:118:0: note: a different type is defined in another translation unit
 struct XMLServiceMapEntry_Impl
 ^
/aux/hubicka/libreoffice/xmloff/source/core/XMLEmbeddedObjectImportContext.cxx:46:0: note: the first difference of corresponding definitions is field ‘eClass’
     enum XMLTokenEnum eClass;
 ^
/aux/hubicka/libreoffice/xmloff/source/core/xmlexp.cxx:120:0: note: a field with different name is defined in another translation unit
     const sal_Char *sModelService;
 ^
/aux/hubicka/libreoffice/svx/source/form/tabwin.cxx:76:0: warning: type ‘struct ColumnInfo’ violates one definition rule [-Wodr]
 struct ColumnInfo
 ^
/aux/hubicka/libreoffice/xmloff/source/table/XMLTableImport.cxx:54:0: note: a different type is defined in another translation unit
 struct ColumnInfo
 ^
/aux/hubicka/libreoffice/svx/source/form/tabwin.cxx:78:0: note: the first difference of corresponding definitions is field ‘sColumnName’
     OUString sColumnName;
 ^
/aux/hubicka/libreoffice/xmloff/source/table/XMLTableImport.cxx:56:0: note: a field with different name is defined in another translation unit
     OUString msStyleName;
 ^
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.hxx:42:0: warning: type of ‘aSvLevelNameTOCMap’ does not match original declaration
 extern const SvXMLEnumMapEntry aSvLevelNameTOCMap[];
 ^
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.hxx:42:0: warning: type of ‘aSvLevelNameTOCMap’ does not match original declaration
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.cxx:342:0: note: previously declared here
 const SvXMLEnumMapEntry aSvLevelNameTOCMap[] =
 ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:28:5: warning: type of ‘OpenOffice_sent_brk’ does not match original declaration
     OpenOffice_sent_brk[];
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/sent_brk.c:10:3: note: previously declared here
 } OpenOffice_sent_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:27:5: warning: type of ‘OpenOffice_line_brk’ does not match original declaration
     OpenOffice_line_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/line_brk.c:10:3: note: previously declared here
 } OpenOffice_line_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:26:5: warning: type of ‘OpenOffice_edit_word_hu_brk’ does not match original declaration
     OpenOffice_edit_word_hu_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/edit_word_hu_brk.c:10:3: note: previously declared here
 } OpenOffice_edit_word_hu_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:25:5: warning: type of ‘OpenOffice_edit_word_he_brk’ does not match original declaration
     OpenOffice_edit_word_he_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/edit_word_he_brk.c:10:3: note: previously declared here
 } OpenOffice_edit_word_he_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:24:5: warning: type of ‘OpenOffice_edit_word_brk’ does not match original declaration
     OpenOffice_edit_word_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/edit_word_brk.c:10:3: note: previously declared here
 } OpenOffice_edit_word_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:23:5: warning: type of ‘OpenOffice_dict_word_prepostdash_brk’ does not match original declaration
     OpenOffice_dict_word_prepostdash_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_prepostdash_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_prepostdash_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:22:5: warning: type of ‘OpenOffice_dict_word_nodash_brk’ does not match original declaration
     OpenOffice_dict_word_nodash_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_nodash_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_nodash_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:21:5: warning: type of ‘OpenOffice_dict_word_hu_brk’ does not match original declaration
     OpenOffice_dict_word_hu_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_hu_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_hu_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:20:5: warning: type of ‘OpenOffice_dict_word_he_brk’ does not match original declaration
     OpenOffice_dict_word_he_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_he_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_he_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:19:5: warning: type of ‘OpenOffice_dict_word_fi_brk’ does not match original declaration
     OpenOffice_dict_word_fi_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_fi_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_fi_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:18:5: warning: type of ‘OpenOffice_dict_word_brk’ does not match original declaration
     OpenOffice_dict_word_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/dict_word_brk.c:10:3: note: previously declared here
 } OpenOffice_dict_word_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:17:5: warning: type of ‘OpenOffice_count_word_fi_brk’ does not match original declaration
     OpenOffice_count_word_fi_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/count_word_fi_brk.c:10:3: note: previously declared here
 } OpenOffice_count_word_fi_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:16:5: warning: type of ‘OpenOffice_count_word_brk’ does not match original declaration
     OpenOffice_count_word_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/count_word_brk.c:10:3: note: previously declared here
 } OpenOffice_count_word_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:15:5: warning: type of ‘OpenOffice_char_in_brk’ does not match original declaration
     OpenOffice_char_in_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/char_in_brk.c:10:3: note: previously declared here
 } OpenOffice_char_in_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:14:5: warning: type of ‘OpenOffice_char_brk’ does not match original declaration
     OpenOffice_char_brk[],
     ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/char_brk.c:10:3: note: previously declared here
 } OpenOffice_char_brk={ 0.0, {
   ^
/aux/hubicka/libreoffice/i18npool/source/breakiterator/breakiterator_unicode.cxx:34:0: warning: type of ‘OpenOffice_dat’ does not match original declaration
 extern const char OpenOffice_dat[];
 ^
/aux/hubicka/libreoffice/50-lto/workdir/CustomTarget/i18npool/breakiterator/OpenOffice_dat.c:40:13: note: previously declared here
 } U_EXPORT2 OpenOffice_dat = {
             ^
/aux/hubicka/libreoffice/include/vcl/font.hxx:42:21: warning: type ‘struct Font’ violates one definition rule [-Wodr]
 class VCL_DLLPUBLIC Font
                     ^
/aux/hubicka/libreoffice/50-lto/workdir/UnpackedTarball/libgltf/src/Font.h:15:7: note: a different type is defined in another translation unit
 class Font
       ^
/aux/hubicka/libreoffice/include/vcl/font.hxx:45:25: note: the first difference of corresponding definitions is field ‘mpImplFont’
     Impl_Font*          mpImplFont;
                         ^
/aux/hubicka/libreoffice/50-lto/workdir/UnpackedTarball/libgltf/src/Font.h:34:27: note: a field with different name is defined in another translation unit
  Texture mCharTextures[256];
                           ^
/aux/hubicka/libreoffice/xmloff/source/core/XMLEmbeddedObjectImportContext.cxx:44:8: warning: type ‘struct XMLServiceMapEntry_Impl’ violates one definition rule [-Wodr]
 struct XMLServiceMapEntry_Impl
        ^
/aux/hubicka/libreoffice/xmloff/source/core/xmlexp.cxx:118:8: note: a different type is defined in another translation unit
 struct XMLServiceMapEntry_Impl
        ^
/aux/hubicka/libreoffice/xmloff/source/core/XMLEmbeddedObjectImportContext.cxx:46:23: note: the first difference of corresponding definitions is field ‘eClass’
     enum XMLTokenEnum eClass;
                       ^
/aux/hubicka/libreoffice/xmloff/source/core/xmlexp.cxx:120:21: note: a field with different name is defined in another translation unit
     const sal_Char *sModelService;
                     ^
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.hxx:42:0: warning: type of ‘aSvLevelNameTOCMap’ does not match original declaration
 extern const SvXMLEnumMapEntry aSvLevelNameTOCMap[];
 ^
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.hxx:42:0: warning: type of ‘aSvLevelNameTOCMap’ does not match original declaration
/aux/hubicka/libreoffice/xmloff/source/text/XMLIndexTemplateContext.cxx:342:25: note: previously declared here
 const SvXMLEnumMapEntry aSvLevelNameTOCMap[] =
                         ^
/aux/hubicka/libreoffice/sc/source/ui/Accessibility/AccessibleDocument.cxx:1387:8: warning: type ‘struct ScVisAreaChanged’ violates one definition rule [-Wodr]
 struct ScVisAreaChanged
        ^
/aux/hubicka/libreoffice/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx:859:0: note: a different type is defined in another translation unit
 struct ScVisAreaChanged
 ^
/aux/hubicka/libreoffice/sc/source/ui/Accessibility/AccessibleDocument.cxx:1389:27: note: the first difference of corresponding definitions is field ‘mpAccDoc’
     ScAccessibleDocument* mpAccDoc;
                           ^
/aux/hubicka/libreoffice/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx:861:39: note: a field with different name is defined in another translation unit
     const ScIAccessibleViewForwarder* mpViewForwarder;
                                       ^
/aux/hubicka/libreoffice/sc/source/ui/vba/vbaaxes.cxx:42:7: warning: type ‘struct EnumWrapper’ violates one definition rule [-Wodr]
 class EnumWrapper : public EnumerationHelper_BASE
       ^
/aux/hubicka/libreoffice/sc/source/ui/vba/vbaformatconditions.cxx:86:7: note: a different type is defined in another translation unit
 class EnumWrapper : public EnumerationHelper_BASE
       ^
/aux/hubicka/libreoffice/sc/source/ui/vba/vbaaxes.cxx:45:19: note: the first difference of corresponding definitions is field ‘nIndex’
         sal_Int32 nIndex;
                   ^
/aux/hubicka/libreoffice/sc/source/ui/vba/vbaformatconditions.cxx:89:40: note: a field with different name is defined in another translation unit
         uno::Reference<excel::XRange > m_xParentRange;
                                        ^
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
sberg sberg
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

On 09/11/2014 07:05 AM, Jan Hubicka wrote:
> Anyway those are warning I currently get with ODR type merging.  The first three are
> quite puzzling - the type layout differs, but by abstract field so I am unable to print
> out any resonable message. This may suggest difference in virtual inheritance or someting like
> that (or just plain bug in my code comparing types).  I will dig deeper into it tomorrow.
[...]

> /aux/hubicka/libreoffice/i18npool/inc/nativenumbersupplier.hxx:33:0: warning: type ‘struct NativeNumberSupplier’ violates one definition rule [-Wodr]
>   class NativeNumberSupplier : public cppu::WeakImplHelper2
>   ^
> /aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/NativeNumberSupplier.hpp:29:0: note: a type with different memory representation is defined in another translation unit
>   class NativeNumberSupplier {
>   ^
> /aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/OrdinalSuffix.hpp:29:0: warning: type ‘struct OrdinalSuffix’ violates one definition rule [-Wodr]
>   class OrdinalSuffix {
>   ^
> /aux/hubicka/libreoffice/i18npool/inc/ordinalsuffix.hxx:28:0: note: a type with different memory representation is defined in another translation unit
>   class OrdinalSuffix : public cppu::WeakImplHelper2
>   ^
> /aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/TextConversion.hpp:29:0: warning: type ‘struct TextConversion’ violates one definition rule [-Wodr]
>   class TextConversion {
>   ^
> /aux/hubicka/libreoffice/i18npool/inc/textconversion.hxx:36:0: note: a type with different memory representation is defined in another translation unit
>   class TextConversion: public cppu::WeakImplHelper2
>   ^

Those three are indeed clashes with cppumaker-generated C++ classes
corresponding to UNOIDL (new-style) services.  The clashes have been
fixed now as
<cgit.freedesktop.org/libreoffice/core/commit/?id=91ba527a63f77658ee147515f1699792059aa2e5>,
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=a6104092925a6fe9f96ca239c0292bd1539d5746>,
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=63bc11b81f8af188564a385c1e501fd7334c343d>
"Avoid name clash with generated C++ class corresponding to UNOIDL service."

Stephan
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
sberg sberg
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by Jan Hubicka-2
On 09/11/2014 07:05 AM, Jan Hubicka wrote:

> /aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:36:7: warning: type ‘struct transliteration_Ignore’ violates one definition rule [-Wodr]
>   class transliteration_Ignore : public transliteration_commonclass
>         ^
> /aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:36:7: note: a different type is defined in another translation unit
>   class transliteration_Ignore : public transliteration_commonclass
>         ^
> /aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:74:24: note: the first difference of corresponding definitions is field ‘map’
>           const Mapping *map;
>                          ^
> /aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:74:24: note: a field of same name but different type is defined in another translation unit
>           const Mapping *map;
>                          ^
> /aux/hubicka/libreoffice/include/i18nutil/casefolding.hxx:51:0: note: type ‘const struct Mapping’ should match type ‘const struct Mapping’ but is defined in different namespace
>   struct Mapping
>   ^
> /aux/hubicka/libreoffice/i18npool/inc/transliteration_Ignore.hxx:32:3: note: the incompatible type is defined here
>   } Mapping;
>     ^

Fixed as
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=d9645bf8a1c1c95aeeb9a90b89387d82795f56dd>
"Prevent erroneous pick up of unrelated css::i18n::Maping" now.  Shudder.

> /aux/hubicka/libreoffice/xmloff/source/core/XMLEmbeddedObjectImportContext.cxx:44:0: warning: type ‘struct XMLServiceMapEntry_Impl’ violates one definition rule [-Wodr]
>   struct XMLServiceMapEntry_Impl
>   ^
> /aux/hubicka/libreoffice/xmloff/source/core/xmlexp.cxx:118:0: note: a different type is defined in another translation unit
>   struct XMLServiceMapEntry_Impl
>   ^
> /aux/hubicka/libreoffice/xmloff/source/core/XMLEmbeddedObjectImportContext.cxx:46:0: note: the first difference of corresponding definitions is field ‘eClass’
>       enum XMLTokenEnum eClass;
>   ^
> /aux/hubicka/libreoffice/xmloff/source/core/xmlexp.cxx:120:0: note: a field with different name is defined in another translation unit
>       const sal_Char *sModelService;
>   ^

Fixed as
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=d4494c33e4114f194262c4ad202a3eafca41fba7>
"Avoid ODR-violating name clash" now.

> /aux/hubicka/libreoffice/svx/source/form/tabwin.cxx:76:0: warning: type ‘struct ColumnInfo’ violates one definition rule [-Wodr]
>   struct ColumnInfo
>   ^
> /aux/hubicka/libreoffice/xmloff/source/table/XMLTableImport.cxx:54:0: note: a different type is defined in another translation unit
>   struct ColumnInfo
>   ^
> /aux/hubicka/libreoffice/svx/source/form/tabwin.cxx:78:0: note: the first difference of corresponding definitions is field ‘sColumnName’
>       OUString sColumnName;
>   ^
> /aux/hubicka/libreoffice/xmloff/source/table/XMLTableImport.cxx:56:0: note: a field with different name is defined in another translation unit
>       OUString msStyleName;
>   ^

Fixed as
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=4d3c88805d1917932ee88a0f22ae93c43e8e389a>
"Avoid ODR-violating name clash" now.

Stephan
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by sberg
> On 09/11/2014 07:05 AM, Jan Hubicka wrote:
> >Anyway those are warning I currently get with ODR type merging.  The first three are
> >quite puzzling - the type layout differs, but by abstract field so I am unable to print
> >out any resonable message. This may suggest difference in virtual inheritance or someting like
> >that (or just plain bug in my code comparing types).  I will dig deeper into it tomorrow.
> [...]
> >/aux/hubicka/libreoffice/i18npool/inc/nativenumbersupplier.hxx:33:0: warning: type ‘struct NativeNumberSupplier’ violates one definition rule [-Wodr]
> >  class NativeNumberSupplier : public cppu::WeakImplHelper2
> >  ^
> >/aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/NativeNumberSupplier.hpp:29:0: note: a type with different memory representation is defined in another translation unit
> >  class NativeNumberSupplier {
> >  ^
> >/aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/OrdinalSuffix.hpp:29:0: warning: type ‘struct OrdinalSuffix’ violates one definition rule [-Wodr]
> >  class OrdinalSuffix {
> >  ^
> >/aux/hubicka/libreoffice/i18npool/inc/ordinalsuffix.hxx:28:0: note: a type with different memory representation is defined in another translation unit
> >  class OrdinalSuffix : public cppu::WeakImplHelper2
> >  ^
> >/aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/TextConversion.hpp:29:0: warning: type ‘struct TextConversion’ violates one definition rule [-Wodr]
> >  class TextConversion {
> >  ^
> >/aux/hubicka/libreoffice/i18npool/inc/textconversion.hxx:36:0: note: a type with different memory representation is defined in another translation unit
> >  class TextConversion: public cppu::WeakImplHelper2
> >  ^
>
> Those three are indeed clashes with cppumaker-generated C++ classes
> corresponding to UNOIDL (new-style) services.  The clashes have been
> fixed now as <cgit.freedesktop.org/libreoffice/core/commit/?id=91ba527a63f77658ee147515f1699792059aa2e5>, <http://cgit.freedesktop.org/libreoffice/core/commit/?id=a6104092925a6fe9f96ca239c0292bd1539d5746>, <http://cgit.freedesktop.org/libreoffice/core/commit/?id=63bc11b81f8af188564a385c1e501fd7334c343d>
> "Avoid name clash with generated C++ class corresponding to UNOIDL
> service."

Cool, would you mind showing me how they are different?  I could try to improve the error message to be bit more informative then.

Honza
>
> Stephan
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
sberg sberg
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

On 09/11/2014 08:27 PM, Jan Hubicka wrote:

>> On 09/11/2014 07:05 AM, Jan Hubicka wrote:
>>> Anyway those are warning I currently get with ODR type merging.  The first three are
>>> quite puzzling - the type layout differs, but by abstract field so I am unable to print
>>> out any resonable message. This may suggest difference in virtual inheritance or someting like
>>> that (or just plain bug in my code comparing types).  I will dig deeper into it tomorrow.
>> [...]
>>> /aux/hubicka/libreoffice/i18npool/inc/nativenumbersupplier.hxx:33:0: warning: type ‘struct NativeNumberSupplier’ violates one definition rule [-Wodr]
>>>   class NativeNumberSupplier : public cppu::WeakImplHelper2
>>>   ^
>>> /aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/NativeNumberSupplier.hpp:29:0: note: a type with different memory representation is defined in another translation unit
>>>   class NativeNumberSupplier {
>>>   ^
>>> /aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/OrdinalSuffix.hpp:29:0: warning: type ‘struct OrdinalSuffix’ violates one definition rule [-Wodr]
>>>   class OrdinalSuffix {
>>>   ^
>>> /aux/hubicka/libreoffice/i18npool/inc/ordinalsuffix.hxx:28:0: note: a type with different memory representation is defined in another translation unit
>>>   class OrdinalSuffix : public cppu::WeakImplHelper2
>>>   ^
>>> /aux/hubicka/libreoffice/50-lto/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/TextConversion.hpp:29:0: warning: type ‘struct TextConversion’ violates one definition rule [-Wodr]
>>>   class TextConversion {
>>>   ^
>>> /aux/hubicka/libreoffice/i18npool/inc/textconversion.hxx:36:0: note: a type with different memory representation is defined in another translation unit
>>>   class TextConversion: public cppu::WeakImplHelper2
>>>   ^
>>
>> Those three are indeed clashes with cppumaker-generated C++ classes
>> corresponding to UNOIDL (new-style) services.  The clashes have been
>> fixed now as <cgit.freedesktop.org/libreoffice/core/commit/?id=91ba527a63f77658ee147515f1699792059aa2e5>, <http://cgit.freedesktop.org/libreoffice/core/commit/?id=a6104092925a6fe9f96ca239c0292bd1539d5746>, <http://cgit.freedesktop.org/libreoffice/core/commit/?id=63bc11b81f8af188564a385c1e501fd7334c343d>
>> "Avoid name clash with generated C++ class corresponding to UNOIDL
>> service."
>
> Cool, would you mind showing me how they are different?  I could try to improve the error message to be bit more informative then.

Completely different.  ;)

While the "hand-written" class in i18npool/inc/nativenumbersupplier.hxx
has member variables (direct ones as well as ones inherited from the
base class template instantiation) along with member functions,

> class NativeNumberSupplier: public cppu::WeakImplHelper2<css::i18n::XNativeNumberSupplier, css::lang::XServiceInfo> {
> public:
>     // ...
>
> private:
>     css::lang::Locale aLocale;
>     bool useOffset;
> };

the cppumaker-generated class in
workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/NativeNumberSupplier.hpp
only has a static member function and no member variables at all (so is
serving as kind of a poor-man's namespace),

> class NativeNumberSupplier {
> public:
>     static css::uno::Reference<css::i18n::XNativeNumberSupplier> create(css::uno::Reference<css::uno::XComponentContext> const & the_context);
>
> private:
>     NativeNumberSupplier(); // not implemented
>     NativeNumberSupplier(NativeNumberSupplier &); // not implemented
>     ~NativeNumberSupplier(); // not implemented
>     void operator =(NativeNumberSupplier); // not implemented
> };

Stephan
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

>
> Completely different.  ;)

Hehe, probably good enough for my comparing code to panic and run away ;)

>
> While the "hand-written" class in
> i18npool/inc/nativenumbersupplier.hxx has member variables (direct
> ones as well as ones inherited from the base class template
> instantiation) along with member functions,
>
> >class NativeNumberSupplier: public cppu::WeakImplHelper2<css::i18n::XNativeNumberSupplier, css::lang::XServiceInfo> {
> >public:
> >    // ...
> >
> >private:
> >    css::lang::Locale aLocale;
> >    bool useOffset;
> >};
>
> the cppumaker-generated class in workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/i18n/NativeNumberSupplier.hpp
> only has a static member function and no member variables at all (so
> is serving as kind of a poor-man's namespace),

I guess main problem is the fac thtat there is a base, so we run out of variables at one side
but have an abstract base on other and the code does not know what to say.  Will fix that,
thanks!

I updated my libreoffice tree and also hardened my comparsion code. Lets see if it will find
more matches.

Honza

>
> >class NativeNumberSupplier {
> >public:
> >    static css::uno::Reference<css::i18n::XNativeNumberSupplier> create(css::uno::Reference<css::uno::XComponentContext> const & the_context);
> >
> >private:
> >    NativeNumberSupplier(); // not implemented
> >    NativeNumberSupplier(NativeNumberSupplier &); // not implemented
> >    ~NativeNumberSupplier(); // not implemented
> >    void operator =(NativeNumberSupplier); // not implemented
> >};
>
> Stephan
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by sberg
Hi,
I updated to current tree and my ODR checker reports no more violations during of libmergedlo.
Did you integrated more stuff to it? It seems to be significantly bigger than one I tested in
April (so it now hits limit on number of sections in ELF library used by GCC, hopefully that
will be fixed soon)

Honza
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
sberg sberg
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

On 09/13/2014 05:43 PM, Jan Hubicka wrote:
> I updated to current tree and my ODR checker reports no more violations during of libmergedlo.
> Did you integrated more stuff to it?

I at least didn't address any further issues from your list than the
ones I'd reported as fixed.

Stephan

_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Matúš Kukan Matúš Kukan
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by Jan Hubicka-2
On 13 September 2014 17:43, Jan Hubicka <[hidden email]> wrote:
> Hi,
> I updated to current tree and my ODR checker reports no more violations during of libmergedlo.
> Did you integrated more stuff to it? It seems to be significantly bigger than one I tested in
> April (so it now hits limit on number of sections in ELF library used by GCC, hopefully that
> will be fixed soon)

Yes, in 8165fc23014c8044c131cb6e1fd0c5e06fd0da2d dbtools went in.
(libdbtools is 2.2MB for me)

Best,
Matus
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Jan Hubicka-2 Jan Hubicka-2
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by sberg
> On 09/13/2014 05:43 PM, Jan Hubicka wrote:
> >I updated to current tree and my ODR checker reports no more violations during of libmergedlo.
> >Did you integrated more stuff to it?
>
> I at least didn't address any further issues from your list than the
> ones I'd reported as fixed.

Iant fixed the 65536 ELF sections limit issue and I can build TOT libreoffice again.  Here
is list of Wodr warning I setill get. The Xlib one looks particularly entertaining so does the
difference in bases...

Honza

/usr/include/X11/Xlib.h:948:3: warning: type ‘struct XAnyEvent’ violates one definition rule [-Wodr]
 } XAnyEvent;
   ^
/usr/include/X11/Xlib.h:948:3: note: a different type is defined in another translation unit
 } XAnyEvent;
   ^
/usr/include/X11/Xlib.h:947:9: note: the first difference of corresponding definitions is field ‘window’
  Window window; /* window on which event was requested in event mask */
         ^
/usr/include/X11/Xlib.h:947:9: note: a field of same name but different type is defined in another translation unit
  Window window; /* window on which event was requested in event mask */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:579:3: warning: type ‘struct XKeyEvent’ violates one definition rule [-Wodr]
 } XKeyEvent;
   ^
/usr/include/X11/Xlib.h:579:3: note: a different type is defined in another translation unit
 } XKeyEvent;
   ^
/usr/include/X11/Xlib.h:570:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;         /* "event" window it is reported relative to */
         ^
/usr/include/X11/Xlib.h:570:9: note: a field of same name but different type is defined in another translation unit
  Window window;         /* "event" window it is reported relative to */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:597:3: warning: type ‘struct XButtonEvent’ violates one definition rule [-Wodr]
 } XButtonEvent;
   ^
/usr/include/X11/Xlib.h:597:3: note: a different type is defined in another translation unit
 } XButtonEvent;
   ^
/usr/include/X11/Xlib.h:588:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;         /* "event" window it is reported relative to */
         ^
/usr/include/X11/Xlib.h:588:9: note: a field of same name but different type is defined in another translation unit
  Window window;         /* "event" window it is reported relative to */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:615:3: warning: type ‘struct XMotionEvent’ violates one definition rule [-Wodr]
 } XMotionEvent;
   ^
/usr/include/X11/Xlib.h:615:3: note: a different type is defined in another translation unit
 } XMotionEvent;
   ^
/usr/include/X11/Xlib.h:606:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;         /* "event" window reported relative to */
         ^
/usr/include/X11/Xlib.h:606:9: note: a field of same name but different type is defined in another translation unit
  Window window;         /* "event" window reported relative to */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:638:3: warning: type ‘struct XCrossingEvent’ violates one definition rule [-Wodr]
 } XCrossingEvent;
   ^
/usr/include/X11/Xlib.h:638:3: note: a different type is defined in another translation unit
 } XCrossingEvent;
   ^
/usr/include/X11/Xlib.h:623:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;         /* "event" window reported relative to */
         ^
/usr/include/X11/Xlib.h:623:9: note: a field of same name but different type is defined in another translation unit
  Window window;         /* "event" window reported relative to */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:656:3: warning: type ‘struct XFocusChangeEvent’ violates one definition rule [-Wodr]
 } XFocusChangeEvent;
   ^
/usr/include/X11/Xlib.h:656:3: note: a different type is defined in another translation unit
 } XFocusChangeEvent;
   ^
/usr/include/X11/Xlib.h:647:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;  /* window of event */
         ^
/usr/include/X11/Xlib.h:647:9: note: a field of same name but different type is defined in another translation unit
  Window window;  /* window of event */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:679:3: warning: type ‘struct XExposeEvent’ violates one definition rule [-Wodr]
 } XExposeEvent;
   ^
/usr/include/X11/Xlib.h:679:3: note: a different type is defined in another translation unit
 } XExposeEvent;
   ^
/usr/include/X11/Xlib.h:675:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:675:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:711:3: warning: type ‘struct XVisibilityEvent’ violates one definition rule [-Wodr]
 } XVisibilityEvent;
   ^
/usr/include/X11/Xlib.h:711:3: note: a different type is defined in another translation unit
 } XVisibilityEvent;
   ^
/usr/include/X11/Xlib.h:709:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:709:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:724:3: warning: type ‘struct XCreateWindowEvent’ violates one definition rule [-Wodr]
 } XCreateWindowEvent;
   ^
/usr/include/X11/Xlib.h:724:3: note: a different type is defined in another translation unit
 } XCreateWindowEvent;
   ^
/usr/include/X11/Xlib.h:718:9: note: the first difference of corresponding definitions is field ‘parent’
  Window parent;  /* parent of the window */
         ^
/usr/include/X11/Xlib.h:718:9: note: a field of same name but different type is defined in another translation unit
  Window parent;  /* parent of the window */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:733:3: warning: type ‘struct XDestroyWindowEvent’ violates one definition rule [-Wodr]
 } XDestroyWindowEvent;
   ^
/usr/include/X11/Xlib.h:733:3: note: a different type is defined in another translation unit
 } XDestroyWindowEvent;
   ^
/usr/include/X11/Xlib.h:731:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:731:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:743:3: warning: type ‘struct XUnmapEvent’ violates one definition rule [-Wodr]
 } XUnmapEvent;
   ^
/usr/include/X11/Xlib.h:743:3: note: a different type is defined in another translation unit
 } XUnmapEvent;
   ^
/usr/include/X11/Xlib.h:740:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:740:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:753:3: warning: type ‘struct XMapEvent’ violates one definition rule [-Wodr]
 } XMapEvent;
   ^
/usr/include/X11/Xlib.h:753:3: note: a different type is defined in another translation unit
 } XMapEvent;
   ^
/usr/include/X11/Xlib.h:750:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:750:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:762:3: warning: type ‘struct XMapRequestEvent’ violates one definition rule [-Wodr]
 } XMapRequestEvent;
   ^
/usr/include/X11/Xlib.h:762:3: note: a different type is defined in another translation unit
 } XMapRequestEvent;
   ^
/usr/include/X11/Xlib.h:760:9: note: the first difference of corresponding definitions is field ‘parent’
  Window parent;
         ^
/usr/include/X11/Xlib.h:760:9: note: a field of same name but different type is defined in another translation unit
  Window parent;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:774:3: warning: type ‘struct XReparentEvent’ violates one definition rule [-Wodr]
 } XReparentEvent;
   ^
/usr/include/X11/Xlib.h:774:3: note: a different type is defined in another translation unit
 } XReparentEvent;
   ^
/usr/include/X11/Xlib.h:769:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:769:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:788:3: warning: type ‘struct XConfigureEvent’ violates one definition rule [-Wodr]
 } XConfigureEvent;
   ^
/usr/include/X11/Xlib.h:788:3: note: a different type is defined in another translation unit
 } XConfigureEvent;
   ^
/usr/include/X11/Xlib.h:781:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:781:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:798:3: warning: type ‘struct XGravityEvent’ violates one definition rule [-Wodr]
 } XGravityEvent;
   ^
/usr/include/X11/Xlib.h:798:3: note: a different type is defined in another translation unit
 } XGravityEvent;
   ^
/usr/include/X11/Xlib.h:795:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:795:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:807:3: warning: type ‘struct XResizeRequestEvent’ violates one definition rule [-Wodr]
 } XResizeRequestEvent;
   ^
/usr/include/X11/Xlib.h:807:3: note: a different type is defined in another translation unit
 } XResizeRequestEvent;
   ^
/usr/include/X11/Xlib.h:805:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:805:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:822:3: warning: type ‘struct XConfigureRequestEvent’ violates one definition rule [-Wodr]
 } XConfigureRequestEvent;
   ^
/usr/include/X11/Xlib.h:822:3: note: a different type is defined in another translation unit
 } XConfigureRequestEvent;
   ^
/usr/include/X11/Xlib.h:814:9: note: the first difference of corresponding definitions is field ‘parent’
  Window parent;
         ^
/usr/include/X11/Xlib.h:814:9: note: a field of same name but different type is defined in another translation unit
  Window parent;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:832:3: warning: type ‘struct XCirculateEvent’ violates one definition rule [-Wodr]
 } XCirculateEvent;
   ^
/usr/include/X11/Xlib.h:832:3: note: a different type is defined in another translation unit
 } XCirculateEvent;
   ^
/usr/include/X11/Xlib.h:829:9: note: the first difference of corresponding definitions is field ‘event’
  Window event;
         ^
/usr/include/X11/Xlib.h:829:9: note: a field of same name but different type is defined in another translation unit
  Window event;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:842:3: warning: type ‘struct XCirculateRequestEvent’ violates one definition rule [-Wodr]
 } XCirculateRequestEvent;
   ^
/usr/include/X11/Xlib.h:842:3: note: a different type is defined in another translation unit
 } XCirculateRequestEvent;
   ^
/usr/include/X11/Xlib.h:839:9: note: the first difference of corresponding definitions is field ‘parent’
  Window parent;
         ^
/usr/include/X11/Xlib.h:839:9: note: a field of same name but different type is defined in another translation unit
  Window parent;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:853:3: warning: type ‘struct XPropertyEvent’ violates one definition rule [-Wodr]
 } XPropertyEvent;
   ^
/usr/include/X11/Xlib.h:853:3: note: a different type is defined in another translation unit
 } XPropertyEvent;
   ^
/usr/include/X11/Xlib.h:849:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:849:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:863:3: warning: type ‘struct XSelectionClearEvent’ violates one definition rule [-Wodr]
 } XSelectionClearEvent;
   ^
/usr/include/X11/Xlib.h:863:3: note: a different type is defined in another translation unit
 } XSelectionClearEvent;
   ^
/usr/include/X11/Xlib.h:860:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:860:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:876:3: warning: type ‘struct XSelectionRequestEvent’ violates one definition rule [-Wodr]
 } XSelectionRequestEvent;
   ^
/usr/include/X11/Xlib.h:876:3: note: a different type is defined in another translation unit
 } XSelectionRequestEvent;
   ^
/usr/include/X11/Xlib.h:870:9: note: the first difference of corresponding definitions is field ‘owner’
  Window owner;
         ^
/usr/include/X11/Xlib.h:870:9: note: a field of same name but different type is defined in another translation unit
  Window owner;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:888:3: warning: type ‘struct XSelectionEvent’ violates one definition rule [-Wodr]
 } XSelectionEvent;
   ^
/usr/include/X11/Xlib.h:888:3: note: a different type is defined in another translation unit
 } XSelectionEvent;
   ^
/usr/include/X11/Xlib.h:883:9: note: the first difference of corresponding definitions is field ‘requestor’
  Window requestor;
         ^
/usr/include/X11/Xlib.h:883:9: note: a field of same name but different type is defined in another translation unit
  Window requestor;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:903:3: warning: type ‘struct XColormapEvent’ violates one definition rule [-Wodr]
 } XColormapEvent;
   ^
/usr/include/X11/Xlib.h:903:3: note: a different type is defined in another translation unit
 } XColormapEvent;
   ^
/usr/include/X11/Xlib.h:895:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:895:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:918:3: warning: type ‘struct XClientMessageEvent’ violates one definition rule [-Wodr]
 } XClientMessageEvent;
   ^
/usr/include/X11/Xlib.h:918:3: note: a different type is defined in another translation unit
 } XClientMessageEvent;
   ^
/usr/include/X11/Xlib.h:910:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:910:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:930:3: warning: type ‘struct XMappingEvent’ violates one definition rule [-Wodr]
 } XMappingEvent;
   ^
/usr/include/X11/Xlib.h:930:3: note: a different type is defined in another translation unit
 } XMappingEvent;
   ^
/usr/include/X11/Xlib.h:925:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;  /* unused */
         ^
/usr/include/X11/Xlib.h:925:9: note: a field of same name but different type is defined in another translation unit
  Window window;  /* unused */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:668:3: warning: type ‘struct XKeymapEvent’ violates one definition rule [-Wodr]
 } XKeymapEvent;
   ^
/usr/include/X11/Xlib.h:668:3: note: a different type is defined in another translation unit
 } XKeymapEvent;
   ^
/usr/include/X11/Xlib.h:666:9: note: the first difference of corresponding definitions is field ‘window’
  Window window;
         ^
/usr/include/X11/Xlib.h:666:9: note: a field of same name but different type is defined in another translation unit
  Window window;
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/usr/include/X11/Xlib.h:283:3: warning: type ‘struct Screen’ violates one definition rule [-Wodr]
 } Screen;
   ^
/usr/include/X11/Xlib.h:283:3: note: a different type is defined in another translation unit
 } Screen;
   ^
/usr/include/X11/Xlib.h:268:9: note: the first difference of corresponding definitions is field ‘root’
  Window root;  /* Root window id. */
         ^
/usr/include/X11/Xlib.h:268:9: note: a field of same name but different type is defined in another translation unit
  Window root;  /* Root window id. */
         ^
/usr/include/X11/X.h:96:13: note: type ‘XLIB_Window’ should match type ‘Window’
 typedef XID Window;
             ^
/usr/include/X11/X.h:96:13: note: the incompatible type is defined here
 typedef XID Window;
             ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
 class SwRootFrm: public SwLayoutFrm
 ^
/aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocument.cxx:1380:8: warning: type ‘struct ScVisAreaChanged’ violates one definition rule [-Wodr]
 struct ScVisAreaChanged
        ^
/aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx:849:0: note: a different type is defined in another translation unit
 struct ScVisAreaChanged
 ^
/aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocument.cxx:1382:27: note: the first difference of corresponding definitions is field ‘mpAccDoc’
     ScAccessibleDocument* mpAccDoc;
                           ^
/aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx:851:39: note: a field with different name is defined in another translation unit
     const ScIAccessibleViewForwarder* mpViewForwarder;
                                       ^
_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Miklos Vajna-4 Miklos Vajna-4
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

Hi Honza,

On Sat, Sep 20, 2014 at 04:39:05AM +0200, Jan Hubicka <[hidden email]> wrote:
> /aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
>  class SwRootFrm: public SwLayoutFrm
>  ^
> /aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
>  class SwRootFrm: public SwLayoutFrm

Hmm, this sounds like a false positive?

Thanks,

Miklos

_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

signature.asc (205 bytes) Download Attachment
Caolán McNamara Caolán McNamara
Reply | Threaded
Open this post in threaded view
|

Re: Performance samples for LibreOffice ...

In reply to this post by Jan Hubicka-2
On Sat, 2014-09-20 at 04:39 +0200, Jan Hubicka wrote:
> /aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: warning: type ‘struct SwRootFrm’ violates one definition rule [-Wodr]
>  class SwRootFrm: public SwLayoutFrm
>  ^
> /aux/hubicka/libreoffice2/core/sw/source/core/inc/rootfrm.hxx:54:0: note: a type with the same name but different bases is defined in another translation unit
>  class SwRootFrm: public SwLayoutFrm
>  ^

Is it possible to get the context of the include chain in the warning as
well ?

> /aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocument.cxx:1380:8: warning: type ‘struct ScVisAreaChanged’ violates one definition rule [-Wodr]
>  struct ScVisAreaChanged
>         ^
> /aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx:849:0: note: a different type is defined in another translation unit
>  struct ScVisAreaChanged
>  ^
> /aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocument.cxx:1382:27: note: the first difference of corresponding definitions is field ‘mpAccDoc’
>      ScAccessibleDocument* mpAccDoc;
>                            ^
> /aux/hubicka/libreoffice2/core/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx:851:39: note: a field with different name is defined in another translation unit
>      const ScIAccessibleViewForwarder* mpViewForwarder;

That at least is far more clear cut and fixed now.

C.

_______________________________________________
LibreOffice mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/libreoffice
Next » 12