From: ebotcazou Date: Mon, 23 Sep 2013 16:07:19 +0000 (+0000) Subject: * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy X-Git-Tag: upstream/4.9.2~4112 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42eed6839d18a608c6250d03f21da4006f209f8e;p=platform%2Fupstream%2Flinaro-gcc.git * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy assignment statements. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202833 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 026a560..a77d7c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-09-23 Eric Botcazou + + * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy + assignment statements. + 2013-09-23 Kugan Vivekanandarajah * gimple-pretty-print.c (dump_ssaname_info): New function. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd6998f..8a19710 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-23 Eric Botcazou + + * gnat.dg/opt28.ad[sb]: New test. + * gnat.dg/opt28_pkg.ads: New helper. + 2013-09-23 Richard Biener PR tree-optimization/58464 @@ -99,7 +104,7 @@ 2013-09-18 Eric Botcazou - * gnat.dg/array_bounds_test2.adb: New test. + * gnat.dg/array_bounds_test2.adb: New test. 2013-09-18 Kyrylo Tkachov diff --git a/gcc/testsuite/gnat.dg/opt28.adb b/gcc/testsuite/gnat.dg/opt28.adb new file mode 100644 index 0000000..74a4c5c --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt28.adb @@ -0,0 +1,31 @@ +with Opt28_Pkg; use Opt28_Pkg; + +package body Opt28 is + + function Full_Filename (Filename : String) return String is + Path : constant String := "PATH"; + Posix_Path : constant Posix_String := To_Posix (Path); + begin + + declare + M : constant Posix_String := Value_Of (Posix_Path); + N : constant Posix_String (1 .. M'Length) := M; + Var : constant String := To_String (Str => N); + Start_Pos : Natural := 1; + End_Pos : Natural := 1; + begin + while Start_Pos <= Var'Length loop + End_Pos := Position (Var (Start_Pos .. Var'Length)); + + if Is_File (To_Posix (Var (Start_Pos .. End_Pos - 1) & Filename)) then + return Var (Start_Pos .. End_Pos - 1) & Filename; + else + Start_Pos := End_Pos + 1; + end if; + end loop; + end; + + return ""; + end; + +end Opt28; diff --git a/gcc/testsuite/gnat.dg/opt28.ads b/gcc/testsuite/gnat.dg/opt28.ads new file mode 100644 index 0000000..4887c21 --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt28.ads @@ -0,0 +1,8 @@ +-- { dg-do compile } +-- { dg-options "-O2" } + +package Opt28 is + + function Full_Filename (Filename : String) return String; + +end Opt28; diff --git a/gcc/testsuite/gnat.dg/opt28_pkg.ads b/gcc/testsuite/gnat.dg/opt28_pkg.ads new file mode 100644 index 0000000..c3c32fe --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt28_pkg.ads @@ -0,0 +1,11 @@ +package Opt28_Pkg is + + type Posix_String is array (Positive range <>) of aliased Character; + + function To_Posix (Str : String) return Posix_String; + function To_String (Str : Posix_String) return String; + function Is_File (Str : Posix_String) return Boolean; + function Value_Of (Name : Posix_String) return Posix_String; + function Position (In_Line : String) return Natural; + +end Opt28_Pkg; diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index ea1269c..1f04406 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1728,6 +1728,9 @@ insert_clobber_before_stack_restore (tree saved_val, tree var, insert_clobber_before_stack_restore (gimple_phi_result (stmt), var, visited); } + else if (gimple_assign_ssa_name_copy_p (stmt)) + insert_clobber_before_stack_restore (gimple_assign_lhs (stmt), var, + visited); else gcc_assert (is_gimple_debug (stmt)); }