What is this GIMPLE?

Richard Biener richard.guenther@gmail.com
Thu Aug 26 08:00:48 GMT 2021


On Thu, Aug 26, 2021 at 9:57 AM Gary Oblock <gary@amperecomputing.com> wrote:
>
> Richard,
>
> It sure looked a label but I had code that would bail out on
> a label before it ever got where I was seeing a problem.
>
> I finally printed out the gimple code and it was a GIMPLE_DEBUG!
> When I bailed out on debugs my pass worked again. Of course
> expanding debugging info failed in cfgexpand. It looks like "-g"
> and my stuff real don't play nice together. Any thoughts on
> what to do? I'm thing about simply disabling my stuff if "-g"
> is specified. This is not the macho thing to do but anything is likely
> a very deep rathole.

For analysis you should ignore GIMPLE_DEBUG.  During transform
you should transform debugs like other stmts - if you run into
debug stmts that you can't transform because you didn't analyze
them and doing so would have changed analysis/transform the
reasonable thing to do is to reset them (gimple_debug_bind_reset_value).

The only "special" thing about the debug stmts is that they do not
have GIMPLE-like RHS but instead they have GENERIC trees
on the RHS.

Richard.

>
> Thanks,
>
> Gary
>
>
> ________________________________
> From: Richard Biener <richard.guenther@gmail.com>
> Sent: Thursday, August 26, 2021 12:45 AM
> To: Gary Oblock <gary@amperecomputing.com>
> Cc: gcc@gcc.gnu.org <gcc@gcc.gnu.org>
> Subject: Re: What is this GIMPLE?
>
> [EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.]
>
>
> On Wed, Aug 25, 2021 at 7:30 AM Gary Oblock via Gcc <gcc@gcc.gnu.org> wrote:
> >
> > I print out a bit of GIMPLE for a program and it looks like this:
> >
> >   <bb 3> [local count: 13634385]:
> >   # a_1 = PHI <a_320(D)(2), a_318(118)>
> >   # n_11 = PHI <n_321(D)(2), n_319(118)>
> > loop:
> >   # DEBUG n => n_11
> >   # DEBUG a => a_1
> >   _2 = (long unsigned int) a_1;
> >   _3 = _2 & 7;
> >   _347 = _3 != 0;
> >
> > That bit that says "loop:" isn't a GIMPLE_LABEL and
> > it has operands, the first of which is "size_t n = size_t;"
> > and I find that a bit odd...
>
> I'm sure it is a GIMPLE_LABEL.
>
> > What is this thing and what does it do? Note, I'm trying to
> > parse and transform some GIMPLE and this is confusing my
> > code (and me.) I looked in the internals doc and grepped the
> > code but I'm still in the dark.
> >
> > Note,I'd like be able to detect and ignore this if it's just informational.
> >
> > Thanks,
> >
> > Gary
> >
> > Gary
> >
> >
> > CONFIDENTIALITY NOTICE: This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and contains information that is confidential and proprietary to Ampere Computing or its subsidiaries. It is to be used solely for the purpose of furthering the parties' business relationship. Any unauthorized review, copying, or distribution of this email (or any attachments thereto) is strictly prohibited. If you are not the intended recipient, please contact the sender immediately and permanently delete the original and any copies of this email and any attachments thereto.


More information about the Gcc mailing list