[PATCH] -fms-extensions: Implement half of #pragma init_seg

Reid Kleckner rnk at google.com
Mon Jul 21 17:42:56 PDT 2014


Thanks!  I made the ExpectAndConsume changes.

On Mon, Jul 21, 2014 at 8:09 AM, Aaron Ballman <aaron at aaronballman.com>
wrote:

> > Index: test/SemaCXX/pragma-init_seg.cpp
> > ===================================================================
> > --- /dev/null
> > +++ test/SemaCXX/pragma-init_seg.cpp
> > @@ -0,0 +1,15 @@
> > +// RUN: %clang_cc1 -fsyntax-only -verify -fms-extensions %s -triple
> x86_64-pc-win32
> > +
> > +#pragma init_seg(L".my_seg") // expected-warning {{expected 'compiler',
> 'lib', 'user', or a string literal}}
> > +#pragma init_seg( // expected-warning {{expected 'compiler', 'lib',
> 'user', or a string literal}}
> > +#pragma init_seg asdf // expected-warning {{missing '('}}
> > +#pragma init_seg) // expected-warning {{missing '('}}
> > +#pragma init_seg("a" "b") // no warning
> > +#pragma init_seg("a", "b") // expected-warning {{missing ')'}}
> > +#pragma init_seg("a") asdf // expected-warning {{extra tokens at end of
> '#pragma init_seg'}}
> > +#pragma init_seg("\x") // expected-error {{\x used with no following
> hex digits}}
> > +#pragma init_seg("a" L"b") // expected-warning {{expected non-wide
> string literal in '#pragma init_seg'}}
>
> I think these should be in test/Preprocessor instead of test/SemaCXX.
>

I don't think Preprocessor is right, since -E won't trigger this
processing.  This is a parser test mushed into the same file as the SemaCXX
test below.  I'm going to leave this as-is and submit.


> > +
> > +int f();
> > +#pragma init_seg(compiler)
> > +int __declspec(thread) x = f(); // expected-error {{initializer for
> thread-local variable must be a constant expression}}
> >
>
> ~Aaron
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140721/cf90977f/attachment.html>


More information about the cfe-commits mailing list