ICE with Athlon tuning in gcc-current-000418

Andi Kleen ak@suse.de
Tue Apr 18 08:46:00 GMT 2000


Got an ICE with gcc-current when the Athlon tuning is turned on 
(without -mcpu/arch it works) 

-Andi


% gcc -v
Reading specs from /pkg/gcc-current/bin/../lib/gcc-lib/i686-pc-linux-gnu/2.96/specs
gcc version 2.96 20000418 (experimental)

% gcc -mcpu=athlon -march=athlon -O2 -ffast-math -c -O2 test.c
main.c: In function `main':
main.c:71: warning: assignment makes pointer from integer without a cast
main.c:130: Internal compiler error in `gen_reg_rtx', at emit-rtl.c:537
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.




typedef int FILE; 
typedef unsigned size_t;
#define stdout 0
#define stderr 0

typedef struct { 
	char outPath[100];
} global_flags;


int main(int argc, char **argv)
{

  char testbuffer[16384];
  short int Buffer[2][1152];
  int iread,itest;
  global_flags gf;
  FILE *outf;





  init(&gf);                   
  if(argc==1) usage(&gf,argv[0]);   

   





  parse_args(&gf,argc, argv);


   
  if (!__extension__								        ({ size_t __s1_len, __s2_len;						           (__builtin_constant_p (gf.outPath) && __builtin_constant_p ( "-")		            && (__s1_len = strlen (gf.outPath), __s2_len = strlen ( "-"),		      	  (!((size_t)(const void *)((gf.outPath) + 1) - (size_t)(const void *)(gf.outPath) == 1) || __s1_len >= 4)			      	  && (!((size_t)(const void *)(( "-") + 1) - (size_t)(const void *)( "-") == 1) || __s2_len >= 4))		            ? memcmp ((__const char *) (gf.outPath), (__const char *) ( "-"),		      		(__s1_len < __s2_len ? __s1_len : __s2_len) + 1)	            : (__builtin_constant_p (gf.outPath) && ((size_t)(const void *)((gf.outPath) + 1) - (size_t)(const void *)(gf.outPath) == 1)		      	 && (__s1_len = strlen (gf.outPath), __s1_len < 4)			      	 ? (__builtin_constant_p ( "-") && ((size_t)(const void *)(( "-") + 1) - (size_t)(const void *)( "-") == 1)		      	    ? (__extension__ ({ register int __result =				      		      (((__const unsigned char *) (__const char *) (gf.outPath))[0]   		       - ((__const unsigned char *) (__const char *)(  "-"))[0]);		    if ( __s1_len > 0 && __result == 0)				      		      {							      			__result = (((__const unsigned char *)		      				     (__const char *) (gf.outPath))[1]		      				    - ((__const unsigned char *)	      				       (__const char *) (  "-"))[1]);	      			if ( __s1_len > 1 && __result == 0)			      			  {						      			    __result =					      			      (((__const unsigned char *)		      				(__const char *) (gf.outPath))[2]		      			       - ((__const unsigned char *)		      				  (__const char *) (  "-"))[2]);		      			    if ( __s1_len > 2 && __result == 0)			      			      __result =				      				(((__const unsigned char *)		      				  (__const char *) (gf.outPath))[3]		      				 - ((__const unsigned char *)		      				    (__const char *) (  "-"))[3]);		      			  }						      		      }							      		    __result; }))				      	    : (__extension__ ({ __const unsigned char *__s2 =			      		      (__const unsigned char *) (__const char *) (  "-");	      		    register int __result =				      		      (((__const unsigned char *) (__const char *) (gf.outPath))[0]   		       - __s2[0]);					      		    if ( __s1_len > 0 && __result == 0)			      		      {							      			__result = (((__const unsigned char *)		      				     (__const char *) (gf.outPath))[1] - __s2[1]);    			if ( __s1_len > 1 && __result == 0)			      			  {						      			    __result = (((__const unsigned char *)	      					 (__const char *) (gf.outPath))[2] - __s2[2]);			    if ( __s1_len > 2 && __result == 0)		      			      __result = (((__const unsigned char *)	      					  (__const char *)  (gf.outPath))[3]	      					  - __s2[3]);			      			  }						      		      }							      		    __result; })))				      	 : (__builtin_constant_p ( "-") && ((size_t)(const void *)(( "-") + 1) - (size_t)(const void *)( "-") == 1)		      	    && (__s2_len = strlen ( "-"), __s2_len < 4)			      	    ? (__builtin_constant_p (gf.outPath) && ((size_t)(const void *)((gf.outPath) + 1) - (size_t)(const void *)(gf.outPath) == 1)	      	       ? (__extension__ ({ register int __result =				      		      (((__const unsigned char *) (__const char *) (gf.outPath))[0]   		       - ((__const unsigned char *) (__const char *)(  "-"))[0]);		    if ( __s2_len > 0 && __result == 0)				      		      {							      			__result = (((__const unsigned char *)		      				     (__const char *) (gf.outPath))[1]		      				    - ((__const unsigned char *)	      				       (__const char *) (  "-"))[1]);	      			if ( __s2_len > 1 && __result == 0)			      			  {						      			    __result =					      			      (((__const unsigned char *)		      				(__const char *) (gf.outPath))[2]		      			       - ((__const unsigned char *)		      				  (__const char *) (  "-"))[2]);		      			    if ( __s2_len > 2 && __result == 0)			      			      __result =				      				(((__const unsigned char *)		      				  (__const char *) (gf.outPath))[3]		      				 - ((__const unsigned char *)		      				    (__const char *) (  "-"))[3]);		      			  }						      		      }							      		    __result; }))				      	       : (__extension__ ({ __const unsigned char *__s1 =			      		      (__const unsigned char *) (__const char *) (gf.outPath);	      		    register int __result =				      		      __s1[0] - ((__const unsigned char *)		      				 (__const char *) (  "-"))[0];		      		    if ( __s2_len > 0 && __result == 0)			      		      {							      			__result = (__s1[1]				      				    - ((__const unsigned char *)	      				       (__const char *) (  "-"))[1]);	      			if ( __s2_len > 1 && __result == 0)			      			  {						      			    __result =					      			      (__s1[2] - ((__const unsigned char *)	      					  (__const char *) (  "-"))[2]);	      			    if ( __s2_len > 2 && __result == 0)		      			      __result =				      				(__s1[3]				      				 - ((__const unsigned char *)		      				    (__const char *) (  "-"))[3]);		      			  }						      		      }							      		    __result; })))			      	    : strcmp (gf.outPath,  "-")))); })) {

# 69 "main.c"
    outf = stdout;
  } else {
    if ((outf = fopen(gf.outPath, "wb")) == ((void *)0)) {
      fprintf(stderr,"Could not create \"%s\".\n", gf.outPath);
      exit(1);
    }
  }








   





  init_infile(&gf);

   


  init_params(&gf);
  print_config(&gf);    









    {

       
      do {
	 
	iread=readframe(&gf,Buffer);

	 
	if (16384 < 1.25*iread + 7200) 
	  fprintf(stderr,"test buffer is not big enough. \n");

	 
	itest=encode_buffer(&gf,Buffer[0],Buffer[1],iread,
              testbuffer,(int)sizeof(testbuffer)); 
	fwrite(testbuffer,1,itest,outf);        
      } while (iread);
    }

  itest=encode_finish(&gf,testbuffer,(int)sizeof(testbuffer));    
  fwrite(testbuffer,1,itest,outf);
  fclose(outf);
  close_infile(&gf);             
  test_tags(&gf);                 
  return 0;
}









More information about the Gcc-bugs mailing list