On 2015/12/3 06:32 PM, Chung-Lin Tang wrote:
> On 2015/12/3 6:11 PM, Jakub Jelinek wrote:
>> On Thu, Dec 03, 2015 at 06:05:36PM +0800, Chung-Lin Tang wrote:
>>>> Oh wait, it looks like the C++ front end is not actually using the
>>>> functions defined in the C/C++-shared gcc/c-family/c-omp.c, but has its
>>>> own implementations in gcc/cp/semantics.c, without "c_" prefixes?  In
>>>> addition to finish_expr_stmt calls, I see it's also using
>>>> finish_call_expr instead of build_call_expr_loc/build_call_expr_loc_vec.
>>>> So I guess we'll want to model this the same way for OpenACC support
>>>> functions, and then (later) we should clean this up, to move the
>>>> C-specific code from gcc/c-family/c-omp.c into the C front end?  (Jakub?)
>>>
>>> I see most OpenACC/OpenMP constructs are represented by special statement 
>>> codes,
>>> so they should be a different case. I so far only see the OpenACC wait 
>>> directive
>>> being represented as a CALL_EXPR (maybe there are others, haven't 
>>> exhaustively searched).
>>
>> No, Thomas is right, just look at
>> finish_omp_{barrier,flush,taskwait,taskyield,cancel,cancellation_point},
>> all those are represented as CALL_EXPRs.
>>
>>      Jakub
>>
> 
> Okay, I guess my impression was only for some OpenACC constructs.
> 
> Overall, OpenACC wait seems one of the few cases of using c_finish_* in 
> cp/parser.c.
> Whether other cases should move towards/away from that kind of style is a 
> larger question,
> I was only trying to fix a libgomp.oacc-c++/template-reduction.C regression 
> (testcase currently still in gomp4 branch)
> 
> Chung-Lin
> 

Per our internal discussion, I will commit this patch first to the gomp4 branch,
while awaiting trunk approval.

Thanks,
Chung-Lin

Reply via email to