Itk: Violation of One

Created on 23 Feb 2019  Â·  8Comments  Â·  Source: InsightSoftwareConsortium/ITK

Description

Building with "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON" causes many warnings related to -Wodr.

/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:99:7: warning: type ‘struct LogTester’ violates the C++ One Definition Rule [-Wodr]
class LogTester
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkThreadLoggerTest.cxx:32:7: note: a different type is defined in another translation unit
class LogTester
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:124:20: note: the first difference of corresponding definitions is field ‘m_Logger’
itk::LoggerBase* m_Logger;
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkThreadLoggerTest.cxx:57:16: note: a field of same name but different type is defined in another translation unit
itk::Logger* m_Logger;
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/include/itkLoggerBase.h:42:24: note: type name ‘itk::LoggerBase’ should match type name ‘itk::Logger’
class ITKCommon_EXPORT LoggerBase:public Object
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/include/itkLogger.h:36:24: note: the incompatible type is defined here
class ITKCommon_EXPORT Logger:public LoggerBase
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkThreadLoggerTest.cxx:46:15: warning: ‘logStatic’ violates the C++ One Definition Rule [-Wodr]
static void logStatic(LogTester* tester)
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:113:15: note: type mismatch in parameter 1
static void logStatic(LogTester* tester)
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:99:7: note: type ‘struct LogTester’ itself violates the C++ One Definition Rule
class LogTester
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkThreadLoggerTest.cxx:32:7: note: the incompatible type is defined here
class LogTester
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:113:15: note: ‘logStatic’ was previously declared here
static void logStatic(LogTester* tester)
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkThreadLoggerTest.cxx:38:8: warning: ‘log’ violates the C++ One Definition Rule [-Wodr]
void log() {
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:105:8: note: implicit this pointer type mismatch
void log() {
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:99:7: note: type ‘struct LogTester’ itself violates the C++ One Definition Rule
class LogTester
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkThreadLoggerTest.cxx:32:7: note: the incompatible type is defined here
class LogTester
^
/home/johnsonhj/Dashboard/src/ITK/Modules/Core/Common/test/itkLoggerThreadWrapperTest.cxx:105:8: note: ‘log’ was previously declared here
void log() {
^

[Description of the bug]

Steps to Reproduce

  1. Configure with testing on and "CMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON"
  2. Build with gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0

Expected behavior

Clean build.

Actual behavior

Many real warnings being produced.

Reproducibility

Always on Ubuntu 18.04

Versions

73188f4e7b1bb558ed0f1871ac119c926950e49d

Environment

Ununtu 18.04

Bug Compiler

All 8 comments

Looks like a quick-fix could be to place each LogTester definition within an unnamed namespace, within its cxx file.

A more maintainable solution might be to move the LogTester definition into a header file, for example "itkLogTester.h".

My 2 cent

Was this fixed by a recent PR?

Attempting to reproduce (thanks for the detailed description @hjmjohnson), I run into issues from GDCM:

[1/1096] Linking CXX executable bin/ITKImageFilterBaseTestDriver
FAILED: bin/ITKImageFilterBaseTestDriver
: && /usr/bin/c++  -Wodr -Fno-strict-aliasing  -mtune=native -march=corei7 -Wall -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel  -msse2 -O3 -DNDEBUG -flto -fno-fat-lto-objects   Modules/Filtering/ImageFilterBase/test/CMakeFiles/ITKImageFilterBaseTestDriver.dir/ITKImageFilterBaseTestDriver.cxx.o Modules/Filtering/ImageFilterBase/test/CMakeFiles/ITKImageFilterBaseTestDriver.dir/itkNeighborhoodOperatorImageFilterTest.cxx.o Modules/Filtering/ImageFilterBase/test/CMakeFiles/ITKImageFilterBaseTestDriver.dir/itkImageToImageFilterTest.cxx.o Modules/Filtering/ImageFilterBase/test/CMakeFiles/ITKImageFilterBaseTestDriver.dir/itkVectorNeighborhoodOperatorImageFilterTest.cxx.o Modules/Filtering/ImageFilterBase/test/CMakeFiles/ITKImageFilterBaseTestDriver.dir/itkMaskNeighborhoodOperatorImageFilterTest.cxx.o Modules/Filtering/ImageFilterBase/test/CMakeFiles/ITKImageFilterBaseTestDriver.dir/itkCastImageFilterTest.cxx.o  -o bin/ITKImageFilterBaseTestDriver  lib/libITKCommon-5.0.a lib/libITKCommon-5.0.a lib/libITKStatistics-5.0.a lib/libITKTransform-5.0.a lib/libITKSpatialObjects-5.0.a lib/libITKPath-5.0.a lib/libITKTestKernel-5.0.a lib/libITKTestKernel-5.0.a lib/libitkNetlibSlatec-5.0.a lib/libITKIOBMP-5.0.a lib/libITKIOGDCM-5.0.a lib/libitkgdcmMSFF-5.0.a lib/libitkgdcmDICT-5.0.a lib/libitkgdcmIOD-5.0.a lib/libitkgdcmDSED-5.0.a lib/libitkgdcmCommon-5.0.a lib/libitkgdcmjpeg8-5.0.a lib/libitkgdcmjpeg12-5.0.a lib/libitkgdcmjpeg16-5.0.a lib/libitkgdcmopenjp2-5.0.a lib/libitkgdcmcharls-5.0.a lib/libitkgdcmuuid-5.0.a lib/libITKIOGIPL-5.0.a lib/libITKIOJPEG-5.0.a lib/libITKIOMeshBYU-5.0.a lib/libITKIOMeshFreeSurfer-5.0.a lib/libITKIOMeshGifti-5.0.a lib/libITKgiftiio-5.0.a lib/libITKEXPAT-5.0.a lib/libITKIOMeshOBJ-5.0.a lib/libITKIOMeshOFF-5.0.a lib/libITKIOMeshVTK-5.0.a lib/libITKIOMeshBase-5.0.a lib/libITKQuadEdgeMesh-5.0.a lib/libITKMesh-5.0.a lib/libITKIOMeta-5.0.a lib/libITKMetaIO-5.0.a lib/libITKIONIFTI-5.0.a lib/libITKTransform-5.0.a lib/libITKniftiio-5.0.a lib/libITKznz-5.0.a lib/libITKIONRRD-5.0.a lib/libITKNrrdIO-5.0.a lib/libITKIOPNG-5.0.a lib/libitkpng-5.0.a lib/libITKIOTIFF-5.0.a lib/libitktiff-5.0.a lib/libitkzlib-5.0.a lib/libitkjpeg-5.0.a lib/libITKIOVTK-5.0.a lib/libITKIOImageBase-5.0.a lib/libITKCommon-5.0.a lib/libitkdouble-conversion-5.0.a lib/libitksys-5.0.a lib/libITKVNLInstantiation-5.0.a lib/libitkvnl_algo-5.0.a lib/libitkvnl-5.0.a lib/libitkv3p_netlib-5.0.a lib/libitknetlib-5.0.a lib/libitkvcl-5.0.a -lm -lpthread -lm -ldl && :
/usr/include/c++/7/bits/stl_tree.h:677:16: note: type name ‘std::_Rb_tree<gdcm::DataElement, gdcm::DataElement, std::_Identity<gdcm::DataElement>, std::less<gdcm::DataElement>, std::allocator<gdcm::DataElement> >::_Rb_tree_impl<std::less<gdcm::DataElement>, true>’ should match type name ‘std::_Rb_tree<gdcm::DataElement, gdcm::DataElement, std::_Identity<gdcm::DataElement>, std::less<gdcm::DataElement>, std::allocator<gdcm::DataElement> >::_Rb_tree_impl<std::less<gdcm::DataElement>, false>’
         struct _Rb_tree_impl
                ^
/usr/include/c++/7/bits/stl_set.h:122:40: note: type ‘struct _Rep_type’ should match type ‘struct _Rep_type’
          key_compare, _Key_alloc_type> _Rep_type;
                                        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:55:19: warning: type ‘struct DataSet’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:55:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:311:18: note: the first difference of corresponding definitions is field ‘DES’
   DataElementSet DES;
                  ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:311:18: note: a field of same name but different type is defined in another translation unit
   DataElementSet DES;
                  ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:59:33: note: type ‘struct DataElementSet’ should match type ‘struct DataElementSet’
   typedef std::set<DataElement> DataElementSet;
                                 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmItem.h:45:19: warning: type ‘struct Item’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT Item : public DataElement
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmItem.h:45:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT Item : public DataElement
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmItem.h:312:11: note: the first difference of corresponding definitions is field ‘NestedDataSet’
   DataSet NestedDataSet;
           ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmItem.h:312:11: note: a field of same name but different type is defined in another translation unit
   DataSet NestedDataSet;
           ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:55:19: note: type ‘struct DataSet’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFileMetaInformation.h:40:19: warning: type ‘struct FileMetaInformation’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT FileMetaInformation : public DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFileMetaInformation.h:40:19: note: a type with different bases is defined in another translation unit
 class GDCM_EXPORT FileMetaInformation : public DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:33:19: warning: type ‘struct File’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT File : public Object
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:33:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT File : public Object
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:66:23: note: the first difference of corresponding definitions is field ‘Header’
   FileMetaInformation Header;
                       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:66:23: note: a field of same name but different type is defined in another translation unit
   FileMetaInformation Header;
                       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFileMetaInformation.h:40:19: note: type ‘struct FileMetaInformation’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT FileMetaInformation : public DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:39:7: warning: type ‘struct SmartPointer’ violates the C++ One Definition Rule [-Wodr]
 class SmartPointer
       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:39:7: note: a different type is defined in another translation unit
 class SmartPointer
       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:113:15: note: the first difference of corresponding definitions is field ‘Pointer’
   ObjectType* Pointer;
               ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:113:15: note: a field of same name but different type is defined in another translation unit
   ObjectType* Pointer;
               ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:33:19: note: type ‘struct File’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT File : public Object
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.h:38:19: warning: type ‘struct FileExplicitFilter’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT FileExplicitFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.h:38:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT FileExplicitFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.h:68:22: note: the first difference of corresponding definitions is field ‘F’
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.h:68:22: note: a field of same name but different type is defined in another translation unit
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:39:7: note: type ‘struct SmartPointer’ itself violates the C++ One Definition Rule
 class SmartPointer
       ^
/usr/include/c++/7/bits/stl_tree.h:677:16: note: type name ‘std::_Rb_tree<gdcm::PrivateTag, std::pair<gdcm::PrivateTag const, gdcm::DictEntry>, std::_Select1st<std::pair<gdcm::PrivateTag const, gdcm::DictEntry> >, std::less<gdcm::PrivateTag>, std::allocator<std::pair<gdcm::PrivateTag const, gdcm::DictEntry> > >::_Rb_tree_impl<std::less<gdcm::PrivateTag>, true>’ should match type name ‘std::_Rb_tree<gdcm::PrivateTag, std::pair<gdcm::PrivateTag const, gdcm::DictEntry>, std::_Select1st<std::pair<gdcm::PrivateTag const, gdcm::DictEntry> >, std::less<gdcm::PrivateTag>, std::allocator<std::pair<gdcm::PrivateTag const, gdcm::DictEntry> > >::_Rb_tree_impl<std::less<gdcm::PrivateTag>, false>’
         struct _Rb_tree_impl
                ^
/usr/include/c++/7/bits/stl_map.h:142:41: note: type ‘struct _Rep_type’ should match type ‘struct _Rep_type’
          key_compare, _Pair_alloc_type> _Rep_type;
                                         ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:216:19: warning: type ‘struct PrivateDict’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT PrivateDict
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:216:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT PrivateDict
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:326:16: note: the first difference of corresponding definitions is field ‘DictInternal’
   MapDictEntry DictInternal;
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:326:16: note: a field of same name but different type is defined in another translation unit
   MapDictEntry DictInternal;
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:218:43: note: type ‘struct MapDictEntry’ should match type ‘struct MapDictEntry’
   typedef std::map<PrivateTag, DictEntry> MapDictEntry;
                                           ^
/usr/include/c++/7/bits/stl_tree.h:677:16: note: type name ‘std::_Rb_tree<gdcm::Tag, std::pair<gdcm::Tag const, gdcm::DictEntry>, std::_Select1st<std::pair<gdcm::Tag const, gdcm::DictEntry> >, std::less<gdcm::Tag>, std::allocator<std::pair<gdcm::Tag const, gdcm::DictEntry> > >::_Rb_tree_impl<std::less<gdcm::Tag>, true>’ should match type name ‘std::_Rb_tree<gdcm::Tag, std::pair<gdcm::Tag const, gdcm::DictEntry>, std::_Select1st<std::pair<gdcm::Tag const, gdcm::DictEntry> >, std::less<gdcm::Tag>, std::allocator<std::pair<gdcm::Tag const, gdcm::DictEntry> > >::_Rb_tree_impl<std::less<gdcm::Tag>, false>’
         struct _Rb_tree_impl
                ^
/usr/include/c++/7/bits/stl_map.h:142:41: note: type ‘struct _Rep_type’ should match type ‘struct _Rep_type’
          key_compare, _Pair_alloc_type> _Rep_type;
                                         ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:44:19: warning: type ‘struct Dict’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT Dict
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:44:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT Dict
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:190:16: note: the first difference of corresponding definitions is field ‘DictInternal’
   MapDictEntry DictInternal;
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:190:16: note: a field of same name but different type is defined in another translation unit
   MapDictEntry DictInternal;
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:47:36: note: type ‘struct MapDictEntry’ should match type ‘struct MapDictEntry’
   typedef std::map<Tag, DictEntry> MapDictEntry;
                                    ^
/usr/include/c++/7/bits/stl_tree.h:677:16: note: type name ‘std::_Rb_tree<gdcm::CSAHeaderDictEntry, gdcm::CSAHeaderDictEntry, std::_Identity<gdcm::CSAHeaderDictEntry>, std::less<gdcm::CSAHeaderDictEntry>, std::allocator<gdcm::CSAHeaderDictEntry> >::_Rb_tree_impl<std::less<gdcm::CSAHeaderDictEntry>, true>’ should match type name ‘std::_Rb_tree<gdcm::CSAHeaderDictEntry, gdcm::CSAHeaderDictEntry, std::_Identity<gdcm::CSAHeaderDictEntry>, std::less<gdcm::CSAHeaderDictEntry>, std::allocator<gdcm::CSAHeaderDictEntry> >::_Rb_tree_impl<std::less<gdcm::CSAHeaderDictEntry>, false>’
         struct _Rb_tree_impl
                ^
/usr/include/c++/7/bits/stl_set.h:122:40: note: type ‘struct _Rep_type’ should match type ‘struct _Rep_type’
          key_compare, _Key_alloc_type> _Rep_type;
                                        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmCSAHeaderDict.h:34:19: warning: type ‘struct CSAHeaderDict’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT CSAHeaderDict
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmCSAHeaderDict.h:34:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT CSAHeaderDict
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmCSAHeaderDict.h:79:25: note: the first difference of corresponding definitions is field ‘CSAHeaderDictInternal’
   MapCSAHeaderDictEntry CSAHeaderDictInternal;
                         ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmCSAHeaderDict.h:79:25: note: a field of same name but different type is defined in another translation unit
   MapCSAHeaderDictEntry CSAHeaderDictInternal;
                         ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmCSAHeaderDict.h:37:40: note: type ‘struct MapCSAHeaderDictEntry’ should match type ‘struct MapCSAHeaderDictEntry’
   typedef std::set<CSAHeaderDictEntry> MapCSAHeaderDictEntry;
                                        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:28:19: warning: type ‘struct Dicts’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT Dicts
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:28:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT Dicts
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:72:8: note: the first difference of corresponding definitions is field ‘PublicDict’
   Dict PublicDict;
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:72:8: note: a field of same name but different type is defined in another translation unit
   Dict PublicDict;
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:44:19: note: type ‘struct Dict’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT Dict
                   ^
/usr/include/c++/7/bits/stl_tree.h:444:11: note: type ‘struct _Rb_tree’ itself violates the C++ One Definition Rule
     class _Rb_tree
           ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.h:53:19: warning: type ‘struct Reader’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT Reader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.h:53:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT Reader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.h:103:22: note: the first difference of corresponding definitions is field ‘F’
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.h:103:22: note: a field of same name but different type is defined in another translation unit
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:39:7: note: type ‘struct SmartPointer’ itself violates the C++ One Definition Rule
 class SmartPointer
       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapReader.h:40:19: warning: type ‘struct PixmapReader’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT PixmapReader : public Reader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapReader.h:40:19: note: a type with different bases is defined in another translation unit
 class GDCM_EXPORT PixmapReader : public Reader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:33:19: warning: type ‘struct ImageReader’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT ImageReader : public PixmapReader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:33:19: note: a type with different bases is defined in another translation unit
 class GDCM_EXPORT ImageReader : public PixmapReader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.h:48:19: warning: type ‘struct Writer’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT Writer
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.h:48:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT Writer
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.h:90:22: note: the first difference of corresponding definitions is field ‘F’
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.h:90:22: note: a field of same name but different type is defined in another translation unit
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:39:7: note: type ‘struct SmartPointer’ itself violates the C++ One Definition Rule
 class SmartPointer
       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapWriter.h:36:19: warning: type ‘struct PixmapWriter’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT PixmapWriter : public Writer
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapWriter.h:36:19: note: a type with different bases is defined in another translation unit
 class GDCM_EXPORT PixmapWriter : public Writer
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:27:19: warning: type ‘struct ImageWriter’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT ImageWriter : public PixmapWriter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:27:19: note: a type with different bases is defined in another translation unit
 class GDCM_EXPORT ImageWriter : public PixmapWriter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:29:19: warning: type ‘struct StringFilter’ violates the C++ One Definition Rule [-Wodr]
 class GDCM_EXPORT StringFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:29:19: note: a different type is defined in another translation unit
 class GDCM_EXPORT StringFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:76:22: note: the first difference of corresponding definitions is field ‘F’
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:76:22: note: a field of same name but different type is defined in another translation unit
   SmartPointer<File> F;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/Common/gdcmSmartPointer.h:39:7: note: type ‘struct SmartPointer’ itself violates the C++ One Definition Rule
 class SmartPointer
       ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:783:8: warning: type ‘struct jpeg_memory_mgr’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:783:8: note: a different type is defined in another translation unit
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:789:3: note: the first difference of corresponding definitions is field ‘alloc_sarray’
   JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:789:3: note: a field of same name but different type is defined in another translation unit
   JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:430:8: warning: type ‘struct jpeg_decompress_struct’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_decompress_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:430:8: note: a different type is defined in another translation unit
 struct jpeg_decompress_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:431:3: note: the first difference of corresponding definitions is field ‘mem’
   jpeg_common_fields;    /* Fields shared with jpeg_compress_struct */
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:431:3: note: a field of same name but different type is defined in another translation unit
   jpeg_common_fields;    /* Fields shared with jpeg_compress_struct */
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:783:8: note: type ‘struct jpeg_memory_mgr’ itself violates the C++ One Definition Rule
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:783:8: note: the incompatible type is defined here
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:285:8: warning: type ‘struct jpeg_compress_struct’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_compress_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:285:8: note: a different type is defined in another translation unit
 struct jpeg_compress_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:286:3: note: the first difference of corresponding definitions is field ‘mem’
   jpeg_common_fields;    /* Fields shared with jpeg_decompress_struct */
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:286:3: note: a field of same name but different type is defined in another translation unit
   jpeg_common_fields;    /* Fields shared with jpeg_decompress_struct */
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:783:8: note: type ‘struct jpeg_memory_mgr’ itself violates the C++ One Definition Rule
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:783:8: note: the incompatible type is defined here
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:732:8: warning: type ‘struct jpeg_destination_mgr’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_destination_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:732:8: note: a different type is defined in another translation unit
 struct jpeg_destination_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:736:3: note: the first difference of corresponding definitions is field ‘init_destination’
   JMETHOD(void, init_destination, (j_compress_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:736:3: note: a field of same name but different type is defined in another translation unit
   JMETHOD(void, init_destination, (j_compress_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:732:8: note: type mismatch in parameter 1
 struct jpeg_destination_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:279:39: note: type ‘struct jpeg_compress_struct *’ should match type ‘struct jpeg_compress_struct *’
 typedef struct jpeg_compress_struct * j_compress_ptr;
                                       ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:279:39: note: the incompatible type is defined here
 typedef struct jpeg_compress_struct * j_compress_ptr;
                                       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:272:7: warning: type ‘struct JPEGInternals’ violates the C++ One Definition Rule [-Wodr]
 class JPEGInternals
       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:272:7: note: a different type is defined in another translation unit
 class JPEGInternals
       ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:276:26: note: the first difference of corresponding definitions is field ‘cinfo’
   jpeg_decompress_struct cinfo;
                          ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:276:26: note: a field of same name but different type is defined in another translation unit
   jpeg_decompress_struct cinfo;
                          ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:430:8: note: type ‘struct jpeg_decompress_struct’ itself violates the C++ One Definition Rule
 struct jpeg_decompress_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:430:8: note: the incompatible type is defined here
 struct jpeg_decompress_struct {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:1024:3: warning: type ‘struct my_destination_mgr’ violates the C++ One Definition Rule [-Wodr]
 } my_destination_mgr;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:1024:3: note: a different type is defined in another translation unit
 } my_destination_mgr;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:1020:31: note: the first difference of corresponding definitions is field ‘pub’
   struct jpeg_destination_mgr pub; /* public fields */
                               ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:1020:31: note: a field of same name but different type is defined in another translation unit
   struct jpeg_destination_mgr pub; /* public fields */
                               ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:732:8: note: type ‘struct jpeg_destination_mgr’ itself violates the C++ One Definition Rule
 struct jpeg_destination_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/16/jpeglib.h:732:8: note: the incompatible type is defined here
 struct jpeg_destination_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:270:8: warning: type ‘struct jpeg_common_struct’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_common_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:270:8: note: a different type is defined in another translation unit
 struct jpeg_common_struct {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:271:3: note: the first difference of corresponding definitions is field ‘mem’
   jpeg_common_fields;    /* Fields common to both master struct types */
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:271:3: note: a field of same name but different type is defined in another translation unit
   jpeg_common_fields;    /* Fields common to both master struct types */
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:783:8: note: type ‘struct jpeg_memory_mgr’ itself violates the C++ One Definition Rule
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:783:8: note: the incompatible type is defined here
 struct jpeg_memory_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:720:8: warning: type ‘struct jpeg_progress_mgr’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_progress_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:720:8: note: a different type is defined in another translation unit
 struct jpeg_progress_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:721:3: note: the first difference of corresponding definitions is field ‘progress_monitor’
   JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:721:3: note: a field of same name but different type is defined in another translation unit
   JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:720:8: note: type mismatch in parameter 1
 struct jpeg_progress_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:278:37: note: type ‘struct jpeg_common_struct *’ should match type ‘struct jpeg_common_struct *’
 typedef struct jpeg_common_struct * j_common_ptr;
                                     ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:278:37: note: the incompatible type is defined here
 typedef struct jpeg_common_struct * j_common_ptr;
                                     ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:744:8: warning: type ‘struct jpeg_source_mgr’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_source_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:744:8: note: a different type is defined in another translation unit
 struct jpeg_source_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:748:3: note: the first difference of corresponding definitions is field ‘init_source’
   JMETHOD(void, init_source, (j_decompress_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:748:3: note: a field of same name but different type is defined in another translation unit
   JMETHOD(void, init_source, (j_decompress_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:744:8: note: type mismatch in parameter 1
 struct jpeg_source_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:280:41: note: type ‘struct jpeg_decompress_struct *’ should match type ‘struct jpeg_decompress_struct *’
 typedef struct jpeg_decompress_struct * j_decompress_ptr;
                                         ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:280:41: note: the incompatible type is defined here
 typedef struct jpeg_decompress_struct * j_decompress_ptr;
                                         ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:48:3: warning: type ‘struct my_source_mgr’ violates the C++ One Definition Rule [-Wodr]
 } my_source_mgr;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:48:3: note: a different type is defined in another translation unit
 } my_source_mgr;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:43:26: note: the first difference of corresponding definitions is field ‘pub’
   struct jpeg_source_mgr pub;  /* public fields */
                          ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:43:26: note: a field of same name but different type is defined in another translation unit
   struct jpeg_source_mgr pub;  /* public fields */
                          ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:744:8: note: type ‘struct jpeg_source_mgr’ itself violates the C++ One Definition Rule
 struct jpeg_source_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/8/jpeglib.h:744:8: note: the incompatible type is defined here
 struct jpeg_source_mgr {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDefaultDicts.cxx:37:3: warning: type ‘struct DICT_ENTRY’ violates the C++ One Definition Rule [-Wodr]
 } DICT_ENTRY;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmPrivateDefaultDicts.cxx:37:3: note: a different type is defined in another translation unit
 } DICT_ENTRY;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDefaultDicts.cxx:32:14: note: the first difference of corresponding definitions is field ‘vr’
   VR::VRType vr;
              ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmPrivateDefaultDicts.cxx:32:15: note: a field with different name is defined in another translation unit
   const char *owner;
               ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:662:8: warning: type ‘struct jpeg_error_mgr’ violates the C++ One Definition Rule [-Wodr]
 struct jpeg_error_mgr {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/JPEG/src/itkjpeg/jpeglib.h:680:8: note: a different type is defined in another translation unit
 struct jpeg_error_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:664:3: note: the first difference of corresponding definitions is field ‘error_exit’
   JMETHOD(void, error_exit, (j_common_ptr cinfo));
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/JPEG/src/itkjpeg/jpeglib.h:682:3: note: a field of same name but different type is defined in another translation unit
   JMETHOD(void, error_exit, (j_common_ptr cinfo));
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:662:8: note: type mismatch in parameter 1
 struct jpeg_error_mgr {
        ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:278:37: note: type ‘struct jpeg_common_struct *’ should match type ‘struct jpeg_common_struct *’
 typedef struct jpeg_common_struct * j_common_ptr;
                                     ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/JPEG/src/itkjpeg/jpeglib.h:268:37: note: the incompatible type is defined here
 typedef struct jpeg_common_struct * j_common_ptr;
                                     ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:186:3: warning: type ‘struct jpeg_component_info’ violates the C++ One Definition Rule [-Wodr]
 } jpeg_component_info;
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/JPEG/src/itkjpeg/jpeglib.h:186:3: note: a different type is defined in another translation unit
 } jpeg_component_info;
   ^
Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmjpeg/12/jpeglib.h:144:14: note: the first difference of corresponding definitions is field ‘width_in_data_units’
   JDIMENSION width_in_data_units;
              ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/JPEG/src/itkjpeg/jpeglib.h:146:14: note: a field with different name is defined in another translation unit
   JDIMENSION width_in_blocks;
              ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:30:3: warning: ‘__comp_ctor ’ violates the C++ One Definition Rule  [-Wodr]
   ImageWriter();
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.cxx:29:1: note: implicit this pointer type mismatch
 ImageWriter::ImageWriter()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:27:19: note: type ‘struct ImageWriter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageWriter : public PixmapWriter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.cxx:29:1: note: ‘__comp_ctor ’ was previously declared here
 ImageWriter::ImageWriter()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.h:59:10: warning: ‘GetDicts’ violates the C++ One Definition Rule  [-Wodr]
   Dicts &GetDicts();
          ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.cxx:177:8: note: return value type mismatch
 Dicts &Global::GetDicts()
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:28:19: note: type ‘struct Dicts’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT Dicts
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.cxx:177:8: note: ‘GetDicts’ was previously declared here
 Dicts &Global::GetDicts()
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.cxx:177:8: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:49:15: warning: ‘GetPublicDict’ violates the C++ One Definition Rule  [-Wodr]
   const Dict &GetPublicDict() const;
               ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.cxx:144:13: note: ‘GetPublicDict’ was previously declared here
 const Dict &Dicts::GetPublicDict() const
             ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.cxx:144:13: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:58:15: warning: ‘FromString’ violates the C++ One Definition Rule  [-Wodr]
   std::string FromString(const Tag&t, const char * value, size_t len);
               ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:505:13: note: implicit this pointer type mismatch
 std::string StringFilter::FromString(const Tag&t, const char * value, size_t len)
             ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:29:19: note: type ‘struct StringFilter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT StringFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:505:13: note: ‘FromString’ was previously declared here
 std::string StringFilter::FromString(const Tag&t, const char * value, size_t len)
             ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapWriter.h:51:16: warning: ‘SetImage’ violates the C++ One Definition Rule  [-Wodr]
   virtual void SetImage(Pixmap const &img);
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapWriter.cxx:826:6: note: implicit this pointer type mismatch
 void PixmapWriter::SetImage(Pixmap const &img)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapWriter.h:36:19: note: type ‘struct PixmapWriter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT PixmapWriter : public Writer
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmPixmapWriter.cxx:826:6: note: ‘SetImage’ was previously declared here
 void PixmapWriter::SetImage(Pixmap const &img)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.h:57:8: warning: ‘Change’ violates the C++ One Definition Rule  [-Wodr]
   bool Change();
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.cxx:192:6: note: implicit this pointer type mismatch
 bool FileExplicitFilter::Change()
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.h:38:19: note: type ‘struct FileExplicitFilter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT FileExplicitFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmFileExplicitFilter.cxx:192:6: note: ‘Change’ was previously declared here
 bool FileExplicitFilter::Change()
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.h:58:8: warning: ‘SetFileName’ violates the C++ One Definition Rule  [-Wodr]
   void SetFileName(const char *filename_native);
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.cxx:165:6: note: implicit this pointer type mismatch
 void Writer::SetFileName(const char *filename)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.h:48:19: note: type ‘struct Writer’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT Writer
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmWriter.cxx:165:6: note: ‘SetFileName’ was previously declared here
 void Writer::SetFileName(const char *filename)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:41:8: warning: ‘Write’ violates the C++ One Definition Rule  [-Wodr]
   bool Write(); // Execute()
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.cxx:76:6: note: implicit this pointer type mismatch
 bool ImageWriter::Write()
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:27:19: note: type ‘struct ImageWriter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageWriter : public PixmapWriter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.cxx:76:6: note: ‘Write’ was previously declared here
 bool ImageWriter::Write()
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:31:3: warning: ‘__comp_dtor ’ violates the C++ One Definition Rule  [-Wodr]
   ~ImageWriter();
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.cxx:34:1: note: implicit this pointer type mismatch
 ImageWriter::~ImageWriter()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:27:19: note: type ‘struct ImageWriter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageWriter : public PixmapWriter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageWriter.cxx:34:1: note: ‘__comp_dtor ’ was previously declared here
 ImageWriter::~ImageWriter()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmMediaStorage.h:180:8: warning: ‘SetFromFile’ violates the C++ One Definition Rule  [-Wodr]
   bool SetFromFile(File const &file);
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmMediaStorage.cxx:532:6: note: ‘SetFromFile’ was previously declared here
 bool MediaStorage::SetFromFile(File const &file)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmMediaStorage.cxx:532:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:32:3: warning: ‘__comp_ctor ’ violates the C++ One Definition Rule  [-Wodr]
   StringFilter();
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:27:1: note: implicit this pointer type mismatch
 StringFilter::StringFilter():F(new File)
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:29:19: note: type ‘struct StringFilter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT StringFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:27:1: note: ‘__comp_ctor ’ was previously declared here
 StringFilter::StringFilter():F(new File)
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmDataSetHelper.h:37:13: warning: ‘ComputeVR’ violates the C++ One Definition Rule  [-Wodr]
   static VR ComputeVR(File const & file, DataSet const &ds, const Tag& tag);
             ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmDataSetHelper.cxx:79:4: note: ‘ComputeVR’ was previously declared here
 VR DataSetHelper::ComputeVR(File const &file, DataSet const &ds, const Tag& tag)
    ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmDataSetHelper.cxx:79:4: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:47:15: warning: ‘ToString’ violates the C++ One Definition Rule  [-Wodr]
   std::string ToString(const Tag& t) const;
               ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:41:13: note: ‘ToString’ was previously declared here
 std::string StringFilter::ToString(const Tag& t) const
             ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:33:3: warning: ‘__comp_dtor ’ violates the C++ One Definition Rule  [-Wodr]
   ~StringFilter();
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:31:1: note: implicit this pointer type mismatch
 StringFilter::~StringFilter()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.h:29:19: note: type ‘struct StringFilter’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT StringFilter
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmStringFilter.cxx:31:1: note: ‘__comp_dtor ’ was previously declared here
 StringFilter::~StringFilter()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:49:10: warning: ‘GetImage’ violates the C++ One Definition Rule  [-Wodr]
   Image& GetImage();
          ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:42:8: note: implicit this pointer type mismatch
 Image& ImageReader::GetImage()
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:33:19: note: type ‘struct ImageReader’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageReader : public PixmapReader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:42:8: note: ‘GetImage’ was previously declared here
 Image& ImageReader::GetImage()
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:36:3: warning: ‘__comp_ctor ’ violates the C++ One Definition Rule  [-Wodr]
   ImageReader();
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:29:1: note: implicit this pointer type mismatch
 ImageReader::ImageReader()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:33:19: note: type ‘struct ImageReader’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageReader : public PixmapReader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:29:1: note: ‘__comp_ctor ’ was previously declared here
 ImageReader::ImageReader()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.h:64:8: warning: ‘SetFileName’ violates the C++ One Definition Rule  [-Wodr]
   void SetFileName(const char *filename_native);
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.cxx:826:6: note: implicit this pointer type mismatch
 void Reader::SetFileName(const char *filename)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.h:53:19: note: type ‘struct Reader’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT Reader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmReader.cxx:826:6: note: ‘SetFileName’ was previously declared here
 void Reader::SetFileName(const char *filename)
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:43:16: warning: ‘Read’ violates the C++ One Definition Rule  [-Wodr]
   virtual bool Read();
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:52:6: note: implicit this pointer type mismatch
 bool ImageReader::Read()
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:33:19: note: type ‘struct ImageReader’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageReader : public PixmapReader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:52:6: note: ‘Read’ was previously declared here
 bool ImageReader::Read()
      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:37:11: warning: ‘__comp_dtor ’ violates the C++ One Definition Rule  [-Wodr]
   virtual ~ImageReader();//needs to be virtual to ensure lack of memory leaks
           ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:34:1: note: implicit this pointer type mismatch
 ImageReader::~ImageReader()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.h:33:19: note: type ‘struct ImageReader’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT ImageReader : public PixmapReader
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat/gdcmImageReader.cxx:34:1: note: ‘__comp_dtor ’ was previously declared here
 ImageReader::~ImageReader()
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:284:22: warning: ‘GetDEEnd’ violates the C++ One Definition Rule  [-Wodr]
   const DataElement& GetDEEnd() const;
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.cxx:21:20: note: ‘GetDEEnd’ was previously declared here
 const DataElement& DataSet::GetDEEnd() const
                    ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.cxx:21:20: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.h:58:16: warning: ‘GetDicts’ violates the C++ One Definition Rule  [-Wodr]
   Dicts const &GetDicts() const;
                ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.cxx:171:14: note: ‘GetDicts’ was previously declared here
 Dicts const &Global::GetDicts() const
              ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmGlobal.cxx:171:14: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.h:40:20: warning: ‘GetDictEntry’ violates the C++ One Definition Rule  [-Wodr]
   const DictEntry &GetDictEntry(const Tag& tag, const char *owner = NULL) const;
                    ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.cxx:40:18: note: ‘GetDictEntry’ was previously declared here
 const DictEntry &Dicts::GetDictEntry(const Tag& tag, const char *owner) const
                  ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDicts.cxx:40:18: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:36:3: warning: ‘__comp_ctor ’ violates the C++ One Definition Rule  [-Wodr]
   File();
   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.cxx:20:1: note: implicit this pointer type mismatch
 File::File() {}
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.h:33:19: note: type ‘struct File’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT File : public Object
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.cxx:20:1: note: ‘__comp_ctor ’ was previously declared here
 File::File() {}
 ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmFile.cxx:20:1: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:150:8: warning: ‘Replace’ violates the C++ One Definition Rule  [-Wodr]
   void Replace(const DataElement& de) {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:150:8: note: implicit this pointer type mismatch
   void Replace(const DataElement& de) {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:55:19: note: type ‘struct DataSet’ itself violates the C++ One Definition Rule
 class GDCM_EXPORT DataSet
                   ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:150:8: note: ‘Replace’ was previously declared here
   void Replace(const DataElement& de) {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:150:8: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:72:20: warning: ‘GetDictEntry’ violates the C++ One Definition Rule  [-Wodr]
   const DictEntry &GetDictEntry(const Tag &tag) const
                    ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:72:20: note: ‘GetDictEntry’ was previously declared here
   const DictEntry &GetDictEntry(const Tag &tag) const
                    ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary/gdcmDict.h:72:20: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:188:22: warning: ‘GetDataElement’ violates the C++ One Definition Rule  [-Wodr]
   const DataElement& GetDataElement(const Tag &t) const {
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:188:22: note: ‘GetDataElement’ was previously declared here
   const DataElement& GetDataElement(const Tag &t) const {
                      ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:188:22: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:207:8: warning: ‘FindDataElement’ violates the C++ One Definition Rule  [-Wodr]
   bool FindDataElement(const Tag &t) const {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:207:8: note: ‘FindDataElement’ was previously declared here
   bool FindDataElement(const Tag &t) const {
        ^
/home/kitware/mattm/ITK2/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition/gdcmDataSet.h:207:8: note: code may be misoptimized unless -fno-strict-aliasing is used

CC: @malaterre

@thewtex Your compilation log does not make sense at all (at least to me). Are you sure you started from a clean build tree. It feels like you have multiple copies of GDCM being compiled with different set of flags.

@malaterre , yes, it is not obvious where the issue lies. I did a clean build as @hjmjohnson notes in the report with CMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON. This results in link time optimization:

https://gcc.gnu.org/wiki/LinkTimeOptimization

which is uncovering some issues.

The original issue was probably resolved by 0afe10e51be135013ece61bff182826bf799313f.

For GDCM, most warnings do look odd but some are legitimate. For example, jpeg_memory_mgr seem to be generated with different types, and DICT_ENTRY is defined twice.

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

This seems to have been fixed, at least on Windows.

Was this page helpful?
0 / 5 - 0 ratings