On 2019-12-19 5:01 p.m., Jozef Lawrynowicz wrote:
> On Thu, 19 Dec 2019 16:47:42 -0500
> Erick Ochoa <erick.oc...@theobroma-systems.com> wrote:
> 
>> Hello,
>>
>> I am working on testing an optimization. I am starting to write
>> tests in the GCC testing suite. However, I want to develop some
>> fine grain testing for my own sake.
>>
>> This optimization I am working on, is a variant of struct reordering.
>> One way I would like to test my pass is for example, making a test case
>> and guaranteeing that my pass is able to detect global variables of
>> a specific struct type.
>>
>> For example, given the following C file
>>
>> ```
>> /* { dg-lto-options {{-flto -fipa-struct-reorg 
>> -fipa-struct-reorg-assert-has-structs=astruct_s}} } */
>>
>> struct astruct_s { _Bool a; };
>> struct astruct_s astruct;
>>
>> int main() { };
>> ```
>>
>> I would like to create the option flag that has a list of string arguments
>>
>> -fipa-struct-reorg-assert-has-structs=<string>+
>>
>> such that during the analysis time, I'd be able to have an assertion
>> to make sure that my pass has actually collected the types identified by the
>> strings.
>> I'm not very familiar on the DSL to specify option flags.
>> I've looked at gcc/common.opt for some examples and found this one:
>>
>> ```
>> frandom-seed=
>> Common Joined RejectNegative Var(common_deferred_options) Defer
>> -frandom-seed=<string>  Make compile reproducible using <string>.
>> ```
>>
>> Could anyone explain how to specify my flag? Or possibly
>> point to some documentation/source that explains Common, Joined, etc...?
> 
> Have you looked at the GCC Internals Manual (gccint)? The section on option
> specification files is online here:
> https://gcc.gnu.org/onlinedocs/gccint/Option-properties.html#Option-properties>
>  
> Jozef

Thanks Jozef! This is exactly what I was looking for (and overlooked).

> 

Reply via email to