public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: nathan@gcc.gnu.org
To: nathan@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/1864
Date: Sun, 01 Apr 2001 00:00:00 -0000	[thread overview]
Message-ID: <20010205120600.32327.qmail@sourceware.cygnus.com> (raw)

The following reply was made to PR c++/1864; it has been noted by GNATS.

From: nathan@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, nathan@gcc.gnu.org, snyder@fnal.gov
Cc:  
Subject: Re: c++/1864
Date: 5 Feb 2001 11:59:52 -0000

 Synopsis: V3 ABI bug
 
 State-Changed-From-To: analyzed->closed
 State-Changed-By: nathan
 State-Changed-When: Mon Feb  5 03:59:52 2001
 State-Changed-Why:
     2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
     
             * invoke.texi (-fdump-class-layout): Document.
             (-fdump-translation-unit): Use `=' as filename separator.
     
     2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
     
             Fix specification and implementation bugs in V3 ABI
             construction vtables.
             * cp-tree.h (flag_dump_class_layout): New flag.
             (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
             (BINFO_LOST_PRIMARY_P): New flag.
             (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
             (BINFO_PRIMARY_MARKED_P): Rename to ...
             (BINFO_PRIMARY_P): ... here.
             (binfo_via_virtual): New prototype.
             * decl2.c (flag_dump_class_layout): New flag.
             (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
             use `=' as a file name separator.
             * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
             bases.
             (build_vtbl_address): If this is a virtual primary base, then
             get the vtbl of what it is ultimately primary for.
             * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
             for BINFO_PRIMARY_P.
             (dfs_skip_nonprimary_vbases_markedp): Likewise.
             (get_shared_vbase_if_not_primary): Likewise.
             (dfs_get_pure_virtuals): Likewise.
             (expand_upcast_fixups): Likewise.
             (fixup_virtual_upcast_offsets): Likewise.
             (dfs_find_vbase_instance): Likewise.
             (find_vbase_instance): Likewise.
             (binfo_from_vbase): Adjust comment to reflect reality.
             (binfo_via_virtual): New function.
             * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
             for binfo walking during VTT construction.
             (dfs_mark_primary_bases): Remove.
             (force_canonical_binfo_r): New function.
             (force_canonical_binfo): New function.
             (mark_primary_virtual_base): New function.
             (mark_primary_bases): Walk in inheritance graph order, use
             mark_primary_virtual_base.
             (determine_primary_base): Use some more intermediate variables.
             (dfs_find_final_overrider): Don't check for overriding along a
             virtual path.
             (dfs_modify_vtables): Walk into primary virtual bases too.
             (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
             (build_base_fields): Likewise.
             (dfs_set_offset_for_unshared_vbases): Likewise.
             (layout_virtual_bases): Likewise.
             (end_of_class): Likewise.
             (finish_struct_1): Call dump_class_hierarchy, if requested.
             (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
             (dump_class_hierarchy_r): Add stream parameter. Emit more information.
             (dump_class_hierarchy): Add file parameter. Append to file, if
             required.
             (finish_vtbls): Adjust accumulate_vtbl_inits call.
             Use canonical base for virtual bases.
             (build_vtt): Add more comments. Adjust build_vtt_inits call.
             (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
             Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
             VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
             virtual VTTs.
             (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
             from DATA.  We want virtual primary bases and all bases via virtual.
             Only set BINFO_VPTR_INDEX for top level. Look up from a primary
             virtual base when not a construction vtable.
             (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
             (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
             Use canonical bases when processing virtual bases.
             (accumulate_vtbl_inits): We're interested in any base via a
             virtual path.
             (dfs_accumulate_vtbl_inits): If this is a primary virtual base
             within a construction vtable, determine what is being overridden.
             (build_vtbl_initializer): Add more comments
             (add_vcall_offset_vtbl_entries_1): Adjust comment.
             (build_rtti_vtbl_entries): Check if the base has lost its
             primary.
     
     2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
     
             * g++.old-deja/g++.abi/primary2.C: New test.
             * g++.old-deja/g++.abi/primary3.C: New test.
             * g++.old-deja/g++.abi/primary4.C: New test.
             * g++.old-deja/g++.abi/primary5.C: New test.
             * g++.old-deja/g++.abi/vtable3.h: New test.
             * g++.old-deja/g++.abi/vtable3a.C: New test.
             * g++.old-deja/g++.abi/vtable3b.C: New test.
             * g++.old-deja/g++.abi/vtable3c.C: New test.
             * g++.old-deja/g++.abi/vtable3d.C: New test.
             * g++.old-deja/g++.abi/vtable3e.C: New test.
             * g++.old-deja/g++.abi/vtable3f.C: New test.
             * g++.old-deja/g++.abi/vtable3g.C: New test.
             * g++.old-deja/g++.abi/vtable3h.C: New test.
             * g++.old-deja/g++.abi/vtable3i.C: New test.
             * g++.old-deja/g++.abi/vtable3j.C: New test.
             * g++.old-deja/g++.oliva/thunk1.C: Remove XFAIL.
     
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1864&database=gcc
>From nobu.nokada@softhome.net Sun Apr 01 00:00:00 2001
From: nobu.nokada@softhome.net
To: gcc-gnats@gcc.gnu.org
Subject: optimization/2077: __builtin_frame_address(2) emits wrong codes.
Date: Sun, 01 Apr 2001 00:00:00 -0000
Message-id: <20010223224923.10630.qmail@sourceware.cygnus.com>
X-SW-Source: 2001-q1/msg01648.html
Content-length: 1191

>Number:         2077
>Category:       optimization
>Synopsis:       __builtin_frame_address(2) emits wrong codes.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Feb 23 14:56:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     nobu.nokada@softhome.net
>Release:        gcc version 2.95.3 19991030 (prerelease)/ gcc version 2.95.2
>Organization:
>Environment:
Linux/ix86
cygwin/ix86
HP-UX
MIPS
>Description:
`__builtin_frame_address(2);' with `-fomit-frame-pointer' command line option emits wrong codes.

ex.

|void* foo(void)
|{
|    return __builtin_frame_address(2);
|}

This is compiled as followings, and causes SEGV or returns unknown value.

|	.file	"bug.c"
|	.version	"01.01"
|gcc2_compiled.:
|.text
|	.align 4
|.globl foo
|	.type	 foo,@function
|foo:
|	movl -12(%esp),%eax
|	movl (%eax),%eax
|	ret
|.Lfe1:
|	.size	 foo,.Lfe1-foo
|	.ident	"GCC: (GNU) 2.95.3 19991030 (prerelease)"

  Also, on some RISC architectures, I've heard it fails without `-fomit-frame-pointer'.
>How-To-Repeat:

>Fix:

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


             reply	other threads:[~2001-04-01  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-01  0:00 nathan [this message]
2001-04-01  0:00 c++/1864 nathan
2001-04-01  0:00 c++/1864 nathan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20010205120600.32327.qmail@sourceware.cygnus.com \
    --to=nathan@gcc.gnu.org \
    --cc=gcc-prs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).