[Bug regression/43840] New: ICE in gcc 4.6.0 with -O1 -finline-small-functions

2010-04-21 Thread djdragonboy at gmail dot com
Program compiles correctly with GCC 4.1.2, 4.2.4, 4.3.4, 4.4.3, and 4.5.0 at
-O3.  In GCC 4.6.0-20100419, program compiles correctly at -O1, but ICE occurs
with -O1 -finline-small-functions.  ICE also occurs at -O2 and higher.  GCC
4.6.0 was built from source checked out of SVN on 19 Apr 2010.  Host system is
RHEL 5.5 on AMD Barcelona processors.

$ cat tfail.c
/* tfail.c */

typedef unsigned long int (*a)(unsigned long int *);

extern __inline__ unsigned long int e(unsigned long int *d){
  unsigned long int r;
  u(r,d);
  return r;
}

a s(a f){
  return f;
}

int main(void){
  unsigned long int b[1];
  unsigned long int c;
  int i;

  for(i=0;i<1;i++){
c=(*s(e))(b);
c=(*s(e))(b);
  }
  return 0;
}

$ /opt/gcc/4.6/bin/gcc -c tfail.c -O1

$ /opt/gcc/4.6/bin/gcc -c tfail.c -O1 -finline-small-functions
tfail.c:25:1: internal compiler error: in
cgraph_decide_inlining_of_small_functions, at ipa-inline.c:1009
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

$ /opt/gcc/4.6/bin/gcc --version
gcc (GCC) 4.6.0 20100419 (experimental)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ /opt/gcc/4.6/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/opt/gcc/4.6/bin/gcc
COLLECT_LTO_WRAPPER=/opt/gcc/4.6/libexec/gcc/x86_64-redhat-linux/4.6.0/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --host=x86_64-redhat-linux
--build=x86_64-redhat-linux --target=x86_64-redhat-linux --enable-shared
--enable-static --prefix=/opt/gcc/4.6 --disable-libmudflap
--enable-__cxa_atexit --enable-check=thorough --enable-languages=c,c++,fortran
--enable-multilib --with-pic --enable-stage1-checking=yes --disable-nls
--enable-shared=libgfortran --with-gmp=/usr/local --with-mpfr=/usr/local
--with-mpc=/usr/local --with-mpfrcx=/usr/local --with-ppl=/usr/local
--with-cloog=/usr/local
Thread model: posix
gcc version 4.6.0 20100419 (experimental) (GCC)


-- 
   Summary: ICE in gcc 4.6.0 with -O1 -finline-small-functions
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: djdragonboy at gmail dot com
 GCC build triplet: x86_64-redhat-linux
  GCC host triplet: x86_64-redhat-linux
GCC target triplet: x86_64-redhat-linux


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



[Bug tree-optimization/43791] [4.6 Regression] kernel/rtmutex.c:1138:1: internal compiler error: in cgraph_decide_inlining_of_small_functions, at ipa-inline.c:1009

2010-04-22 Thread djdragonboy at gmail dot com


--- Comment #18 from djdragonboy at gmail dot com  2010-04-22 18:40 ---
I should have been more aggressive in my searches; filed a duplicate bug report
#43840.  I have a small test case there that compiles fine under 4.6.0 with -O1
but fails on this bug with -O1 -finline-small-functions:


typedef unsigned long int (*a)(unsigned long int *);

extern __inline__ unsigned long int e(unsigned long int *d){
  unsigned long int r;
  u(r,d);
  return r;
}

a s(a f){
  return f;
}

int main(void){
  unsigned long int b[1];
  unsigned long int c;
  int i;

  for(i=0;i<1;i++){
c=(*s(e))(b);
c=(*s(e))(b);
  }
  return 0;
}


-- 


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