This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

libcpp: registering both a pragma and a pragma namespace with the same name


Hi Tom.  Hi folks.

We've asked Balaji to rewrite the <#pragma simd> handling for cilkplus as we currently do for OMP, etc, in init_pragma().

The cilkplus branch currently has something like:

      cpp_register_deferred_pragma (parse_in, "simd", "",
                                  PRAGMA_SIMD_EMPTY, true, false);
      cpp_register_deferred_pragma (parse_in, "simd", "assert",
	                            PRAGMA_SIMD_ASSERT, true, false);
      cpp_register_deferred_pragma (parse_in, "simd", "noassert",
	                            PRAGMA_SIMD_NOASSERT, true, false);
      cpp_register_deferred_pragma (parse_in, "simd", "vectorlength",
	                            PRAGMA_SIMD_VECTORLENGTH, true, false);

Notice that #pragma simd can be both a pragma name space, and also a lone pragma with no arguments:

	#pragma simd assert
		-or-
	#pragma simd

It seems like the code in libcpp's do_pragma(), specifically disallows this. If we're looking at a possible pragma name space, the next expected token is a CPP_NAME.

Is there a way to handle this scenario with the current infrastructure? If not, is something like the attached (untested) patch reasonable?

Aldy

Attachment: curr
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]