[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-04-03 Thread jmichae3 at yahoo dot com


--- Comment #11 from jmichae3 at yahoo dot com  2009-04-03 09:02 ---
I get perfect code with the borland compiler packing switch with C++ code. it
would be nice if gcc could do the same in C++.

I don't necessarily have to have -O3, but I need to be able to pack structs
somehow so I don't end up with holes.  the structs are required for BIOS I/O or
other things as well.  any holes will render the I/O useless as I use sizeof()
and it can be fooled with holes.  any workarounds? sure-fire pragmas?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #1 from jmichae3 at yahoo dot com  2009-03-09 06:32 ---
Created an attachment (id=17420)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17420action=view)
-fpack-struct -O3 with iostream .ii file

g++ -v -save-temps -fpack-struct -O3 io.cpp
this is the generated io.ii file.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #2 from jmichae3 at yahoo dot com  2009-03-09 06:41 ---
Created an attachment (id=17421)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17421action=view)
-fpack-struct with iostream .ii file

g++ -v -save-temps -fpack-struct io.cpp
both attachments ( .ii files) are from gcc 3.4.5. the results are different,
but  the errors are the same regardless of compiler version.
this is a single .ii file attached.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #3 from jmichae3 at yahoo dot com  2009-03-09 06:45 ---
Created an attachment (id=17422)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17422action=view)
io.cpp, an offending source file

problem is it #includes iostream if -fpack-struct is used.  that is all that
is necessary. will have more bad examples later that are simpler which show the
problem.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #4 from jmichae3 at yahoo dot com  2009-03-09 06:50 ---
Created an attachment (id=17423)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17423action=view)
source that #includes istream and fails just as miserably with -fpack-struct

C:\prj\test\iostreamdosg++ -v -save-temps -fpack-struct i.cpp
Reading specs from c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld
--wi
th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads
--dis
able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry
--d
isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt
--with
out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter
--enabl
e-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.5 (mingw-vista special r3)
 c:/MinGW/bin/../libexec/gcc/mingw32/3.4.5/cc1plus.exe -E -quiet -v -iprefix
c:\
MinGW\bin/../lib/gcc/mingw32/3.4.5/ i.cpp -fpack-struct -o i.ii
ignoring nonexistent directory
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../.
./mingw32/include
ignoring nonexistent directory
/mingw/lib/gcc/mingw32/3.4.5/../../../../mingw32
/include
#include ... search starts here:
#include ... search starts here:
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/include
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include
 /mingw/include
 /mingw/lib/gcc/mingw32/3.4.5/include
 /mingw/include
End of search list.
 c:/MinGW/bin/../libexec/gcc/mingw32/3.4.5/cc1plus.exe -fpreprocessed i.ii
-quie
t -dumpbase i.cpp -auxbase i -version -fpack-struct -o i.s
GNU C++ version 3.4.5 (mingw-vista special r3) (mingw32)
compiled by GNU C version 3.4.5 (mingw-vista special r3).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
In file included from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/
c++/3.4.5/ios:49,
 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/
c++/3.4.5/istream:45,
 from i.cpp:1:
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `std::_Ios_Fmtflags
std::ios_base::setf(std::_Ios_Fmtfla
gs)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:579: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `std::_Ios_Fmtflags
std::ios_base::setf(std::_Ios_Fmtfla
gs, std::_Ios_Fmtflags)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:596: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:597: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `void std::ios_base::unsetf(std::_Ios_Fmtflags)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:608: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `long int std::ios_base::iword(int)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:740: error: cannot bind packed field
`__word-std::ios_base::_Words::_M_iwor
d' to `long int'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `void* std::ios_base::pword(int)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:761: error: cannot bind packed field
`__word-std::ios_base::_Words::_M_pwor
d' to `void*'

C:\prj\test\iostreamdostype i.cpp
#include istream
int main(void) {
return 0;
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #5 from jmichae3 at yahoo dot com  2009-03-09 06:55 ---
Created an attachment (id=17424)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17424action=view)
source that #includes fstream which also fails miserably with -fpack-struct

new attachment: source for f.cpp

C:\prj\test\iostreamdostype f.cpp
#include fstream
int main(void) {
return 0;
}

C:\prj\test\iostreamdosg++ -v -save-temps -fpack-struct f.cpp
Reading specs from c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld
--wi
th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads
--dis
able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry
--d
isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt
--with
out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter
--enabl
e-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.5 (mingw-vista special r3)
 c:/MinGW/bin/../libexec/gcc/mingw32/3.4.5/cc1plus.exe -E -quiet -v -iprefix
c:\
MinGW\bin/../lib/gcc/mingw32/3.4.5/ f.cpp -fpack-struct -o f.ii
ignoring nonexistent directory
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../.
./mingw32/include
ignoring nonexistent directory
/mingw/lib/gcc/mingw32/3.4.5/../../../../mingw32
/include
#include ... search starts here:
#include ... search starts here:
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include
 c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/include
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward
 /mingw/lib/gcc/mingw32/3.4.5/../../../../include
 /mingw/include
 /mingw/lib/gcc/mingw32/3.4.5/include
 /mingw/include
End of search list.
 c:/MinGW/bin/../libexec/gcc/mingw32/3.4.5/cc1plus.exe -fpreprocessed f.ii
-quie
t -dumpbase f.cpp -auxbase f -version -fpack-struct -o f.s
GNU C++ version 3.4.5 (mingw-vista special r3) (mingw32)
compiled by GNU C version 3.4.5 (mingw-vista special r3).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
In file included from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/
c++/3.4.5/ios:49,
 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/
c++/3.4.5/istream:45,
 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/
c++/3.4.5/fstream:45,
 from f.cpp:1:
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `std::_Ios_Fmtflags
std::ios_base::setf(std::_Ios_Fmtfla
gs)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:579: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `std::_Ios_Fmtflags
std::ios_base::setf(std::_Ios_Fmtfla
gs, std::_Ios_Fmtflags)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:596: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:597: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `void std::ios_base::unsetf(std::_Ios_Fmtflags)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:608: error: cannot bind packed field
`((std::ios_base*)this)-std::ios_base:
:_M_flags' to `std::_Ios_Fmtflags'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `long int std::ios_base::iword(int)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:740: error: cannot bind packed field
`__word-std::ios_base::_Words::_M_iwor
d' to `long int'
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h: In member function `void* std::ios_base::pword(int)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ios_bas
e.h:761: error: cannot bind packed field
`__word-std::ios_base::_Words::_M_pwor
d' to `void*'


C:\prj\test\iostreamdos


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #6 from jmichae3 at yahoo dot com  2009-03-09 06:57 ---
Created an attachment (id=17425)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17425action=view)
f.ii for fstream problem


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #7 from jmichae3 at yahoo dot com  2009-03-09 06:59 ---
Created an attachment (id=17426)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17426action=view)
i.ii for istream problem


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread dannysmith at users dot sourceforge dot net


--- Comment #8 from dannysmith at users dot sourceforge dot net  2009-03-09 
07:52 ---
From gcc.info:

*Warning:* the `-fpack-struct' switch causes GCC to generate code
 that is not binary compatible with code generated without that
 switch.  Additionally, it makes the code suboptimal.  Use it to
 conform to a non-default application binary interface.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2009-03-09 15:37 ---
This flag isn't supposed to be used with libstdc++.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-03-09 Thread jmichae3 at yahoo dot com


--- Comment #10 from jmichae3 at yahoo dot com  2009-03-09 20:12 ---
I didn't read that in the documentation.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39404