The ILNode_BinaryArith_ILNode_GenValue__() function contains if(ReduceOperator(info, (ILNode*)node, (ILNode**)&node, commonType)) { // recursion ILNode_GenValue(node); } ReduceOperator returns 1 only if the out parameter was modified - however this is setting up a recursive loop when compiled with "-O2" , but "-O1" works as expected. When a second variable is used for the outParameter , this is not observed. The broken (before/) and workedaround (after/) preprocessed .i file and assembly listing are available in http://demo.dotgnu.org/~t3rmin4t0r/code/ppc64-segfault.tar.gz (159k) . Test was performed on a DUAL G5 (specs inside the tarball).
Lowered priority to minor.
You are breaking the C standard aliasing rules: ILNode*)node, (ILNode**)&node
Reopening to ...
Mark as a dup of bug 21920 *** This bug has been marked as a duplicate of 21920 ***