On May 6, 2016 3:14:03 PM GMT+02:00, Prasad Ghangal <prasad.ghan...@gmail.com> wrote: >On 6 May 2016 at 16:09, Richard Biener <richard.guent...@gmail.com> >wrote: >> On Wed, May 4, 2016 at 4:29 PM, Prasad Ghangal ><prasad.ghan...@gmail.com> wrote: >>> On 4 May 2016 at 15:54, Richard Biener <richard.guent...@gmail.com> >wrote: >>>> On Wed, May 4, 2016 at 11:46 AM, Prasad Ghangal >>>> <prasad.ghan...@gmail.com> wrote: >>>>> On 4 May 2016 at 13:02, Richard Biener ><richard.guent...@gmail.com> wrote: >>>>>> On Wed, May 4, 2016 at 8:41 AM, Prasad Ghangal ><prasad.ghan...@gmail.com> wrote: >>>>>>> Hi ! >>>>>>> Currently I am trying to introduce new command line option >-fgimple, >>>>>>> for that I am adding this to c.opt >>>>>>> >>>>>>> diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt >>>>>>> index 4f86876..88e55c6 100644 >>>>>>> --- a/gcc/c-family/c.opt >>>>>>> +++ b/gcc/c-family/c.opt >>>>>>> @@ -66,6 +66,10 @@ C ObjC C++ ObjC++ Separate Alias(d) >>>>>>> -dump= >>>>>>> C ObjC C++ ObjC++ Joined Alias(d) >>>>>>> >>>>>>> +fgimple >>>>>>> +C Var(flag_gimple) Init(0) >>>>>>> +Enable parsing GIMPLE >>>>>>> + >>>>>>> -imacros >>>>>>> C ObjC C++ ObjC++ Separate Alias(imacros) >MissingArgError(missing >>>>>>> filename after %qs) >>>>>>> >>>>>>> >>>>>>> But I am getting error as - "gcc: error: unrecognized command >line >>>>>>> option ‘-fgimple ’; did you mean ‘-fgimple ’?" >>>>>>> >>>>>>> I am unable to find where to handle it. >>>>>> >>>>>> Did you properly re-build gcc after that change? It should work >just fine. >>>>>> >>>>>> Richard. >>>>>> >>>>> >>>>> Yes, I did stage 1 build on latest revision. Still it's giving >this >>>>> strange error - "gcc: error: unrecognized command line option >>>>> ‘-fgimple’; did you mean ‘-fgimple’?" >>>> >>>> The error is indeed strage. W/o the patch I get >>>> >>>>> ./xgcc -B. -fgimple -S t.i >>>> xgcc: error: unrecognized command line option '-fgimple'; did you >mean >>>> '--compile'? >>>> >>>> and with it (re-building cc1 and xgcc inside gcc/ of my dev-tree) >>>> >>>>> ./xgcc -B. -fgimple -S t.i >>>> (no error) >>>> >>>> so it works fine for me. Note that 'gcc' inside the build tree is >called xgcc. >>>> >>> >>> Yes, it works for $build/gcc/cc1 but not for $prefix/bin/gcc i.e. >>> after installing >> >> Does it work for $build/gcc/xgcc? >> > >No. It doesn't work for me. I even tried bootstrapped build-install, >still same issue.
That's strange as it works for me just fine. Btw., if you didn't already start the process to file a copyright assignment with the FSF please do so now as it can take quite some time. You can ask for forms at ass...@gnu.org but I remember Ian also having access to them (CCed). Thanks, Richard. >> Richard. >> >>>> Richard. >>>> >>>> >>>>> >>>>>>> >>>>>>> >>>>>>> Till now I am able to JUST parse __GIMPLE keyword >>>>>>> >>>>>>> diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c >>>>>>> index cae2faf..1ccb4d6 100644 >>>>>>> --- a/gcc/c-family/c-common.c >>>>>>> +++ b/gcc/c-family/c-common.c >>>>>>> @@ -468,6 +468,7 @@ const struct c_common_resword >c_common_reswords[] = >>>>>>> { "__extension__", RID_EXTENSION, 0 }, >>>>>>> { "__func__", RID_C99_FUNCTION_NAME, 0 }, >>>>>>> { "__has_nothrow_assign", RID_HAS_NOTHROW_ASSIGN, D_CXXONLY >}, >>>>>>> + { "__GIMPLE", RID_GIMPLE, 0 }, >>>>>>> { "__has_nothrow_constructor", RID_HAS_NOTHROW_CONSTRUCTOR, >D_CXXONLY }, >>>>>>> { "__has_nothrow_copy", RID_HAS_NOTHROW_COPY, D_CXXONLY }, >>>>>>> { "__has_trivial_assign", RID_HAS_TRIVIAL_ASSIGN, D_CXXONLY >}, >>>>>>> @@ -12393,6 +12394,7 @@ keyword_is_function_specifier (enum rid >keyword) >>>>>>> case RID_NORETURN: >>>>>>> case RID_VIRTUAL: >>>>>>> case RID_EXPLICIT: >>>>>>> + case RID_GIMPLE: >>>>>>> return true; >>>>>>> default: >>>>>>> return false; >>>>>>> diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h >>>>>>> index 663e457..a91665f 100644 >>>>>>> --- a/gcc/c-family/c-common.h >>>>>>> +++ b/gcc/c-family/c-common.h >>>>>>> @@ -64,10 +64,10 @@ enum rid >>>>>>> /* Modifiers: */ >>>>>>> /* C, in empirical order of frequency. */ >>>>>>> RID_STATIC = 0, >>>>>>> - RID_UNSIGNED, RID_LONG, RID_CONST, RID_EXTERN, >>>>>>> - RID_REGISTER, RID_TYPEDEF, RID_SHORT, RID_INLINE, >>>>>>> - RID_VOLATILE, RID_SIGNED, RID_AUTO, RID_RESTRICT, >>>>>>> - RID_NORETURN, RID_ATOMIC, >>>>>>> + RID_UNSIGNED, RID_LONG, RID_CONST, RID_EXTERN, >>>>>>> + RID_GIMPLE, RID_REGISTER, RID_TYPEDEF, RID_SHORT, >>>>>>> + RID_INLINE, RID_VOLATILE, RID_SIGNED, RID_AUTO, >>>>>>> + RID_RESTRICT, RID_NORETURN, RID_ATOMIC, >>>>>>> >>>>>>> /* C extensions */ >>>>>>> RID_COMPLEX, RID_THREAD, RID_SAT, >>>>>>> diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c >>>>>>> index f0c677b..e690ca3 100644 >>>>>>> --- a/gcc/c/c-decl.c >>>>>>> +++ b/gcc/c/c-decl.c >>>>>>> @@ -10401,6 +10401,8 @@ declspecs_add_scspec (source_location >loc, >>>>>>> case RID_TYPEDEF: >>>>>>> n = csc_typedef; >>>>>>> break; >>>>>>> + case RID_GIMPLE: >>>>>>> + break; >>>>>>> default: >>>>>>> gcc_unreachable (); >>>>>>> } >>>>>>> diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c >>>>>>> index bdd669d..266b672 100644 >>>>>>> --- a/gcc/c/c-parser.c >>>>>>> +++ b/gcc/c/c-parser.c >>>>>>> @@ -732,6 +732,7 @@ c_token_starts_declspecs (c_token *token) >>>>>>> case RID_ALIGNAS: >>>>>>> case RID_ATOMIC: >>>>>>> case RID_AUTO_TYPE: >>>>>>> + case RID_GIMPLE: >>>>>>> return true; >>>>>>> default: >>>>>>> if (token->keyword >= RID_FIRST_INT_N >>>>>>> @@ -2461,6 +2462,7 @@ c_parser_declspecs (c_parser *parser, >struct >>>>>>> c_declspecs *specs, >>>>>>> case RID_NORETURN: >>>>>>> case RID_AUTO: >>>>>>> case RID_THREAD: >>>>>>> + case RID_GIMPLE: >>>>>>> if (!scspec_ok) >>>>>>> goto out; >>>>>>> attrs_ok = true; >>>>>>> @@ -3960,6 +3962,7 @@ c_parser_attribute_any_word (c_parser >*parser) >>>>>>> case RID_INT_N_1: >>>>>>> case RID_INT_N_2: >>>>>>> case RID_INT_N_3: >>>>>>> + case RID_GIMPLE: >>>>>>> ok = true; >>>>>>> break; >>>>>>> default: >>>>>>> >>>>>>> >>>>>>> >>>>>>> After recognizing __GIMPLE, I am planning to call >gimple_fn_parser >>>>>>> function which will parse gimple body. >>>>>>> For pass manager, basic idea is to introduce new member to >struct >>>>>>> function as pass_list and modify function execute_pass_list to >run >>>>>>> only passes in pass list. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> Prasad Ghangal