public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: archie@dellroad.org
To: gcc-gnats@gcc.gnu.org
Subject: c/10231: Request a "reachable" attribute for labels.
Date: Wed, 26 Mar 2003 21:56:00 -0000	[thread overview]
Message-ID: <20030326214607.5701.qmail@sources.redhat.com> (raw)


>Number:         10231
>Category:       c
>Synopsis:       Request a "reachable" attribute for labels.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 26 21:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     "Archie Cobbs" <archie@dellroad.org>
>Release:        2.95.4
>Organization:
>Environment:
FreeBSD 4.8
>Description:
Consider this code:

  foo()
  {
     goto lable3;
  label2:
      printf("don't eliminate me\n");
  label3:
      printf("ok I'm here now\n");
  }

When optimizing -O2 GCC will eliminate the code between
label2 and label3. However I have an application where
I need this code to remain, because I've made the address
of label2 available (via "&&label2") and also have some
asm() statements that are used to jump to label2 that
GCC doesn't know about.

The only way to force GCC to keep the code is to do
add reachable code that does something like this:

  if (non-constant expression that's never true)
    goto label2;

This is a wasteful and ugly kludge though. It would be
nicer if you could simply add a "reachable" attribute to
a label that would tell GCC the label is reachable even
if GCC thinks otherwise. So the example would become:

  foo()
  {
     goto lable3;
  label2 __attribute__ ((reachable)):
      printf("don't eliminate me\n");
  label3:
      printf("ok I'm here now\n");
  }

>How-To-Repeat:

>Fix:

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


             reply	other threads:[~2003-03-26 21:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-26 21:56 archie [this message]
2003-03-26 22:16 Zack Weinberg
2003-03-26 23:16 Archie Cobbs
2003-03-27  0:59 geoffk

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=20030326214607.5701.qmail@sources.redhat.com \
    --to=archie@dellroad.org \
    --cc=gcc-gnats@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).