Commit 7744b697 by Martin Jambor Committed by Martin Jambor

re PR tree-optimization/42585 (SRA is not good for structure copies with one replacement any more)

2010-01-21  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/42585
	* tree-sra.c (struct access): New field grp_total_scalarization.
	(dump_access): Dump the new field.
	(should_scalarize_away_bitmap): New variable.
	(cannot_scalarize_away_bitmap): Likewise.
	(sra_initialize): Allocate new bitmaps.
	(sra_deinitialize): Free new bitmaps.
	(create_access_1): New function.
	(create_access): Parts moved to create_access_1.
	(type_consists_of_records_p): New function.
	(completely_scalarize_record): Likewise.
	(build_access_from_expr): Set bit in cannot_scalarize_away_bitmap.
	(build_accesses_from_assign): Set bits in should_scalarize_away_bitmap.
	(sort_and_splice_var_accesses): Hint groups with a total_scalarization
	access.
	(analyze_all_variable_accesses): Completely scalarize small eligible
	records.

	* testsuite/gcc.dg/tree-ssa/pr42585.c: New test.

From-SVN: r156156
parent fff08961
2010-01-21 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/42585
* tree-sra.c (struct access): New field grp_total_scalarization.
(dump_access): Dump the new field.
(should_scalarize_away_bitmap): New variable.
(cannot_scalarize_away_bitmap): Likewise.
(sra_initialize): Allocate new bitmaps.
(sra_deinitialize): Free new bitmaps.
(create_access_1): New function.
(create_access): Parts moved to create_access_1.
(type_consists_of_records_p): New function.
(completely_scalarize_record): Likewise.
(build_access_from_expr): Set bit in cannot_scalarize_away_bitmap.
(build_accesses_from_assign): Set bits in should_scalarize_away_bitmap.
(sort_and_splice_var_accesses): Hint groups with a total_scalarization
access.
(analyze_all_variable_accesses): Completely scalarize small eligible
records.
2010-01-21 Martin Jambor <mjambor@suse.cz>
* tree-sra.c (build_ref_for_offset_1): Allow for zero size fields.
2010-01-21 Andrew Haley <aph@redhat.com>
......
2010-01-21 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/42585
* gcc.dg/tree-ssa/pr42585.c: New test.
2010-01-21 Richard Guenther <rguenther@suse.de>
PR middle-end/19988
......
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-optimized" } */
struct _fat_ptr
{
unsigned char *curr;
unsigned char *base;
unsigned char *last_plus_one;
};
int Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr);
int
Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
{
struct _fat_ptr *_T0;
struct _fat_ptr *_T1;
struct _fat_ptr _T2;
int _T3;
struct _fat_ptr _ans;
int _change;
{
_T0 = sptr;
_T1 = sptr;
_T2 = *sptr;
_T3 = -1;
_ans = _T2;
_change = -1;
_ans.curr += 4294967295U;
*sptr = _ans;
return (0);
}
}
/* The local aggregates . */
/* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized"} } */
/* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized"} } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment