merge from gcc
authorDJ Delorie <dj@redhat.com>
Sat, 6 Aug 2011 18:40:27 +0000 (18:40 +0000)
committerDJ Delorie <dj@redhat.com>
Sat, 6 Aug 2011 18:40:27 +0000 (18:40 +0000)
libiberty/ChangeLog
libiberty/cp-demangle.c
libiberty/testsuite/demangle-expected
libiberty/testsuite/test-expandargv.c

index 2c5b761..fe9da85 100644 (file)
@@ -1,3 +1,13 @@
+2011-08-06  Uros Bizjak  <ubizjak@gmail.com>
+
+       * testsuite/test-expandargv.c (writeout_test): Check result of fwrite.
+
+2011-08-01  Jason Merrill  <jason@redhat.com>
+
+       PR c++/49932
+       * cp-demangle.c (d_prefix): Handle decltype.
+       * testsuite/demangle-expected: Test it.
+
 2011-07-26  H.J. Lu  <hongjiu.lu@intel.com>
 
        * testsuite/demangle-expected: Remove an extra line.
 
 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
 
-        * pex-win32.c (pex_win32_fdopenr): Set INHERIT to false.
+       * pex-win32.c (pex_win32_fdopenr): Set INHERIT to false.
 
 2009-05-29  Michael Matz  <matz@suse.de>
 
 
 2009-04-29  Julian Brown  <julian@codesourcery.com>
 
-       * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.    
+       * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
        (pex_win32_exec_child): Ensure each process has only one handle open
        on pipe endpoints. Close standard input after creating child for
        symmetry with standard output/standard error.
        section, so that the native build does detect them at configure
        time.
        * configure: Regenerated.
-       
+
 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
 
-        PR target/39397
-        * pex-common.h (struct pex_obj): Store pid values as pid_t,
-        not as long (members *children and (*wait))
-        * pex-common.c (pex_run_in_environment): Likewise.
-        * pex-win32.c (pex_win32_wait): Return pid_t and properly check
-        returned pid value.
-        * pex-djgpp.c (pex_djgpp_wait): Return pid_t.
-        * pex-msdos.c (pex_msdos_wait): Likewise.
+       PR target/39397
+       * pex-common.h (struct pex_obj): Store pid values as pid_t,
+       not as long (members *children and (*wait))
+       * pex-common.c (pex_run_in_environment): Likewise.
+       * pex-win32.c (pex_win32_wait): Return pid_t and properly check
+       returned pid value.
+       * pex-djgpp.c (pex_djgpp_wait): Return pid_t.
+       * pex-msdos.c (pex_msdos_wait): Likewise.
 
 2009-04-07  Arnaud Patard <apatard@mandriva.com>
 
-       * libiberty/configure.ac: Fix Linux/MIPS matching rule.
-       * libiberty/configure: Regenerate.
+       * libiberty/configure.ac: Fix Linux/MIPS matching rule.
+       * libiberty/configure: Regenerate.
 
 2009-03-27  Ian Lance Taylor  <iant@google.com>
 
 2008-10-08  David Edelsohn  <edelsohn@gnu.org>
 
        * xstrdup.c: Include <sys/types.h> after "config.h"
+
 2008-10-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * configure.ac: Call AC_SYS_LARGEFILE.
index f41856b..d67a9e7 100644 (file)
@@ -1280,6 +1280,7 @@ d_nested_name (struct d_info *di)
 /* <prefix> ::= <prefix> <unqualified-name>
             ::= <template-prefix> <template-args>
             ::= <template-param>
+            ::= <decltype>
             ::=
             ::= <substitution>
 
@@ -1308,10 +1309,19 @@ d_prefix (struct d_info *di)
         <template-param> here.  */
 
       comb_type = DEMANGLE_COMPONENT_QUAL_NAME;
-      if (IS_DIGIT (peek)
+      if (peek == 'D')
+       {
+         char peek2 = d_peek_next_char (di);
+         if (peek2 == 'T' || peek2 == 't')
+           /* Decltype.  */
+           dc = cplus_demangle_type (di);
+         else
+           /* Destructor name.  */
+           dc = d_unqualified_name (di);
+       }
+      else if (IS_DIGIT (peek)
          || IS_LOWER (peek)
          || peek == 'C'
-         || peek == 'D'
          || peek == 'U'
          || peek == 'L')
        dc = d_unqualified_name (di);
index f9e8447..3737cfd 100644 (file)
@@ -3901,6 +3901,10 @@ java resource java/util/iso4217.properties
 --format=gnu-v3
 _Z3addIidEDTplfp_fp0_ET_T0_
 decltype ({parm#1}+{parm#2}) add<int, double>(int, double)
+# decltype scope test
+--format=gnu-v3
+_Z1fI1SENDtfp_E4typeET_
+decltype ({parm#1})::type f<S>(S)
 # decltype/fn call test
 --format=gnu-v3
 _Z4add3IidEDTclL_Z1gEfp_fp0_EET_T0_
index 57b96b3..dff20d4 100644 (file)
@@ -189,7 +189,7 @@ writeout_test (int test, const char * test_data)
 {
   char filename[256];
   FILE *fd;
-  size_t len;
+  size_t len, sys_fwrite;
   char * parse;
 
   /* Unique filename per test */
@@ -208,7 +208,10 @@ writeout_test (int test, const char * test_data)
   /* Run all possible replaces */
   run_replaces (parse);
 
-  fwrite (parse, len, sizeof (char), fd);
+  sys_fwrite = fwrite (parse, sizeof (char), len, fd);
+  if (sys_fwrite != len)
+    fatal_error (__LINE__, "Failed to write to test file.", errno);
+
   free (parse);
   fclose (fd);
 }