]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
exp_disp.adb (Expand_Dispatching_Call): Call Unqualify on Param when comparing it...
authorGary Dismukes <dismukes@adacore.com>
Fri, 24 Jan 2014 15:15:04 +0000 (15:15 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 24 Jan 2014 15:15:04 +0000 (16:15 +0100)
2014-01-24  Gary Dismukes  <dismukes@adacore.com>

* exp_disp.adb (Expand_Dispatching_Call): Call Unqualify on Param when
comparing it with Ctrl_Arg, since Ctrl_Arg may have had qualification
stripped off.

From-SVN: r207043

gcc/ada/ChangeLog
gcc/ada/exp_disp.adb

index 576d30643bb6afa39af86533c067b7650b97a77f..084fb96c16b22d9119ea3ffa6666042a266808b1 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-24  Gary Dismukes  <dismukes@adacore.com>
+
+       * exp_disp.adb (Expand_Dispatching_Call): Call Unqualify on Param when
+       comparing it with Ctrl_Arg, since Ctrl_Arg may have had qualification
+       stripped off.
+
 2014-01-24  Robert Dewar  <dewar@adacore.com>
 
        * sinfo.ads, make.adb, prj-env.adb: Minor reformatting.
index b4c56accb0f8830d5add8cf45e1d996d142ff38d..1f84738985face51a5a8b6fe0846e0ee2fe249fd 100644 (file)
@@ -777,11 +777,12 @@ package body Exp_Disp is
 
          Param := First_Actual (Call_Node);
          while Present (Param) loop
-            --  Cases in which we may have generated runtime checks
 
-            if Param = Ctrl_Arg
-              or else Subp = Eq_Prim_Op
-            then
+            --  Cases in which we may have generated run-time checks. Note that
+            --  we strip any qualification from Param before comparing with the
+            --  already-stripped controlling argument.
+
+            if Unqualify (Param) = Ctrl_Arg or else Subp = Eq_Prim_Op then
                Append_To (New_Params,
                  Duplicate_Subexpr_Move_Checks (Param));