c/3665: ICE in merge_blocks_move_predecessor_nojumps, at flow.c:2341

Franz.Sirl-kernel@lauterbach.com Franz.Sirl-kernel@lauterbach.com
Thu Jul 12 14:16:00 GMT 2001


>Number:         3665
>Category:       c
>Synopsis:       ICE in merge_blocks_move_predecessor_nojumps, at flow.c:2341
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 12 14:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Franz.Sirl-kernel@lauterbach.com
>Release:        gcc-3.0, current gcc-3.0.1, current gcc-3.1
>Organization:
>Environment:
powerpc-linux-gnu, arm-linux-gnu
>Description:
The folllowing code snippet lets gcc-3.0 and gcc-3.0.1 ICE like that:

[fsirl@enzo:/cvsx/rawhide/BUILD/unixODBC-2.0.7/Drivers/template]$ gcc -O2 -fPIC bug.c
bug.c: In function `SQLSetConnectOption':
bug.c:43: Internal compiler error in merge_blocks_move_predecessor_nojumps, at flow.c:2341
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

With current gcc-3.1 CVS the ICE is  different:
[fsirl@entropy:~]$ ~/obj/gccm/gcc/stage1/xgcc -B ~/obj/gccm/gcc/stage1/ -O2 -fPIC -c flowbug.c
flowbug.c: In function `SQLSetConnectOption':
flowbug.c:42: Return not followed by barrier
(jump_insn 152 151 71 (parallel[
            (return)
            (use (reg:SI 65 lr))
        ] ) -1 (nil)
    (nil))
flowbug.c:42: Internal compiler error in verify_flow_info, at flow.c:8082
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

gcc-2.95.3 compiles this just fine, so this is a regression.
>How-To-Repeat:
compile with -O2 -fPIC:

 
typedef struct tDRVDBC
{
  void * hLog;
} *HDRVDBC;
 
int logPushMsg( void* hLog, char *pszModule, char *pszFunctionName, int nLine, int nSeverity, int nCode, char *pszMsg );
 
signed short int SQLSetConnectOption(void * hDrvDbc,
                                     unsigned short int nOption,
                                     unsigned long int vParam)
{
  HDRVDBC hDbc = (HDRVDBC)hDrvDbc;
 
  if ( hDbc == 0 )
    return (-2);
 
  switch ( nOption )
    {
      case 106:
      case 107:
 
      case 110:
      case 104:
      switch ( vParam )
        {
          case 1UL:
          case 0UL:
          default:
          ;
        }
      break;
 
      case 105:
      case 101:
      case 102:
      default:
      ;
    }
 
  logPushMsg( hDbc->hLog, "SQLSetConnectOption.c", "SQLSetConnectOption.c", 49, 1, 1,
"SQL_SUCCESS_WITH_INFO Function not fully implemented" );
  return 1;
}
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list