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:
next 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: linkBe 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).