[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 12 Nov 2015 11:40:26 +0000 (12:40 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 12 Nov 2015 11:40:26 +0000 (12:40 +0100)
2015-11-12  Jerome Lambourg  <lambourg@adacore.com>

* init.c: Do not try to mess with the MSR values in RTP mode:
not needed and forbidden.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

* exp_attr.adb (Compile_Stream_Body_In_Scope): Do not install
full view of a type that has pragma Stream_Convert, because
this indicates special processing for the stream operations of
the type.

From-SVN: r230240

gcc/ada/ChangeLog
gcc/ada/exp_attr.adb
gcc/ada/init.c

index 646d8d15acf0f0c5e71bbc01afd3005a95442f48..13c2be14cb926dfc50f18e2fd3304d9bd6a740f1 100644 (file)
@@ -1,3 +1,15 @@
+2015-11-12  Jerome Lambourg  <lambourg@adacore.com>
+
+       * init.c: Do not try to mess with the MSR values in RTP mode:
+       not needed and forbidden.
+
+2015-11-12  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_attr.adb (Compile_Stream_Body_In_Scope): Do not install
+       full view of a type that has pragma Stream_Convert, because
+       this indicates special processing for the stream operations of
+       the type.
+
 2015-11-12  Gary Dismukes  <dismukes@adacore.com>
 
        * exp_ch5.adb, sem_ch3.adb, exp_util.ads, inline.adb, freeze.adb,
index 8c0224705bcb0adca1872249711aaa058ad8c387..d40f49de51ce181ceca6acccd9a8c8687d13d3f6 100644 (file)
@@ -650,12 +650,19 @@ package body Exp_Attr is
          --  The component type may be private, in which case we install its
          --  full view to compile the subprogram.
 
+         --  The component type may be private, in which case we install its
+         --  full view to compile the subprogram. We do not do this if the
+         --  type has a Stream_Convert pragma, which indicates that there are
+         --  special stream-processing operations for that type (for example
+         --  Unbounded_String and its wide varieties).
+
          Scop := Scope (C_Type);
 
          if Is_Private_Type (C_Type)
            and then Present (Full_View (C_Type))
            and then not In_Open_Scopes (Scop)
            and then Ekind (Scop) = E_Package
+           and then No (Get_Stream_Convert_Pragma (C_Type))
          then
             Install := True;
          end if;
index 0ce64235b51b7244957170caa561b37190d25690..59fc335b6fe42688cfc49e35886df07a43386156 100644 (file)
@@ -1922,8 +1922,9 @@ __gnat_error_handler (int sig, siginfo_t *si, void *sc)
   /* VxWorks on e500v2 clears the SPE bit of the MSR when entering CPU
      exception state. To allow the handler and exception to work properly
      when they contain SPE instructions, we need to set it back before doing
-     anything else. */
-#if (CPU == PPCE500V2) || (CPU == PPC85XX)
+     anything else.
+     This mechanism is only need in kernel mode. */
+#if !(defined (__RTP__) || defined (CERT)) && ((CPU == PPCE500V2) || (CPU == PPC85XX))
   register unsigned msr;
   /* Read the MSR value */
   asm volatile ("mfmsr %0" : "=r" (msr));