Commit 9b999dc5 by Jakub Jelinek Committed by Jakub Jelinek

re PR target/43808 (-fipa-reference -fschedule-insns -fstrict-aliasing causes…

re PR target/43808 (-fipa-reference -fschedule-insns -fstrict-aliasing causes two gfortran check failures)

	PR target/43808
	* cfgexpand.c (partition_stack_vars): Call
	update_alias_info_with_stack_vars unconditionally.
	(update_alias_info_with_stack_vars): Allow unused
	unreferenced vars when not optimizing.

	* gfortran.dg/pr43808.f90: New test.

From-SVN: r166509
parent 0104d6c7
2010-11-09 Jakub Jelinek <jakub@redhat.com>
PR target/43808
* cfgexpand.c (partition_stack_vars): Call
update_alias_info_with_stack_vars unconditionally.
(update_alias_info_with_stack_vars): Allow unused
unreferenced vars when not optimizing.
2010-11-09 Sebastian Pop <sebastian.pop@amd.com> 2010-11-09 Sebastian Pop <sebastian.pop@amd.com>
PR tree-optimization/46036 PR tree-optimization/46036
...@@ -516,9 +516,11 @@ update_alias_info_with_stack_vars (void) ...@@ -516,9 +516,11 @@ update_alias_info_with_stack_vars (void)
unsigned int uid = DECL_PT_UID (decl); unsigned int uid = DECL_PT_UID (decl);
/* We should never end up partitioning SSA names (though they /* We should never end up partitioning SSA names (though they
may end up on the stack). Neither should we allocate stack may end up on the stack). Neither should we allocate stack
space to something that is unused and thus unreferenced. */ space to something that is unused and thus unreferenced, except
for -O0 where we are preserving even unreferenced variables. */
gcc_assert (DECL_P (decl) gcc_assert (DECL_P (decl)
&& referenced_var_lookup (DECL_UID (decl))); && (!optimize
|| referenced_var_lookup (DECL_UID (decl))));
bitmap_set_bit (part, uid); bitmap_set_bit (part, uid);
*((bitmap *) pointer_map_insert (decls_to_partitions, *((bitmap *) pointer_map_insert (decls_to_partitions,
(void *)(size_t) uid)) = part; (void *)(size_t) uid)) = part;
...@@ -684,8 +686,7 @@ partition_stack_vars (void) ...@@ -684,8 +686,7 @@ partition_stack_vars (void)
} }
} }
if (optimize) update_alias_info_with_stack_vars ();
update_alias_info_with_stack_vars ();
} }
/* A debugging aid for expand_used_vars. Dump the generated partitions. */ /* A debugging aid for expand_used_vars. Dump the generated partitions. */
......
2010-11-09 Jakub Jelinek <jakub@redhat.com>
PR target/43808
* gfortran.dg/pr43808.f90: New test.
2010-11-09 Sebastian Pop <sebastian.pop@amd.com> 2010-11-09 Sebastian Pop <sebastian.pop@amd.com>
PR tree-optimization/46036 PR tree-optimization/46036
......
! PR target/43808
! { dg-do run }
! { dg-options "-O0 -fipa-reference -fschedule-insns -fstrict-aliasing" }
type :: a
integer, allocatable :: i(:)
end type a
type :: b
type (a), allocatable :: j(:)
end type b
type(a) :: x(2)
type(b) :: y(2)
x(1) = a((/1,2,3,4/))
x(2) = a((/1,2,3,4/)+10)
y(1) = b((/x(1),x(2)/))
y(2) = b((/x(1),x(2)/))
if (y(1)%j(1)%i(1) .ne. 1) call abort
end
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