Re: Questions about IPA/clones and new LTO pass

2019-12-04 Thread Erick Ochoa
Hi, this refers to https://gcc.gnu.org/ml/gcc/2019-11/msg00251.html On 2019-12-04 6:30 a.m., Martin Liška wrote: > Hello. > > I'm adding the author of IPA CP and LTO subsystem maintainer. > > Martin

Re: LTO : question about get_untransformed_body

2019-12-04 Thread Erick Ochoa
On 2019-12-04 7:52 a.m., Richard Biener wrote: > On Tue, Dec 3, 2019 at 11:51 PM Erick Ochoa > wrote: >> >> Hi, >> >> I am trying to use the function: `cgraph_node::get_untransformed_body` during >> the wpa stage of a SIMPLE_IPA_PASS transformation. Whi

Re: Questions about IPA/clones and new LTO pass

2019-12-09 Thread Erick Ochoa
nction), +}; + +class pass_ipa_initcall_cp : public ipa_opt_pass_d +{ +public: + pass_ipa_initcall_cp (gcc::context *ctxt) +: ipa_opt_pass_d (pass_data_ipa_initcall_cp, ctxt, NULL, NULL, NULL, NULL, + NULL, NULL, 0, NULL, NULL) + {} + + /* opt_pass methods: */ + virtual b

Question about storing summaries during LTO

2019-12-10 Thread Erick Ochoa
Hello, I am trying to understand how to store information in object files during LTO. Is it possible to write arbitrary data in these sections? There's not a lot of documentation about the specifics I need in the GCC Internals. I have made a simple LTO pass that writes * "Hello world\n" into

Question about struct identifiers after modifications.

2019-12-16 Thread Erick Ochoa
Hello, I am working on a struct reorganization optimization pass. I am able to identify which structs I want to reorganize and I am also able to create new structs with these modifications. The way the new structs are generated is the following code (I am keeping it high-level for conciseness but

Struct declaration and initialization in TREES

2019-12-17 Thread Erick Ochoa
Hi, I'm interested in printing VAR_DECL trees that are of type RECORD_TYPE. I am using the function print_generic_decl for debugging and found this interesting behaviour. When I do initialization of structs using the following syntax: ``` struct aStruct { _Bool e; int a; char b; float c; double

Re: LTO : question about get_untransformed_body

2019-12-06 Thread Erick Ochoa
On 2019-12-06 5:50 a.m., Richard Biener wrote: > On Wed, Dec 4, 2019 at 6:03 PM Erick Ochoa > wrote: >> >> >> >> On 2019-12-04 7:52 a.m., Richard Biener wrote: >>> On Tue, Dec 3, 2019 at 11:51 PM Erick Ochoa >>> wrote: >>>> >

LTO : question about get_untransformed_body

2019-12-03 Thread Erick Ochoa
Hi, I am trying to use the function: `cgraph_node::get_untransformed_body` during the wpa stage of a SIMPLE_IPA_PASS transformation. While the execute function is running, I need to access the body of a function in order to iterate over the gimple instructions in the first basic block. I have

Questions about IPA/clones and new LTO pass

2019-11-29 Thread Erick Ochoa
Hello, my name is Erick and I am working in a link-time-optimization pass named ipa-initcall-cp. It is called ipa-initcall-cp because it propagates constant values written to variables with static lifetimes (such as ones initialized in initialization functions). ipa-initcall-cp has to be located

Re: Struct declaration and initialization in TREES

2019-12-19 Thread Erick Ochoa
On 2019-12-18 1:33 p.m., Erick Ochoa wrote: > > > On 2019-12-18 6:02 a.m., Richard Biener wrote: >> On December 17, 2019 8:31:00 PM GMT+01:00, Erick Ochoa >> wrote: >>> Hi, >>> >>> I'm interested in printing VAR_DECL trees that are

How to run LTO tests?

2019-12-19 Thread Erick Ochoa
Hi, I'm looking to create new tests for an LTO pass that I'm working on. So, I started by trying to run the tests under the folder: $gcc/gcc/testsuite/gcc.dg/lto Looking at the documentation available here: https://gcc.gnu.org/install/test.html It says the following In order to run sets of

Re: How to run LTO tests?

2019-12-19 Thread Erick Ochoa
On 2019-12-19 3:50 p.m., Andrew Pinski wrote: > On Thu, Dec 19, 2019 at 12:48 PM Erick Ochoa > wrote: >> >> Hi, >> >> I'm looking to create new tests for an LTO pass that I'm working on. >> So, I started by trying to run the tests under the fold

Option flag with string arguments

2019-12-19 Thread Erick Ochoa
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,

Re: Option flag with string arguments

2019-12-19 Thread Erick Ochoa
On 2019-12-19 5:01 p.m., Jozef Lawrynowicz wrote: > On Thu, 19 Dec 2019 16:47:42 -0500 > Erick Ochoa 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

Re: Struct declaration and initialization in TREES

2019-12-18 Thread Erick Ochoa
On 2019-12-18 6:02 a.m., Richard Biener wrote: > On December 17, 2019 8:31:00 PM GMT+01:00, Erick Ochoa > wrote: >> Hi, >> >> I'm interested in printing VAR_DECL trees that are of type >> RECORD_TYPE. I am using the function print_generic_decl >> for

Question about changing {machine,type} modes during LTO

2020-01-27 Thread Erick Ochoa
Hello, I have a problem with a transformation I'm working on and I would appreciate some help. The transformation I am working on removes fields in structs early during link-time. For the purposes of development and this example, my transformation deletes the field identified as "delete_me" from

Re: Question about changing {machine,type} modes during LTO

2020-01-29 Thread Erick Ochoa
Hi Richard, Thanks! I can confirm that changing VAR_DECL's type and calling relayout_decl fixes my problem. On 2020-01-28 4:35 a.m., Richard Biener wrote: > On Mon, Jan 27, 2020 at 6:41 PM Erick Ochoa > wrote: >> >> Hello, >> >> I have a problem with a transformat

Re: Question about sizeof after struct change

2020-01-03 Thread Erick Ochoa
On 2019-12-24 2:37 a.m., Richard Biener wrote: > On December 23, 2019 6:30:31 PM GMT+01:00, Erick Ochoa > wrote: >> Hi, >> >> I am working on an LTO pass which drops unused fields on structs. On my >> tests, I found that the gimple generated for `sizeof` is

Question about sizeof after struct change

2019-12-23 Thread Erick Ochoa
Hi, I am working on an LTO pass which drops unused fields on structs. On my tests, I found that the gimple generated for `sizeof` is a constant. For example, for the following C code: ``` struct astruct_s { _Bool c; _Bool a; _Bool b; }; struct astruct_s astruct; int main() { int size =

Question about undefined functions' parameters during LTO

2020-03-12 Thread Erick Ochoa
Hello, I am trying to find out the arguments of functions which are undefined during LTO. Basically: gcc_assert(in_lto_p && !cnode->definition) // Do we have arguments? gcc_assert(DECL_ARGUMENTS(cnode->decl)) // fails // No, we don't. As I understand it, functions which are not defined are

Questions about code instrumentation in FDO

2020-04-07 Thread Erick Ochoa
Hello, Can someone help me understand better GCC's profile driven instrumentation? I know this can be a long topic, but I am not looking for a long discussion. I am just trying to orient myself regarding GCC's FDO implementation. 1. I know that gcc uses an instrumentation based profiler.

Re: Question about undefined functions' parameters during LTO

2020-04-07 Thread Erick Ochoa
xtern simple_ipa_opt_pass *make_pass_ipa_free_lang_data (gcc::context *ctxt); extern simple_ipa_opt_pass *make_pass_ipa_free_fn_summary (gcc::context *ctxt); +extern simple_ipa_opt_pass *make_pass_ipa_hello_world (gcc::context *ctxt); extern ipa_opt_pass_d *make_pass_ipa_cp (gcc::context *ctxt);

Re: Question about undefined functions' parameters during LTO

2020-04-07 Thread Erick Ochoa
On 07/04/2020 14:34, Michael Matz wrote: Hello, On Tue, 7 Apr 2020, Erick Ochoa wrote: Thanks for this lead! It is almost exactly what I need. I do have one more question about this. It seems that the types obtained via FOR_EACH_FUNCTION_ARGS and TREE_TYPE are different pointers when

Re: Question about undefined functions' parameters during LTO

2020-03-13 Thread Erick Ochoa
On 13.03.20 00:44, Richard Biener wrote: On Thu, Mar 12, 2020 at 5:31 PM Erick Ochoa wrote: Hello, I am trying to find out the arguments of functions which are undefined during LTO. Basically: gcc_assert(in_lto_p && !cnode->definition) // Do we have arguments? gcc_assert(DEC

Re: Question about undefined functions' parameters during LTO

2020-03-13 Thread Erick Ochoa
On 12.03.20 08:48, Jan Hubicka wrote: Hello, Hello, I am trying to find out the arguments of functions which are undefined during LTO. Basically: gcc_assert(in_lto_p && !cnode->definition) // Do we have arguments? gcc_assert(DECL_ARGUMENTS(cnode->decl)) // fails // No, we don't. As I

Re: GCC optimizations with O3

2020-04-22 Thread Erick Ochoa
p_vectorize, NULL, 1 }, opts.c:{ OPT_LEVELS_3_PLUS, OPT_funswitch_loops, NULL, 1 }, opts.c:{ OPT_LEVELS_3_PLUS, OPT_fvect_cost_model_, NULL, VECT_COST_MODEL_DYNAMIC }, opts.c:{ OPT_LEVELS_3_PLUS, OPT_fversion_loops_for_strides, NULL, 1 }, On 22.04.2020, at 16:01, Erick Ochoa wrote:

GCC optimizations with O3

2020-04-22 Thread Erick Ochoa
Hello, Does anyone know if the following text from the GCC internals [0] is outdated? -O3 Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the following optimization flags: -fgcse-after-reload -fipa-cp-clone -floop-interchange

Re: GCC optimizations with O3

2020-04-22 Thread Erick Ochoa
On 22/04/2020 16:25, Jakub Jelinek wrote: On Wed, Apr 22, 2020 at 04:17:56PM +0200, Philipp Tomsich wrote: ptomsich@android:~/riscv/gcc/gcc$ git grep OPT_LEVELS_3 common/common-target.h: OPT_LEVELS_3_PLUS, /* -O3 and above. */ common/common-target.h: OPT_LEVELS_3_PLUS_AND_SIZE, /* -O3 and

Questions about -fanalyzer implementation

2020-04-28 Thread Erick Ochoa
Hi, Does the analysis framework available in GCC 10 is an instance of an IFDS or an IDE framework? The Analyzer Internals [0] refers to the IFDS paper [1], but I am not sure if this is only to provide a reference to the definition of exploded supergraph. Also, if I want to implement my own

Re: Question about alias or points-to analysis

2020-05-06 Thread Erick Ochoa
On 06/05/2020 18:40, Richard Biener wrote: On Wed, May 6, 2020 at 3:04 PM Erick Ochoa wrote: On 06/05/2020 14:25, Richard Biener wrote: On Wed, May 6, 2020 at 12:26 PM Erick Ochoa wrote: Hi, I am trying to find out how to use the alias and/or points-to analysis in GCC. Ideally, I

Question about alias or points-to analysis

2020-05-06 Thread Erick Ochoa
Hi, I am trying to find out how to use the alias and/or points-to analysis in GCC. Ideally, I would like to find a function that given an allocation site, the return value is a set of pointers which may point to memory allocated from that allocation site. For example: int main(int argc,

Re: Question about alias or points-to analysis

2020-05-06 Thread Erick Ochoa
On 06/05/2020 14:25, Richard Biener wrote: On Wed, May 6, 2020 at 12:26 PM Erick Ochoa wrote: Hi, I am trying to find out how to use the alias and/or points-to analysis in GCC. Ideally, I would like to find a function that given an allocation site, the return value is a set of pointers

Re: Is there a way to look for a tree by its UID?

2020-09-04 Thread Erick Ochoa
On 03/09/2020 12:19, Richard Biener wrote: On Thu, Sep 3, 2020 at 10:58 AM Jakub Jelinek via Gcc wrote: On Thu, Sep 03, 2020 at 10:22:52AM +0200, Erick Ochoa wrote: So, I am just wondering is there an interface where I could do something like: ``` // vars is the field in pt_solution

Question about exporting omputing alias sets

2020-09-02 Thread Erick Ochoa
Hello, I am trying to find out all pointers which alias a pointer and place them in a set. I am using `ptr_derefs_may_alias_p` to find out if two pointers may point to the same memory location. I think this yields conservative results (i.e., when it cannot be proven that to pointers may

Question about instrumenting gimple

2020-09-15 Thread Erick Ochoa
Hi, I am trying to instrument gimple so that "hello world" is printed after each call to malloc. I've tried instrumenting using the following code static void // G points to the gcall which corresponds to malloc call_hello_world(gimple* g) { gimple_stmt_iterator gsi = gsi_start(g); //

Re: Question about instrumenting gimple

2020-09-16 Thread Erick Ochoa
Thanks Richard, for sake of completeness (and anyone in the future looks for a simple hello world example), here's what my code roughly looks like: push_cfun(f); // f is the function who calls malloc static void call_hello_world(gimple* g) { gimple_stmt_iterator gsi = gsi_start(g); const

Re: Dominance information problem

2020-09-14 Thread Erick Ochoa
Hi Gary, I'm not 100% sure this will fix the problem, but in the past I have had to call the following function: /* If dominator info is not available, we need to calculate it. */ if (!dom_info_available_p (CDI_DOMINATORS)) calculate_dominance_info (CDI_DOMINATORS); Basically

Re: Is there a way to look for a tree by its UID?

2020-09-04 Thread Erick Ochoa
On 04/09/2020 15:19, Richard Biener wrote: On Fri, Sep 4, 2020 at 10:13 AM Erick Ochoa wrote: On 03/09/2020 12:19, Richard Biener wrote: On Thu, Sep 3, 2020 at 10:58 AM Jakub Jelinek via Gcc wrote: On Thu, Sep 03, 2020 at 10:22:52AM +0200, Erick Ochoa wrote: So, I am just wondering

Is there a way to look for a tree by its UID?

2020-09-03 Thread Erick Ochoa
I think every SSA_NAME variable has a: * ptr_info_def* * which points to a pt_solution * which points to a bitmap field vars and I think this bitmap vars is set with 1 in the UID location of variables/references that an SSA_NAME variable might point to it. So, I am just wondering is there an

Question about callgraph and call_stmt

2020-10-13 Thread Erick Ochoa
Hi, I am analyzing gimple calls during LTO. I found a gimple call statement s that has the following properties: ``` tree fndecl = gimple_call_fndecl(s) gcc_assert(fndecl) // That is, the gimple call returns a non-null fndecl. cgraph_node *n = cgraph_node::get(fndecl); gcc_assert(!n) // That

Re: Question about callgraph and call_stmt

2020-10-13 Thread Erick Ochoa
On 13/10/2020 13:37, Richard Biener wrote: On Tue, Oct 13, 2020 at 1:17 PM Erick Ochoa wrote: Hi, I am analyzing gimple calls during LTO. What's symtab->state at this point? The state is IPA_SSA_AFTER_INLINING. I found a gimple call statement s that has the following propert

Re: Do all global structure variables escape in IPA-PTA?

2020-08-26 Thread Erick Ochoa
On 26/08/2020 10:36, Erick Ochoa wrote: On 25/08/2020 22:03, Richard Biener wrote: On August 25, 2020 6:36:19 PM GMT+02:00, Erick Ochoa wrote: On 25/08/2020 17:19, Erick Ochoa wrote: On 25/08/2020 17:10, Richard Biener wrote: On August 25, 2020 3:09:13 PM GMT+02:00, Erick Ochoa

Re: Do all global structure variables escape in IPA-PTA?

2020-08-25 Thread Erick Ochoa
On 25/08/2020 17:19, Erick Ochoa wrote: On 25/08/2020 17:10, Richard Biener wrote: On August 25, 2020 3:09:13 PM GMT+02:00, Erick Ochoa wrote: Hi, I'm trying to understand how the escape analysis in IPA-PTA works. I was testing a hypothesis where if a structure contains an array

Do all global structure variables escape in IPA-PTA?

2020-08-25 Thread Erick Ochoa
Hi, I'm trying to understand how the escape analysis in IPA-PTA works. I was testing a hypothesis where if a structure contains an array of characters and this array of characters is passed to fopen, the structure and all subfields will escape. To do this, I made a program that has a global

Re: Do all global structure variables escape in IPA-PTA?

2020-08-25 Thread Erick Ochoa
On 25/08/2020 17:10, Richard Biener wrote: On August 25, 2020 3:09:13 PM GMT+02:00, Erick Ochoa wrote: Hi, I'm trying to understand how the escape analysis in IPA-PTA works. I was testing a hypothesis where if a structure contains an array of characters and this array of characters

Re: Do all global structure variables escape in IPA-PTA?

2020-08-26 Thread Erick Ochoa
On 25/08/2020 22:03, Richard Biener wrote: On August 25, 2020 6:36:19 PM GMT+02:00, Erick Ochoa wrote: On 25/08/2020 17:19, Erick Ochoa wrote: On 25/08/2020 17:10, Richard Biener wrote: On August 25, 2020 3:09:13 PM GMT+02:00, Erick Ochoa wrote: Hi, I'm trying to understand how

Test case for improving PTA precision

2020-08-28 Thread Erick Ochoa
Hi, I'm testing the precision of IPA-PTA when compiling with -flto. I found this case when a global variable is marked as escaping even if the variable is a primitive type and no address is taken. This is the result of IPA-PTA which I believe is wrong. buff2 = { ESCAPED NONLOCAL } buff1 = {

Re: [RFC] LTO Dead Field Elimination and LTO Field Reordering

2020-08-21 Thread Erick Ochoa
to make this easier for you to review do let us know. Thanks, Tamar -Original Message- From: Erick Ochoa Sent: Monday, August 17, 2020 2:53 PM To: GCC Development Cc: Christoph Müllner ; philipp.toms...@theobroma-systems.com; Tamar Christina ; Kevin Smith ; Gary Oblock ; Richard Biener

Question about Gimple Variables named D.[0-9]*

2020-08-20 Thread Erick Ochoa
Hello, I am looking at the dump for the build_alias pass. I see a lot of variables with the naming convention D.[0-9]* in the points-to sets being printed. When I compile with -fdump-tree-all-all I can see that the suffix D.[0-9]* is appended to some gimple variables. I initially imagined

Re: Question about IPA-PTA and build_alias

2020-08-24 Thread Erick Ochoa
On 24/08/2020 09:40, Richard Biener wrote: On Mon, Aug 17, 2020 at 3:22 PM Erick Ochoa wrote: Hello, I'm looking to understand better the points-to analysis (IPA-PTA) and the alias analysis (build_alias). How is the information produced by IPA-PTA consumed? Are alias sets in build_alias

[RFC] LTO Dead Field Elimination and LTO Field Reordering

2020-08-17 Thread Erick Ochoa
Hello again, I have committed a couple of changes to the branch refs/vendors/ARM/heads/arm-struct-reorg-wip where my transformations are currently residing. This week I'll be working on fixing several warnings and fuzzying these passes. 2020-08-17 Erick Ochoa * Can be bootstrapped

Question about IPA-PTA and build_alias

2020-08-17 Thread Erick Ochoa
Hello, I'm looking to understand better the points-to analysis (IPA-PTA) and the alias analysis (build_alias). How is the information produced by IPA-PTA consumed? Are alias sets in build_alias computed by the intersections of the points_to_set(s) (computed by IPA-PTA)? My intuition tells

Re: On IPA PTA field sensitivity and pointer expression (part 2)

2020-09-28 Thread Erick Ochoa
On 28/09/2020 14:25, Erick Ochoa wrote: Hi, previously I sent an e-mail inquiring about the state of points-to information of structure variables allocated in the heap. It was brought to my attention that heap variables do not have a size to model and therefore IPA-PTA is not able

On IPA PTA field sensitivity and pointer expression (part 2)

2020-09-28 Thread Erick Ochoa
Hi, previously I sent an e-mail inquiring about the state of points-to information of structure variables allocated in the heap. It was brought to my attention that heap variables do not have a size to model and therefore IPA-PTA is not able to provide field sensitivity. I now understand

On IPA-PTA field sensitivity and pointer expressions

2020-09-25 Thread Erick Ochoa
Hi, I am working on an alias analysis using the points-to information generated during IPA-PTA. If we look at the varmap varinfo_t array in gcc/tree-ssa-struct.c, most of the constraint variable info structs contain a non-null decl field which points to a valid tree in gimple (which is an

Re: On IPA-PTA field sensitivity and pointer expressions

2020-09-25 Thread Erick Ochoa
On 25/09/2020 13:30, Richard Biener wrote: On Fri, Sep 25, 2020 at 9:05 AM Erick Ochoa wrote: Hi, I am working on an alias analysis using the points-to information generated during IPA-PTA. If we look at the varmap varinfo_t array in gcc/tree-ssa-struct.c, most of the constraint variable

Re: On IPA PTA field sensitivity and pointer expression (part 2)

2020-09-29 Thread Erick Ochoa
} same as p1.128+64 temp2_34 = { c } Thanks! On 28/09/2020 14:30, Erick Ochoa wrote: On 28/09/2020 14:25, Erick Ochoa wrote: Hi, previously I sent an e-mail inquiring about the state of points-to information of structure variables allocated in the heap. It was brought to my attention

[RFC] LTO Dead Field Elimination and LTO Field Reordering

2020-08-11 Thread Erick Ochoa
Hello again, Thanks for replying to my previous thread. I am thankful for all input received and addressed the comments which I could address. I have been working on the past two weeks on fixing the style and adding comments explaining classes and families of functions. I have also added a

Question about indirect functions and PGO

2020-07-10 Thread Erick Ochoa
Hello, I'm working on an optimization and I encountered this interesting behaviour. There are a couple of functions that are specialized when the program is not compiled with PGO (-fprofile-generate and -fprofile-use) However, when the program is compiled with PGO the compiler does not

Re: Question about indirect functions and PGO

2020-07-10 Thread Erick Ochoa
Forgot to mention that these functions take a function pointer as a parameter and as a result, the specialized functions are able to replace the indirect function call with a direct function call. On 10/07/2020 13:17, Erick Ochoa wrote: Hello, I'm working on an optimization and I encountered

Re: Question about indirect functions and PGO

2020-07-13 Thread Erick Ochoa
. This parameter is used for both: function specialization within a particular context and for all contexts. On 10/07/2020 13:19, Erick Ochoa wrote: Forgot to mention that these functions take a function pointer as a parameter and as a result, the specialized functions are able to replace

Re: SRA argument after materialization

2020-07-13 Thread Erick Ochoa
On 13/07/2020 13:13, Martin Jambor wrote: Hi, On Fri, Jul 10 2020, Erick Ochoa wrote: Hello, is there a way to determine just how an argument is affected by SRA after SRA has occured? How would I be able to determine the effects of ISRA on the struct argument? For the changes performed

SRA argument after materialization

2020-07-10 Thread Erick Ochoa
Hello, is there a way to determine just how an argument is affected by SRA after SRA has occured? I have the following functions: source: _Bool returnLastField (struct arc anArc) { return anArc.c; } _Bool returnNextField (struct arc anArc) { _Bool *ptr = &(anArc.a); ptr = ptr + 1; //

Question about function body and function specialization

2020-07-14 Thread Erick Ochoa
Hello, I have a function foo defined on a source file. Sometimes, a function pointer pointing to foo is passed as a parameter to other functions where foo is called indirectly. This indirect call is specialized during link time. Still at link time, I analyze the function call the following

Re: Question about function body and function specialization

2020-07-14 Thread Erick Ochoa
? Thanks. On 14/07/2020 12:37, Erick Ochoa wrote: Hello, I have a function foo defined on a source file. Sometimes, a function pointer pointing to foo is passed as a parameter to other functions where foo is called indirectly. This indirect call is specialized during link time. Still at link time

Re: Re: Question about function body and function specialization

2020-07-15 Thread Erick Ochoa
On 15.07.20 05:03, Martin Jambor wrote: Hi, On Tue, Jul 14 2020, Erick Ochoa wrote: On 14/07/2020 12:37, Erick Ochoa wrote: Hello, I have a function foo defined on a source file. Sometimes, a function pointer pointing to foo is passed as a parameter to other functions where foo is called

Re: Question about function body and function specialization

2020-07-15 Thread Erick Ochoa
. Is it the desired behaviour that functions which addresses are taken to be marked as unreachable (and therefore being unregistered from the symbol table)? If needed I can reduce the problem, but I don't want to do it if this is the intended behaviour. Thanks! On 14.07.20 04:19, Erick Ochoa wrote: Actually

RFC noipa sizeof function for record relayout at link time

2020-06-29 Thread Erick Ochoa
Hello, I have been working on link time optimization for C that may change the size of structs (at link time). We are close to sharing the results we have so far, but there are a couple of missing pieces left to work on: Implementations of sizeof and offsetof that support this change in

Re: RFC noipa sizeof function for record relayout at link time

2020-06-29 Thread Erick Ochoa
On 29.06.20 04:08, Richard Biener wrote: On Mon, Jun 29, 2020 at 1:05 PM Richard Biener wrote: On Mon, Jun 29, 2020 at 11:56 AM Erick Ochoa wrote: Hello, I have been working on link time optimization for C that may change the size of structs (at link time). We are close to sharing

Re: RFC noipa sizeof function for record relayout at link time

2020-06-29 Thread Erick Ochoa
On 29.06.20 04:05, Richard Biener wrote: On Mon, Jun 29, 2020 at 11:56 AM Erick Ochoa wrote: Hello, I have been working on link time optimization for C that may change the size of structs (at link time). We are close to sharing the results we have so far, but there are a couple of missing

Re: RFC noipa sizeof function for record relayout at link time

2020-06-29 Thread Erick Ochoa
On 29.06.20 06:05, Martin Jambor wrote: Hi, On Mon, Jun 29 2020, Erick Ochoa wrote: == How do we get what we want? == Ideally what we want is to: [...] * Disable constant propagation and other optimizations: * possibly __attribute__((noipa)) [...] == What's the WORST CASE

LTO Dead Field Elimination

2020-07-24 Thread Erick Ochoa
This patchset brings back struct reorg to GCC. We’ve been working on improving cache utilization recently and would like to share our current implementation to receive some feedback on it. Essentially, we’ve implemented the following components: Type-based escape analysis to determine if

Re: Question about function body and function specialization

2020-07-16 Thread Erick Ochoa
On 16/07/2020 12:11, Martin Jambor wrote: Hi, On Wed, Jul 15 2020, Erick Ochoa wrote: On 15.07.20 05:03, Martin Jambor wrote: [...] At IPA time, the best way is always to look at the call graph edges, something like: cgraph_edge *cs = caller_cgraph_node->get_edge (s); exam

Re: LTO Dead Field Elimination

2020-07-27 Thread Erick Ochoa
On 27/07/2020 14:36, Richard Biener wrote: On Fri, Jul 24, 2020 at 5:43 PM Erick Ochoa wrote: This patchset brings back struct reorg to GCC. We’ve been working on improving cache utilization recently and would like to share our current implementation to receive some feedback

Question about clones after materialization

2020-07-20 Thread Erick Ochoa
Hi, is there a way to find out that a function is a clone of another function after materialization? I believe that `clone_of_p` only works before materialization. I tried and no clones were detected. Thanks!

Re: Dead Field Elimination and Field Reordering

2020-11-11 Thread Erick Ochoa
an issue. After this, I will be removing std data structures and using specific ones. If anyone have any comments about the transformation, please let me know. I am happy to answer questions. -Erick On 06.11.20 05:51, Erick Ochoa wrote: Hi Richard, just some top-level comments before I write about

Re: Dead Field Elimination and Field Reordering

2020-11-03 Thread Erick Ochoa
these designs were made. On 03/11/2020 15:58, Richard Biener wrote: On Fri, Oct 30, 2020 at 6:44 PM Erick Ochoa wrote: Hello again, I've been working on several implementations of data layout optimizations for GCC, and I am again kindly requesting for a review of the type escape based dead field

Dead Field Elimination and Field Reordering

2020-10-30 Thread Erick Ochoa
Hello again, I've been working on several implementations of data layout optimizations for GCC, and I am again kindly requesting for a review of the type escape based dead field elimination and field reorg. Thanks to everyone that has helped me. The main differences between the previous

Re: Dead Field Elimination and Field Reordering

2020-11-06 Thread Erick Ochoa
the visitors. On 05/11/2020 14:10, Richard Biener wrote: On Tue, Nov 3, 2020 at 5:21 PM Erick Ochoa wrote: Thanks for the review Richard I'll address what I can. I also provide maybe some hindsight into some of the design decisions here. I'm not trying to be defensive just hoping to illuminate

[PATCH] Proposal for IPA init() constant propagation

2019-11-15 Thread erick . ochoa
?id=92538 2019-11-15 Erick Ochoa Proposal for IPA init() constant propagation * gcc/Makefile.in: Add pass to the build process * gcc/cgraph.c: Add assertion. * gcc/common.opt: Add pass * gcc/ipa-initcall-cp.c: new * gcc/passes.def: Place pass

Re: [PATCH] Proposal for IPA init() constant propagation

2020-01-23 Thread Erick Ochoa
Forgot to attach the test cases. On 2020-01-23 10:20 a.m., Erick Ochoa wrote: > Hi Jan, > > Here is a patch I just rebased against > > commit 2589beb1d1a065f75a5515c9e2698de12a421913 (origin/master, origin/HEAD, > master) > Author: GCC Administrator > Date: Sun Ja

Re: [PATCH] Proposal for IPA init() constant propagation

2020-01-23 Thread Erick Ochoa
Hi Jan, Here is a patch I just rebased against commit 2589beb1d1a065f75a5515c9e2698de12a421913 (origin/master, origin/HEAD, master) Author: GCC Administrator Date: Sun Jan 19 00:16:30 2020 + I also include some test cases. To run test cases, just set your path for the gcc executable

[PATCH] Update documentation on optimizations turned on by O3

2020-04-22 Thread Erick Ochoa
Hello, I noted that the optimizations turned on by O3 was outdated in the documentation. Here is the discussion that brought it to my attention: https://gcc.gnu.org/pipermail/gcc/2020-April/232164.html diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e2bc2559218..a28001a5adf

[PATCH] Fixes documentation for gimple_assign functions

2020-05-16 Thread Erick Ochoa
Fixes documentation for gimple_assign functions This patch corrects the documented function signatures of gimple_assign* functions. ChangeLog: 2020-05-16 Erick Ochoa * gcc/gimple.h (gimple_assign_rhs_code): Fix signature (gimple_assign_rhs_class): same

[PATCH] Adds wrapper for gimple_return_retval to accept gimple*

2020-05-16 Thread Erick Ochoa
. The wrapper takes gimple* as arguments. ChangeLog: 2020-05-16 Erick Ochoa * gcc/gimple.h (gimple_return_retval): New function (gimple_return_retval_ptr): same (gimple_return_set_retval): same * gcc/gimple.texi (gimple_return_retval): Fix documentation

Re: [PATCH] Fixes documentation for gimple_assign functions

2020-05-18 Thread Erick Ochoa
wrote: On May 16, 2020 11:42:02 AM GMT+02:00, Erick Ochoa wrote: Fixes documentation for gimple_assign functions This patch corrects the documented function signatures of gimple_assign* functions. OK. Richard. ChangeLog: 2020-05-16 Erick Ochoa * gcc/gimple.h

[PATCH] tree-ssa-structalias.c: Fix comments

2020-05-06 Thread Erick Ochoa
This patch fixes some quotations inside comments. The change in syntax highlighting was bothering me. I also found a typo. ChangeLog: 2020-05-06 Erick Ochoa * gcc/tree-ssa-struct-alias.c: Fix comments diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index

[PATCH 1/5] Add stringify_ipa_ref_use function.

2020-05-29 Thread Erick Ochoa
--- gcc/ipa-ref.c | 22 ++ gcc/ipa-ref.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/gcc/ipa-ref.c b/gcc/ipa-ref.c index 241828ee973..76459e9cc3d 100644 --- a/gcc/ipa-ref.c +++ b/gcc/ipa-ref.c @@ -103,3 +103,25 @@ ipa_ref::referred_ref_list (void) {

[PATCH 2/5] Add function tree_code_in_cst.

2020-05-29 Thread Erick Ochoa
--- gcc/tree.h | 11 +++ 1 file changed, 11 insertions(+) diff --git a/gcc/tree.h b/gcc/tree.h index bd0c51b2a18..86a4542f58b 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -6156,6 +6156,17 @@ int_bit_position (const_tree field) + wi::to_offset (DECL_FIELD_BIT_OFFSET

[patch 0/5] ipa-initcall-cp

2020-05-29 Thread Erick Ochoa
Hello everyone, I wanted to highlight this ticket on bugzilla [0]. It is a missed optimization that I worked on. It involves propagating constants across function calls at link-time. I am relatively new to GCC and this would be my first significant contribution. I have developed a prototype

[PATCH 5/5] Adds ipa-initcall-cp pass.

2020-05-29 Thread Erick Ochoa
This pass is a variant of constant propagation where global primitive constants with a single write are propagated to multiple read statements. ChangeLog: 2020-05-20 Erick Ochoa gcc/Makefile.in: Adds new pass gcc/passes.def: Same gcc/tree-pass.h: Same gcc

[PATCH 4/5] Export cgraph_externally_visible_p.

2020-05-29 Thread Erick Ochoa
--- gcc/ipa-ref.h| 2 +- gcc/ipa-visibility.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/gcc/ipa-ref.h b/gcc/ipa-ref.h index 95e29605548..9ff26e2693c 100644 --- a/gcc/ipa-ref.h +++ b/gcc/ipa-ref.h @@ -139,5 +139,5 @@ public: const char *

[PATCH 3/5] Add function path_exists

2020-05-29 Thread Erick Ochoa
--- gcc/ipa-utils.c | 33 + gcc/ipa-utils.h | 4 +++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c index 23e7f714306..bd3e79bd2e2 100644 --- a/gcc/ipa-utils.c +++ b/gcc/ipa-utils.c @@ -781,3 +781,36 @@

Re: [PATCH 2/5] Add function tree_code_in_cst.

2020-06-02 Thread Erick Ochoa
On 02/06/2020 14:29, Richard Biener wrote: On Sat, May 30, 2020 at 12:18 AM Jan Hubicka wrote: --- gcc/tree.h | 11 +++ 1 file changed, 11 insertions(+) diff --git a/gcc/tree.h b/gcc/tree.h index bd0c51b2a18..86a4542f58b 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -6156,6

[PATCH 8/8 v4] The Great STL migration

2020-12-04 Thread Erick Ochoa
--- gcc/ipa-dfe.c | 262 +++--- gcc/ipa-dfe.h | 108 +++--- gcc/ipa-field-reorder.c| 134 +++ gcc/ipa-type-escape-analysis.c | 636 - gcc/ipa-type-escape-analysis.h | 160 - 5 files changed, 643

[PATCH 6/8 v4] Add heuristic to take into account void* pattern.

2020-12-04 Thread Erick Ochoa
then we color the nodes in the call graph as "casts are safe in this function and does not call external visible functions". We propagate this property up the callgraph until a fixed point is reached. This will later be changed to use ipa-modref. 2020-11-04 Erick Ochoa * ipa-t

[PATCH 7/8 v4] Add tests

2020-12-04 Thread Erick Ochoa
--- gcc/common.opt| 4 ++ gcc/ipa-type-escape-analysis.c| 11 + .../ipa/ipa-access-counter-00-simple-read-0.c | 22 ++ .../ipa-access-counter-01-simple-write-0.c| 22 ++ .../ipa-access-counter-02-pointer-read-0.c| 22

[PATCH 5/8 v4] Abort if Gimple from C++ or Fortran sources is found.

2020-12-04 Thread Erick Ochoa
2020-11-04 Erick Ochoa * ipa-field-reorder: Add flag to exit transformation. * ipa-type-escape-analysis: Same. --- gcc/ipa-field-reorder.c| 3 +- gcc/ipa-type-escape-analysis.c | 54 -- gcc/ipa-type-escape-analysis.h | 2 ++ 3 files changed

[PATCH 1/8 v4] Dead-field warning in structs at LTO-time

2020-12-04 Thread Erick Ochoa
of the current linking unit (e.g. parameter types of external functions). The field access analyses non-escaping structs for fields that are not used in the linking unit and thus can be removed. 2020-11-04 Erick Ochoa * Makefile.in: Add file to list of new sources. * common.opt: Add new

[PATCH 2/8 v4] Add Dead Field Elimination

2020-12-04 Thread Erick Ochoa
Using the Dead Field Analysis, Dead Field Elimination automatically transforms gimple to eliminate fields that are never read. 2020-11-04 Erick Ochoa * Makefile.in: Add file to list of sources. * ipa-dfe.c: New. * ipa-dfe.h: Same. * ipa-type-escape-analysis.h: Export code

  1   2   >