num_uses now returns incorrect value. For Chetan's value numbering, the use_stmt must have exactly one parent with exactly one use for the propagation to be correct. Modify num_uses to return this information. Possibly add a function num_parents.

num_uses now returns incorrect value. For Chetan's value numbering, the use_stmt must have exactly one parent with exactly one use for the propagation to be correct. Modify num_uses to return this information. Possibly add a function num_parents.

Time close: 442PM

080409

Time open: 200PM

Developers: Chetan, Stan

Tasks:

Fix bugs in defuse

Finish builtin_puts merge

Change log:

In merge_output():

Finished merging for output sequences of only builtin_puts

In find_uses():

Stmt of the format "x = fn()" are initially marked.

Open issues:

Some function calls are now doubled since dead code marks extra stmts. Chetan needs to remove these himself when doing value numbering.

num_uses now returns incorrect value. For Chetan's value numbering, the use_stmt must have exactly one parent with exactly one use for the propagation to be correct. Modify num_uses to return this information. Possibly add a function num_parents.

Time close: 322PM

080408

Time open: 800PM

Developers: Stan

Tasks:

Fix bugs in defuse

Change log:

In find_uses():

Added TREE_CODE checks for relational ops and logical ops in a MODIFY_EXPR. Should fix case of infinite loop.

Added function merge_output() to merge builtin_puts and printf. NOT WORKING.

Open issues:

merge_output() causes internal compiler fault.

num_uses now returns incorrect value. For Chetan's value numbering, the use_stmt must have exactly one parent with exactly one use for the propagation to be correct. Modify num_uses to return this information. Possibly add a function num_parents.

Time close: 1038PM

Time open: 600PM

Developers: Chetan

Tasks:

Make sure code is legal and add array optimizations

Change log:

Removed possible areas where arrays are propagated which will make the code illegal.

Added code to allow passing variables in global array indices.

Open issues:

None

Time close: 630PM

080405

Time open: 900PM

Developers: Stan

Tasks:

Fix bugs in defuse

Change log:

In find_uses():

Due to variable propagation, array references can be found in an IF condition. find_uses doesn't check for array in a COND_EXPR. Fixed.

Added handling for VAR_DECL instead of a relational expression in COND_EXPR

Commented out Amal's const prop into COND_EXPRs sicne it seems to be causing some problems.

Open issues:

num_uses now returns incorrect value. For Chetan's value numbering, the use_stmt must have exactly one parent with exactly one use for the propagation to be correct. Modify num_uses to return this information. Possibly add a function num_parents.

Time close: 1021PM

080404

Time open: 800PM

Developers: Stan

Tasks:

Fix bugs in defuse

Change log:

Added #define BUF 100 for Amal's char arrays.

In find_uses():

Added finer grained defuse for arrays in MODIFY_EXPR case

Doesn't immediately add defining block to path list anymore. If a block is its own successor, we want to reiterate through it to catch uses before the def (loops). This resolves a case of an infinite loop.

Open issues:

num_uses now returns incorrect value. For Chetan's value numbering, the use_stmt must have exactly one parent with exactly one use for the propagation to be correct. Modify num_uses to return this information. Possibly add a function num_parents.

Time close: 1051PM

Time open: 700PM

Attendees: Amal, Chetan, Stan

Minute taker: Stan

Agenda:

Discuss open issues

Results from hidden benchmarks

Discussion:

Infinite loop on hidden test case may be from deleting a var that is used repeatedly in a loop

Conclusions:

Should implement but currently low priority: merging output stmts

Open issues:

Unable to reproduce internal compiler error and runtime seg fault.

Time close: 800PM

Time: 300AM

Developers: Amal

Tasks:

Generate Gimple code revision

Change log:

None.

Open issues:

Sort insertion:

handle cases like i.0= i; x= arr[i.0] this is appear like 6 times in the insertsort function

Tax

D.1234 =line1+line2; printf (" ",D1.1234 ) is it easy to handle though ?

d = 7350; again d=7350; should be removed although these two statements appeared in two different blocks .

Trivia :

x/1 should be handled, what about x+0, x-0, x*1 is it already handled by the compiler or not

cases like a.0/a.0 converted to a/a , but that didn't change to 1, other cases where we have c/c was converted correctly to 1

080401

Made minor change to initialization of "main_bb_extension". Was causing seg fault when run with the other passes

Conclusions:

automaton 100

binrep 73

fibonacci 1068

jacobi 11511837

mandel 6259678

moving edge 1309

multiply 152

sort 10974

sort_insertion 2913

tax 135

trivia 49

Open issues:

None. Booyeah.

Time close: 1002PM

080330

Time open: 1000PM

Developers:Chetan

Tasks:

Correct more bugs in value numbering

Remove chain effects

Look into combining _buildin_puts and printf

Change log:

Corrected the value numbering to work properly and optimize to handle constants.

Added code in the value numbering to propagate variables on the condition that atleast one of the statements in of the type x=y or return(x).

Open issues:

Still need to use Stan's defuse_count to propagate functions and binary operator expressions used only once.

Still need to look into _buildin_puts and printf.

Time close: 1030PM

Time open: 900PM

Developer: Amal

Constant propagation part:

the code I have now is able to:

propagate constant within a block

propagate a constant between continuous blocks as long as it appears in the set of all previous blocks of our block, and being assigned the same value in all, and not being killed in any of them

also check if any of the function arguments might be substituted with a constant.

handle a case:

b=10;

c=5;

a=b+c;

the code I have will generate a=10 and add a to the set of the constant list , and the const_propagation function will be called again just in case a occur some where else later and can be substitute again by 10.

what I need handle also :

handle the global variable

and check the code on the different open test cases

Time open: 840PM

Developers:Stan

Tasks:

Modify defuse construction to add information about number of uses

Add pass to fold "a & 1" and "a/a"

Write specific test cases to exercise the passes.

Change log:

Added "static int num_defuses(defuse_list_t *defuse_list, tree used)": Given a stmt "used", which is assumed to be of the form "x = a", returns the number of uses of "a"

Added "static void mega_fold(void)": Pass to handle folding for "a/a", "a&1", "1&a", "a%a". All code for manipulation is in place but only "&" works.

Open issues:

Cannot currently determine the type of the operands in "/" and "%" so the folding isn't carried out.