public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
@ 2006-01-22 10:52 ` gdr at gcc dot gnu dot org
2006-01-22 17:32 ` gdr at gcc dot gnu dot org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: gdr at gcc dot gnu dot org @ 2006-01-22 10:52 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from gdr at gcc dot gnu dot org 2006-01-22 10:52 -------
Definitely. Use of dynamic_cast should be rejected if -fno-rtti.
Working on a patch.
-- Gaby
--
gdr at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |gdr at gcc dot gnu dot org
AssignedTo|unassigned at gcc dot gnu |gdr at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
Last reconfirmed|2005-12-11 23:08:53 |2006-01-22 10:52:55
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
2006-01-22 10:52 ` [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used gdr at gcc dot gnu dot org
@ 2006-01-22 17:32 ` gdr at gcc dot gnu dot org
2006-01-22 17:39 ` gdr at gcc dot gnu dot org
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: gdr at gcc dot gnu dot org @ 2006-01-22 17:32 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from gdr at gcc dot gnu dot org 2006-01-22 17:32 -------
Subject: Bug 10891
Author: gdr
Date: Sun Jan 22 17:32:30 2006
New Revision: 110092
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110092
Log:
2006-01-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
PR c++/10891
* rtti.c (build_dynamic_cast): Reject dynamic_cast use if
-fno-rtti.
testsuite/
2006-01-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
PR c++/10891
* g++.dg/rtti/no-rtti.C: New.
Added:
trunk/gcc/testsuite/g++.dg/rtti/no-rtti.C (with props)
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/rtti.c
trunk/gcc/testsuite/ChangeLog
Added: trunk/gcc/testsuite/g++.dg/rtti/no-rtti.C
URL:
http://gcc.gnu.org/viewcvs/trunk/gcc/testsuite/g%2B%2B.dg/rtti/no-rtti.C?root=gcc&view=auto&rev=110092
==============================================================================
--- trunk/gcc/testsuite/g++.dg/rtti/no-rtti.C (added)
+++ trunk/gcc/testsuite/g++.dg/rtti/no-rtti.C Sun Jan 22 17:32:30 2006
@@ -1,0 +1,18 @@
+// { dg-do compile }
+// { dg-options "-fno-rtti" }
+
+// PR C++/10891
+
+struct A {
+ virtual ~A() { }
+};
+
+struct B : A {
+};
+
+A* f();
+
+int main()
+{
+ B* b = dynamic_cast<B*>(f()); // { dg-error "error: " }
+}
Propchange: trunk/gcc/testsuite/g++.dg/rtti/no-rtti.C
('svn:mime-type' added)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
2006-01-22 10:52 ` [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used gdr at gcc dot gnu dot org
2006-01-22 17:32 ` gdr at gcc dot gnu dot org
@ 2006-01-22 17:39 ` gdr at gcc dot gnu dot org
2006-01-29 10:39 ` gdr at gcc dot gnu dot org
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: gdr at gcc dot gnu dot org @ 2006-01-22 17:39 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from gdr at gcc dot gnu dot org 2006-01-22 17:39 -------
Fixed in 4.2.0.
--
gdr at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
Target Milestone|--- |4.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
` (2 preceding siblings ...)
2006-01-22 17:39 ` gdr at gcc dot gnu dot org
@ 2006-01-29 10:39 ` gdr at gcc dot gnu dot org
2006-02-14 22:29 ` dbaron at dbaron dot org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: gdr at gcc dot gnu dot org @ 2006-01-29 10:39 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from gdr at gcc dot gnu dot org 2006-01-29 10:38 -------
Subject: Bug 10891
Added: branches/c++-compat-branch/boehm-gc/callprocs
URL:
http://gcc.gnu.org/viewcvs/branches/c%2B%2B-compat-branch/boehm-gc/callprocs?root=gcc&view=auto&rev=110367
==============================================================================
--- branches/c++-compat-branch/boehm-gc/callprocs (added)
+++ branches/c++-compat-branch/boehm-gc/callprocs Sun Jan 29 10:36:13 2006
@@ -1,0 +1,4 @@
+#!/bin/sh
+GC_DEBUG=1
+export GC_DEBUG
+$* 2>&1 | awk '{print "0x3e=c\""$0"\""};/^\t##PC##=/ {if ($2 != 0) {print
$2"?i"}}' | adb $1 | sed "s/^ >/>/"
Propchange: branches/c++-compat-branch/boehm-gc/callprocs
('svn:executable' added)
Modified: branches/c++-compat-branch/boehm-gc/configure
URL:
http://gcc.gnu.org/viewcvs/branches/c%2B%2B-compat-branch/boehm-gc/configure?root=gcc&view=diff&rev=110367&r1=110366&r2=110367
==============================================================================
--- branches/c++-compat-branch/boehm-gc/configure (original)
+++ branches/c++-compat-branch/boehm-gc/configure Sun Jan 29 10:36:13 2006
@@ -1767,7 +1767,7 @@
# Define the identity of the package.
PACKAGE=gc
- VERSION=6.3
+ VERSION=6.6
# Some tools Automake needs.
Propchange: branches/c++-compat-branch/boehm-gc/configure
('svn:executable' modified)
Added: branches/c++-compat-branch/boehm-gc/cord/de_win.ICO
URL:
http://gcc.gnu.org/viewcvs/branches/c%2B%2B-compat-branch/boehm-gc/cord/de_win.ICO?root=gcc&view=auto&rev=110367
==============================================================================
Binary file - no diff available.
Propchange: branches/c++-compat-branch/boehm-gc/cord/de_win.ICO
('svn:executable' added)
Propchange: branches/c++-compat-branch/boehm-gc/cord/de_win.ICO
('svn:mime-type' added)
Added: branches/c++-compat-branch/boehm-gc/depcomp
URL:
http://gcc.gnu.org/viewcvs/branches/c%2B%2B-compat-branch/boehm-gc/depcomp?root=gcc&view=auto&rev=110367
==============================================================================
--- branches/c++-compat-branch/boehm-gc/depcomp (added)
+++ branches/c++-compat-branch/boehm-gc/depcomp Sun Jan 29 10:36:13 2006
@@ -1,0 +1,436 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+ base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+ dir=`echo "$object" | sed 's,/.*$,/,'`
+ if test "$dir" = "$object"; then
+ dir=
+ fi
+ # FIXME: should be _deps on DOS.
+ depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. This file always lives in the current directory.
+ # Also, the AIX compiler puts `$object:' at the start of each line;
+ # $object doesn't have directory information.
+ stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
+ outname="$stripped.o"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+
+ base=`echo "$object" | sed -e 's/\.o$//' -e 's/\.lo$//'`
+ tmpdepfile1="$base.o.d"
+ tmpdepfile2="$base.d"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-MD
+ else
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile1"; then
+ tmpdepfile="$tmpdepfile1"
+ else
+ tmpdepfile="$tmpdepfile2"
+ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a space and a tab in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ test -z "$dashmflag" && dashmflag=-M
+ ( IFS=" "
+ case " $* " in
+ *" --mode=compile "*) # this is libtool, let us make it quiet
+ for arg
+ do # cycle over the arguments
+ case "$arg" in
+ "--mode=compile")
+ # insert --quiet before "--mode=compile"
+ set fnord "$@" --quiet
+ shift # fnord
+ ;;
+ esac
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # "$arg"
+ done
+ ;;
+ esac
+ "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' >
"$tmpdepfile"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ # X makedepend
+ (
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in no)
+ set ""; shift
+ cleared=yes
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift;;
+ -*)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ ( IFS=" "
+ case " $* " in
+ *" --mode=compile "*)
+ for arg
+ do # cycle over the arguments
+ case $arg in
+ "--mode=compile")
+ # insert --quiet before "--mode=compile"
+ set fnord "$@" --quiet
+ shift # fnord
+ ;;
+ esac
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # "$arg"
+ done
+ ;;
+ esac
+ "$@" -E |
+ sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ ( IFS=" "
+ case " $* " in
+ *" --mode=compile "*)
+ for arg
+ do # cycle over the arguments
+ case $arg in
+ "--mode=compile")
+ # insert --quiet before "--mode=compile"
+ set fnord "$@" --quiet
+ shift # fnord
+ ;;
+ esac
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # "$arg"
+ done
+ ;;
+ esac
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u
\\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >>
"$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >>
"$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
Propchange: branches/c++-compat-branch/boehm-gc/depcomp
('svn:executable' added)
Added: branches/c++-compat-branch/gcc/testsuite/g++.dg/rtti/no-rtti.C
URL:
http://gcc.gnu.org/viewcvs/branches/c%2B%2B-compat-branch/gcc/testsuite/g%2B%2B.dg/rtti/no-rtti.C?root=gcc&view=auto&rev=110367
==============================================================================
--- branches/c++-compat-branch/gcc/testsuite/g++.dg/rtti/no-rtti.C (added)
+++ branches/c++-compat-branch/gcc/testsuite/g++.dg/rtti/no-rtti.C Sun Jan 29
10:36:13 2006
@@ -1,0 +1,18 @@
+// { dg-do compile }
+// { dg-options "-fno-rtti" }
+
+// PR C++/10891
+
+struct A {
+ virtual ~A() { }
+};
+
+struct B : A {
+};
+
+A* f();
+
+int main()
+{
+ B* b = dynamic_cast<B*>(f()); // { dg-error "error: " }
+}
Propchange: branches/c++-compat-branch/gcc/testsuite/g++.dg/rtti/no-rtti.C
('svn:mime-type' added)
Added:
branches/c++-compat-branch/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2.c
URL:
http://gcc.gnu.org/viewcvs/branches/c%2B%2B-compat-branch/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2.c?root=gcc&view=auto&rev=110367
==============================================================================
---
branches/c++-compat-branch/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2.c
(added)
+++
branches/c++-compat-branch/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2.c
Sun Jan 29 10:36:13 2006
@@ -1,0 +1,59 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+#define SH_SUM 210
+#define CH_SUM 120
+
+int main1 ()
+{
+ int i;
+ signed short data_sh[N] = {0,2,4,6,8,10,12,14,16,18,20,22,24,26,28};
+ signed char data_ch[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+ signed int intsum = 0;
+ signed short shortsum = 0;
+
+ /* widenning sum: sum shorts into int. */
+ for (i = 0; i < N; i++){
+ intsum += data_sh[i];
+ }
+
+ /* check results: */
+ if (intsum != SH_SUM)
+ abort ();
+
+ /* widenning sum: sum chars into int. */
+ intsum = 0;
+ for (i = 0; i < N; i++){
+ intsum += data_ch[i];
+ }
+
+ /* check results: */
+ if (intsum != CH_SUM)
+ abort ();
+
+ /* widenning sum: sum chars into short. */
+ for (i = 0; i < N; i++){
+ shortsum += data_ch[i];
+ }
+
+ /* check results: */
+ if (shortsum != CH_SUM)
+ abort ();
+
+ return 0;
+}
+
+int main (void)
+{
+ check_vect ();
+
+ return main1 ();
+}
+
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected"
3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail
*-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target
vect_widen_sum } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
Propchange:
branches/c++-compat-branch/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2.c
('svn:executable' added)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
` (3 preceding siblings ...)
2006-01-29 10:39 ` gdr at gcc dot gnu dot org
@ 2006-02-14 22:29 ` dbaron at dbaron dot org
2006-07-05 18:50 ` apl at alum dot mit dot edu
2006-07-05 19:09 ` apl at alum dot mit dot edu
6 siblings, 0 replies; 8+ messages in thread
From: dbaron at dbaron dot org @ 2006-02-14 22:29 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from dbaron at dbaron dot org 2006-02-14 22:29 -------
Was it really necessary to break dynamic_cast<void*>() with -fno-rtti ?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
` (4 preceding siblings ...)
2006-02-14 22:29 ` dbaron at dbaron dot org
@ 2006-07-05 18:50 ` apl at alum dot mit dot edu
2006-07-05 19:09 ` apl at alum dot mit dot edu
6 siblings, 0 replies; 8+ messages in thread
From: apl at alum dot mit dot edu @ 2006-07-05 18:50 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from apl at alum dot mit dot edu 2006-07-05 18:50 -------
I think that this fix may have been too aggressive. I have a templated class
with a member function that does a dynamic_cast<>. With 4.2, I'm getting
errors when
I compile this template, despite the fact that I don't call the method that
needs RTTI.
I'll build a test case and submit it.
I believe that this bug should be reopened as a regression in functionality
against 3.4.3 thru 4.1.1
--
apl at alum dot mit dot edu changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |apl at alum dot mit dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
` (5 preceding siblings ...)
2006-07-05 18:50 ` apl at alum dot mit dot edu
@ 2006-07-05 19:09 ` apl at alum dot mit dot edu
6 siblings, 0 replies; 8+ messages in thread
From: apl at alum dot mit dot edu @ 2006-07-05 19:09 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from apl at alum dot mit dot edu 2006-07-05 19:08 -------
Created an attachment (id=11835)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11835&action=view)
protection against dynamic_cast<> with -fno-rtti is too eager
Here's a test that NEVER instantiates the template, but if compiled with
g++ -fno-rtti
will (un)happily complain.
Ideally, unless I call the templated function derived<T>::upcast() from a
compilation unit that has -fno-rtti specified, I really don't think I should
get an error
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used
[not found] <20030520220600.10891.188943@bugs.debian.org>
@ 2003-05-24 18:22 ` lerdsuwa@gcc.gnu.org
0 siblings, 0 replies; 8+ messages in thread
From: lerdsuwa@gcc.gnu.org @ 2003-05-24 18:22 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10891
lerdsuwa@gcc.gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2003-05-24 18:06:46
date| |
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2006-07-05 19:09 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-10891-6057@http.gcc.gnu.org/bugzilla/>
2006-01-22 10:52 ` [Bug c++/10891] code using dynamic_cast causes segfaults when -fno-rtti is used gdr at gcc dot gnu dot org
2006-01-22 17:32 ` gdr at gcc dot gnu dot org
2006-01-22 17:39 ` gdr at gcc dot gnu dot org
2006-01-29 10:39 ` gdr at gcc dot gnu dot org
2006-02-14 22:29 ` dbaron at dbaron dot org
2006-07-05 18:50 ` apl at alum dot mit dot edu
2006-07-05 19:09 ` apl at alum dot mit dot edu
[not found] <20030520220600.10891.188943@bugs.debian.org>
2003-05-24 18:22 ` lerdsuwa@gcc.gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).