re PR target/56347 (FAIL: gfortran.dg/integer_exponentiation_2.f90 -O2 execution...
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Mon, 18 Feb 2013 16:29:49 +0000 (16:29 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Mon, 18 Feb 2013 16:29:49 +0000 (16:29 +0000)
PR target/56347
* config/pa/pa.c (pa_conditional_register_usage): On HP-UX, mark
registers %fr12 and %fr12R as call used.

From-SVN: r196123

gcc/ChangeLog
gcc/config/pa/pa.c

index 4b53af801b00699805c35254fe771d21bbe93f77..e8be788a8c738b287d9a9ffc658669e7a9d8a2eb 100644 (file)
@@ -1,4 +1,8 @@
-2013-02-18  John David Anglin  <dave.anglin@nrc-cnrc.ca>
+2013-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR target/56347
+       * config/pa/pa.c (pa_conditional_register_usage): On HP-UX, mark
+       registers %fr12 and %fr12R as call used.
 
        PR target/56214
        * config/pa/predicates.md (base14_operand): Except for BLKmode, QImode
index 0d39483d908ec1250e97f6833891ac7e46da1886..7816eeb54e4ba59c115b717d231021206501a0a1 100644 (file)
@@ -10313,6 +10313,21 @@ pa_conditional_register_usage (void)
 {
   int i;
 
+  if (TARGET_HPUX)
+    {
+      /* Work around powf bug in libm.  */
+      if (TARGET_64BIT)
+       {
+         /* Mark %fr12 as call used.  */
+         call_used_regs[40] = 1;
+       }
+      else
+       {
+         /* Mark %fr12 and %fr12R as call used.  */
+         call_used_regs[48] = 1;
+         call_used_regs[49] = 1;
+       }
+    }
   if (!TARGET_64BIT && !TARGET_PA_11)
     {
       for (i = 56; i <= FP_REG_LAST; i++)