[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

g++4.0 ICE on attribute cast



X-send-pr-version: 3.113
X-GNATS-Notify:
Message-Id: <E1FgSGi-0003zI-00@skywise>
Sender: Thomas Richter <thor@skywise>
Date: Wed, 17 May 2006 22:05:17 +0200


>Submitter-Id:  net
>Originator:    Thomas Richter
>Organization:
>Confidential:  no
>Synopsis:      ICE on attribute cast
>Severity:      serious
>Priority:      low
>Category:      c++
>Class:         ice-on-legal-code
>Release:       4.0.3 (Debian 4.0.3-1) (Debian testing/unstable)
>Environment:
System: Linux skywise 2.4.32 #1 Sat Dec 17 20:57:41 CET 2005 i686 GNU/Linux
Architecture: i686


host: i486-pc-linux-gnu
build: i486-pc-linux-gnu
target: i486-pc-linux-gnu
configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared - -with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix= -4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cair o --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=i686 --enable-
checking=release i486-linux-gnu
>Description:

Casting an alias attribute to a variable before performing a reinterpret_cast causes an ICE.

>How-To-Repeat:

Enter the following program:

int main(int argc,char **argv)
{
  float x = 0.9;
long y = reinterpret_cast<long &>(static_cast<float &__attribute((may_alias))> x);

  return y;
}

Compile with -O3 -Wall

>Fix:

Introduce an intermediate variable, then cast



Reply to: