From: SourceForge.net <no...@so...> - 2009-01-22 17:03:05
|
Bugs item #2528941, was opened at 2009-01-22 18:03 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=2528941&group_id=1645 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: code generation (general) Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Gran Uddeborg (goeran) Assigned to: Nobody/Anonymous (nobody) Summary: Generated code breaks strict aliasing rules Initial Comment: The code generated by SWIG 1.3.36 breaks the rules for strict aliasing. Recent versions of GCC triggers this problem. To reproduce, use the attached test case with these commands: swig -c++ -java break_strict_aliasing.swg c++ -shared -fPIC -O2 -o libbreak_strict_aliasing.so -I$JAVA_HOME/include -I$JAVA_HOME/include/linux break_strict_aliasing_wrap.cxx $JAVA_HOME/javac break_strict_aliasing.java CLASSPATH=. LD_LIBRARY_PATH=. $JAVA_HOME/java break_strict_aliasing This should print the number "1", but it doesn't. Using GCC 4.1.2 and Java 1.6.0 on a x86_64 RHEL 5 machine gives the result 1082477248. In other combinations I've got "0", and yet others have crashed. Adding the -Wall flag to the compilation will give warnings about the code triggering the problem. Lowering optimisation with -O1, -O0, no -O flag, or -fno-strict-aliasing are workarounds for the problem. with the obvious drawback of redusing the optimisers efficiency. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=2528941&group_id=1645 |