diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2013-09-23 16:07:19 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2013-09-23 16:07:19 +0000 |
commit | cefce769080113bd634bca165cd6c2a8c817337b (patch) | |
tree | 015701fa228d16e4a874ad2a6e7719a7dcd177e4 /gcc | |
parent | 5303f3a48f33df907225aee6c144e4f3a1a35c7b (diff) | |
download | gcc-cefce769080113bd634bca165cd6c2a8c817337b.zip gcc-cefce769080113bd634bca165cd6c2a8c817337b.tar.gz gcc-cefce769080113bd634bca165cd6c2a8c817337b.tar.bz2 |
tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy assignment statements.
* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy
assignment statements.
From-SVN: r202833
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt28.adb | 31 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt28.ads | 8 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt28_pkg.ads | 11 | ||||
-rw-r--r-- | gcc/tree-ssa-ccp.c | 3 |
6 files changed, 64 insertions, 1 deletions
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 <ebotcazou@adacore.com> + + * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy + assignment statements. + 2013-09-23 Kugan Vivekanandarajah <kuganv@linaro.org> * 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 <ebotcazou@adacore.com> + + * gnat.dg/opt28.ad[sb]: New test. + * gnat.dg/opt28_pkg.ads: New helper. + 2013-09-23 Richard Biener <rguenther@suse.de> PR tree-optimization/58464 @@ -99,7 +104,7 @@ 2013-09-18 Eric Botcazou <ebotcazou@adacore.com> - * gnat.dg/array_bounds_test2.adb: New test. + * gnat.dg/array_bounds_test2.adb: New test. 2013-09-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 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)); } |