diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f23c566acfb4b7ac691f6db55d4c12eda3b72f74..1680a5286ec9f0030ec4d625cb207f5dfbdd938a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2013-01-29  Pascal Obry  <obry@adacore.com>
+
+	* prj-proc.adb (Process_Expression_Variable_Decl): Prepend
+	Project_Path to current environment.
+
 2013-01-29  Thomas Quinot  <quinot@adacore.com>
 
 	* sprint.adb (Sprint_Node_Actual): Output freeze nodes for
diff --git a/gcc/ada/prj-env.adb b/gcc/ada/prj-env.adb
index d4bda03aac647024d5e93b74c3ed2587bf218de7..4788fbedf952a4a5237495b38f5cba3f0d93b9c1 100644
--- a/gcc/ada/prj-env.adb
+++ b/gcc/ada/prj-env.adb
@@ -2188,7 +2188,7 @@ package body Prj.Env is
 
       function Try_Path_Name is new Find_Name_In_Path
         (Check_Filename => Is_Regular_File);
-      --  Find a file in the project search path.
+      --  Find a file in the project search path
 
       --  Local Declarations
 
diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb
index e997d17ebd8313c9a47abb9589b540dcbe0d7e6c..5e2828be5d8cfbb406dac4f965ab171d01661e1e 100644
--- a/gcc/ada/prj-proc.adb
+++ b/gcc/ada/prj-proc.adb
@@ -33,11 +33,12 @@ with Prj.Env;
 with Prj.Err;  use Prj.Err;
 with Prj.Ext;  use Prj.Ext;
 with Prj.Nmsc; use Prj.Nmsc;
-with Prj.Util;
 with Prj.Part;
+with Prj.Util;
 with Snames;
 
-with Ada.Strings.Fixed; use Ada.Strings.Fixed;
+with Ada.Containers.Vectors;
+with Ada.Strings.Fixed;      use Ada.Strings.Fixed;
 
 with GNAT.Case_Util; use GNAT.Case_Util;
 with GNAT.HTable;
@@ -2062,19 +2063,30 @@ package body Prj.Proc is
          if Is_Attribute and then Name = Snames.Name_Project_Path then
             if In_Tree.Is_Root_Tree then
                declare
-                  Val : String_List_Id := New_Value.Values;
+                  package Name_Ids is
+                    new Ada.Containers.Vectors (Positive, Name_Id);
+                  Val  : String_List_Id := New_Value.Values;
+                  List : Name_Ids.Vector;
                begin
+                  --  Get all values
+
                   while Val /= Nil_String loop
+                     List.Prepend
+                       (Shared.String_Elements.Table (Val).Value);
+                     Val := Shared.String_Elements.Table (Val).Next;
+                  end loop;
+
+                  --  Prepend them in the oder found in the attribute
+
+                  for K in Positive range 1 .. Positive (List.Length) loop
                      Prj.Env.Add_Directories
                        (Child_Env.Project_Path,
                         Normalize_Pathname
-                          (Name =>
-                             Get_Name_String
-                             (Shared.String_Elements.Table (Val).Value),
-                           Directory =>
-                             Get_Name_String
-                             (Project.Directory.Display_Name)));
-                     Val := Shared.String_Elements.Table (Val).Next;
+                          (Name      => Get_Name_String
+                             (List.Element (K)),
+                           Directory => Get_Name_String
+                             (Project.Directory.Display_Name)),
+                        Prepend => True);
                   end loop;
                end;