Differences between revisions 30 and 31
Revision 30 as of 2009-02-20 15:31:16
Size: 2786
Comment:
Revision 31 as of 2009-03-13 21:46:09
Size: 2986
Comment:
Deletions are marked like this. Additions are marked like this.
Line 34: Line 34:
PRE should compute a per-BB maximal set, unioning from the exit block upward the CFG.
This should make the validity checks for the VUSEs unnecessary and speed up
phi-translating the maximal set.

Alias Improvements

Pre-Merge TODO

Followup Improvements

push/pop_stmt_changes can be cleaned up, simplified, or even removed.

The inliner can rewrite the virtual operands itself just like regular operands. The only difficulties are that new pure/const functions are exposed after IPA-pure-const and that new PHI-nodes need to be inserted to merge VDEFs in the inlined function to the VDEF of the call statement. Partial patch available.

The single pre-function gimple_vop (cfun) DECL can be made per CU. The disadvantage is that cross-function inconsistencies are harder to detect.

Most passes that mark symbols for renaming should not need to. This is mostly fixed.

PTA should keep both an unpruned points-to set and a TBAA-pruned points-to set. This allows per alias-oracle query decisions on whether TBAA should be applied or not. This also allows (a fixed - see its comments) merge_alias_info to do its job using the unpruned sets.

into-SSA could go into virtual SSA form directly, without doing an ssa-update to rename the virtual operands after into-SSA. into-SSA expert needed.

In PTA we can generate a CALLUSED variable and its constraints for each pure call (just like we do with consttmp for const calls).

Simple mod/ref analysis can be done in PTA handle_rhs_call for builtins. call-used queries have to be extended to builtin function calls then (or finally a stmt local call-used points-to solution reference can be introduced).

PRE should compute a per-BB maximal set, unioning from the exit block upward the CFG. This should make the validity checks for the VUSEs unnecessary and speed up phi-translating the maximal set.

Testsuite status on x86_64, i?86

FAILs that appear also on trunk and XPASSes are omitted.

gcc tests

FAIL: gcc.dg/uninit-B.c uninit i warning (test for warnings, line 12)
FAIL: gcc.dg/uninit-pr19430.c  (test for warnings, line 32)
FAIL: gcc.dg/uninit-pr19430.c uninitialized (test for warnings, line 41)

Uninitialized memory warnings will no longer work, or rather, the current implementation will be even more fragile. Action: uninit-B.c to be XFAILed again, the rest to be XFAILed.

FAIL: gcc.dg/tree-ssa/ssa-fre-10.c scan-tree-dump pre "Insertions: 2"

Weird testcase, it is not clear what it was supposed to test. Action: Move to the compile torture.

FAIL: gcc.dg/tree-ssa/ssa-pre-24.c scan-tree-dump-not pre "prephitmp"

A new testcase on the branch. We shouldn't insert a prephitmp here. The issue is that PHI-translating VUSEs should return the same VUSE if the expression does not die on the other edges of the PHI (thus is loop invariant for example). In general PHI-translation shouldn't change the expression if its value doesn't change. This may conflict with the purpose of the VUSE being a stmt location, so further phi-translating a "non"-translated VUSE may confuse the machinery.

None: Alias_Improvements (last edited 2010-02-14 11:03:09 by RichardGuenther)