This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [gimplefe] Regarding command line option handling
- From: Prasad Ghangal <prasad dot ghangal at gmail dot com>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: gcc Mailing List <gcc at gcc dot gnu dot org>, Ian Lance Taylor <iant at google dot com>
- Date: Sun, 8 May 2016 12:10:57 +0530
- Subject: Re: [gimplefe] Regarding command line option handling
- Authentication-results: sourceware.org; auth=none
- References: <CAE+uiWYRE66JtSg9KuAatBog_cz_AiYCGxu=yJKMZWMBh_myAQ at mail dot gmail dot com> <CAFiYyc0zHgZwuxnw5=N36c9FSs3uLxvccF2=xLAro6fozqMeyQ at mail dot gmail dot com> <CAE+uiWYv_KxmvP-RfuiD1s9bZJA_4+z_Lq6B0ZA01bo=1G8OyQ at mail dot gmail dot com> <CAFiYyc0_KZ9ssmsoO18ZuM58f2Wa69tU0ZNvPT76OZ36+mtNZg at mail dot gmail dot com> <CAE+uiWZ0a4mPsWzPWkMgpHVZ01m_z+5AOzzA9nW5e6RE0N4Mbg at mail dot gmail dot com> <CAFiYyc1UVYvRN2dfmi2UdoF-9m5_aGnSjMqRq-tZj7hJbXO3vQ at mail dot gmail dot com> <CAE+uiWap=fduKvmEyaJNw0Gv8HU3hjg-TOLQKGj2=c7iKzpueg at mail dot gmail dot com> <751E2AC2-4684-4CC3-A164-2EE58E25F8BB at gmail dot com>
On 7 May 2016 at 16:37, Richard Biener <richard.guenther@gmail.com> wrote:
> On May 6, 2016 3:14:03 PM GMT+02:00, Prasad Ghangal <prasad.ghangal@gmail.com> wrote:
>>On 6 May 2016 at 16:09, Richard Biener <richard.guenther@gmail.com>
>>wrote:
>>> On Wed, May 4, 2016 at 4:29 PM, Prasad Ghangal
>><prasad.ghangal@gmail.com> wrote:
>>>> On 4 May 2016 at 15:54, Richard Biener <richard.guenther@gmail.com>
>>wrote:
>>>>> On Wed, May 4, 2016 at 11:46 AM, Prasad Ghangal
>>>>> <prasad.ghangal@gmail.com> wrote:
>>>>>> On 4 May 2016 at 13:02, Richard Biener
>><richard.guenther@gmail.com> wrote:
>>>>>>> On Wed, May 4, 2016 at 8:41 AM, Prasad Ghangal
>><prasad.ghangal@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.
>
After reinstalling libgmp, libmpfr and libmpc it worked for me.
Thanks
> 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 assign@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
>
>