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



             Bug #: 56539

           Summary: [4.6/4.7/4.8 Regression] ICE: verify_ssa failed:

                    caused by -foptimize-sibling-calls

    Classification: Unclassified

           Product: gcc

           Version: 4.6.3

            Status: UNCONFIRMED

          Keywords: ice-on-valid-code, wrong-code

          Severity: normal

          Priority: P3

         Component: tree-optimization

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: r...@gcc.gnu.org





short string2int( const char * buf, unsigned len )

{

    return (len > 1) ? ( buf[len-1] - '0' ) + (short)10 * string2int(buf,

len-1) : ( *buf - '0' );

}



#include <assert.h>



int main()

{

    assert( string2int("13", 2) == 13);

    return 0;

}





At -O2 this program fails the assertion with 4.6 and 4.7



A 4.8 build with --enable-checking gets an ICE in verify_ssa



$ ~/gcc/4.8/bin/gcc t.c -O2

t.c: In function 'string2int':

t.c:12:1: error: definition in block 3 follows the use

 }

 ^

for SSA_NAME: _15 in statement:

acc_tmp_17 = (short int) _15;

t.c:12:1: internal compiler error: verify_ssa failed

0xa57004 verify_ssa(bool)

        ../../gcc-4.8/gcc/tree-ssa.c:1049

0x83ea9e execute_function_todo

        ../../gcc-4.8/gcc/passes.c:1967

0x83f56c execute_todo

        ../../gcc-4.8/gcc/passes.c:1999

Please submit a full bug report,

with preprocessed source if appropriate.

Please include the complete backtrace with any bug report.

See <http://gcc.gnu.org/bugs.html> for instructions.





Using -fno-optimize-sibling-calls makes the bug go away for all versions.

Reply via email to