[cfe-dev] Adding a new pragma to Clang
Hal Finkel
hfinkel at anl.gov
Mon Jan 6 08:02:39 PST 2014
----- Original Message -----
> From: "Alp Toker" <alp at nuanti.com>
> To: "Renato Golin" <renato.golin at linaro.org>, "Hal Finkel" <hfinkel at anl.gov>
> Cc: "Richard Smith" <richard at metafoo.co.uk>, "Clang Dev" <cfe-dev at cs.uiuc.edu>
> Sent: Monday, January 6, 2014 9:42:01 AM
> Subject: Re: [cfe-dev] Adding a new pragma to Clang
>
>
> On 06/01/2014 15:32, Renato Golin wrote:
> > On 6 January 2014 15:20, Hal Finkel <hfinkel at anl.gov
> > <mailto:hfinkel at anl.gov>> wrote:
> >
> > I think he'll need something very close to the OpenMP syntax.
> >
> >
> > Or that.
> >
> > I don't really mind *how* it's represented in C code, as long as it
> > does what we need in IR in the long run: lexical block level
> > metadata.
>
> The C frontend syntax is the one that's going to ship and get used in
> tens of thousands of software projects, and which we might still be
> having to support 15 years later when the CPU architectures have all
> changed. It's quite likely in that lifetime that other vendors will
> try
> to do a compatible implementation too if it sees adoption.
I recommend that, where practical, we use a syntax compatible with other implementations. For example, Intel's compiler implements some of these which I believe we'd like to have:
ivdep
loop_count
vector/novector
unroll/nounroll
http://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/GUID-346BAAA5-CF2D-4A26-9194-CA840BFB34E5.htm
IBM's compiler also has a few of these (unroll, novector, etc.):
http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fcompiler%2Fref%2Frupragen.htm
-Hal
>
> So from my point of view the backend implementation, and even the AST
> representation if there is any, is a secondary almost trivial issue
> compared to specifying a new extension to the language. But that's my
> take as a parser maintainer :-)
>
> Incidentally I don't think there needs to be an AST representation as
> such. This looks like it can be supported with a lookup map for
> statements / expressions, and synthesized attributes for functions.
>
> The list of commands you posted in the previous email is a good
> starting
> point, but I'd like to see real code samples of what you want to
> work.
>
> Can it annotate statements, declarations or both? Is it expected to
> survive through template instantiations?
Yes.
> Do the directives require
> semantic analysis?
This is an interesting point; some of them might.
> Those are the questions that'll determine how this
> is
> implemented.
>
> Hal's suggestion to plug into the OpenMP directives is also very
> interesting.
Just trying to figure out how to not reinvent the wheel yet again ;)
-Hal
>
> Alp.
>
> >
> > cheers,
> > --renato
>
> --
> http://www.nuanti.com
> the browser experts
>
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the cfe-dev
mailing list