rpms/gcc/devel gcc43-pr34965.patch, NONE, 1.1 gcc43-pr32139.patch, 1.1, 1.2 gcc43.spec, 1.10, 1.11

Jakub Jelinek (jakub) fedora-extras-commits at redhat.com
Fri Jan 25 17:43:13 UTC 2008


Author: jakub

Update of /cvs/pkgs/rpms/gcc/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv31405

Modified Files:
	gcc43-pr32139.patch gcc43.spec 
Added Files:
	gcc43-pr34965.patch 
Log Message:
4.3.0-0.6

gcc43-pr34965.patch:

--- NEW FILE gcc43-pr34965.patch ---
2008-01-25  Jakub Jelinek  <jakub at redhat.com>

	PR c++/34965
	* c-pretty-print.c (pp_c_exclusive_or_expression): Handle
	TRUTH_XOR_EXPR.
	(pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
	(pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
	(pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
	and TRUTH_XOR_EXPR.

	* error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
	and TRUTH_XOR_EXPR.

	* gcc.dg/pr34965.c: New test.
	* g++.dg/other/error24.C: New test.

--- gcc/c-pretty-print.c.jj	2007-08-28 11:38:37.000000000 +0200
+++ gcc/c-pretty-print.c	2008-01-25 17:41:06.000000000 +0100
@@ -1,5 +1,6 @@
 /* Subroutines common to both C and C++ pretty-printers.
-   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
    Contributed by Gabriel Dos Reis <gdr at integrable-solutions.net>
 
 This file is part of GCC.
@@ -1737,10 +1738,14 @@ pp_c_and_expression (c_pretty_printer *p
 static void
 pp_c_exclusive_or_expression (c_pretty_printer *pp, tree e)
 {
-  if (TREE_CODE (e) == BIT_XOR_EXPR)
+  if (TREE_CODE (e) == BIT_XOR_EXPR
+      || TREE_CODE (e) == TRUTH_XOR_EXPR)
     {
       pp_c_exclusive_or_expression (pp, TREE_OPERAND (e, 0));
-      pp_c_maybe_whitespace (pp);
+      if (TREE_CODE (e) == BIT_XOR_EXPR)
+	pp_c_maybe_whitespace (pp);
+      else
+	pp_c_whitespace (pp);
       pp_carret (pp);
       pp_c_whitespace (pp);
       pp_c_and_expression (pp, TREE_OPERAND (e, 1));
@@ -1775,7 +1780,8 @@ pp_c_inclusive_or_expression (c_pretty_p
 static void
 pp_c_logical_and_expression (c_pretty_printer *pp, tree e)
 {
-  if (TREE_CODE (e) == TRUTH_ANDIF_EXPR)
+  if (TREE_CODE (e) == TRUTH_ANDIF_EXPR
+      || TREE_CODE (e) == TRUTH_AND_EXPR)
     {
       pp_c_logical_and_expression (pp, TREE_OPERAND (e, 0));
       pp_c_whitespace (pp);
@@ -1794,7 +1800,8 @@ pp_c_logical_and_expression (c_pretty_pr
 void
 pp_c_logical_or_expression (c_pretty_printer *pp, tree e)
 {
-  if (TREE_CODE (e) == TRUTH_ORIF_EXPR)
+  if (TREE_CODE (e) == TRUTH_ORIF_EXPR
+      || TREE_CODE (e) == TRUTH_OR_EXPR)
     {
       pp_c_logical_or_expression (pp, TREE_OPERAND (e, 0));
       pp_c_whitespace (pp);
@@ -1963,6 +1970,7 @@ pp_c_expression (c_pretty_printer *pp, t
       break;
 
     case BIT_XOR_EXPR:
+    case TRUTH_XOR_EXPR:
       pp_c_exclusive_or_expression (pp, e);
       break;
 
@@ -1971,10 +1979,12 @@ pp_c_expression (c_pretty_printer *pp, t
       break;
 
     case TRUTH_ANDIF_EXPR:
+    case TRUTH_AND_EXPR:
       pp_c_logical_and_expression (pp, e);
       break;
 
     case TRUTH_ORIF_EXPR:
+    case TRUTH_OR_EXPR:
       pp_c_logical_or_expression (pp, e);
       break;
 
--- gcc/cp/error.c.jj	2008-01-22 15:19:30.000000000 +0100
+++ gcc/cp/error.c	2008-01-25 18:20:30.000000000 +0100
@@ -2083,6 +2083,16 @@ dump_expr (tree t, int flags)
       pp_expression (cxx_pp, t);
       break;
 
+    case TRUTH_AND_EXPR:
+    case TRUTH_OR_EXPR:
+    case TRUTH_XOR_EXPR:
+      if (flags & TFF_EXPR_IN_PARENS)
+	pp_cxx_left_paren (cxx_pp);
+      pp_expression (cxx_pp, t);
+      if (flags & TFF_EXPR_IN_PARENS)
+	pp_cxx_right_paren (cxx_pp);
+      break;
+
     case OBJ_TYPE_REF:
       dump_expr (resolve_virtual_fun_from_obj_type_ref (t), flags);
       break;
--- gcc/testsuite/gcc.dg/pr34965.c.jj	2008-01-25 18:25:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/pr34965.c	2008-01-25 18:26:05.000000000 +0100
@@ -0,0 +1,13 @@
+/* PR c++/34965 */
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+int foo (int);
+
+void
+bar (int i, int j, double k)
+{
+  foo (i && j) ();	/* { dg-error "\\(i != 0 \\&\\& j != 0\\)" } */
+  foo (!i || !j) ();	/* { dg-error "\\(i == 0 \\|\\| j == 0\\)" } */
+  foo (!i == !j) ();	/* { dg-error "\\(i != 0 \\^ j == 0\\)" } */
+}
--- gcc/testsuite/g++.dg/other/error24.C.jj	2008-01-25 14:38:12.000000000 +0100
+++ gcc/testsuite/g++.dg/other/error24.C	2008-01-25 18:25:01.000000000 +0100
@@ -0,0 +1,13 @@
+// PR c++/34965
+// { dg-do compile }
+// { dg-options "-O" }
+
+int foo (int);
+
+void
+bar (int i, int j, double k)
+{
+  foo (i && j) ();	// { dg-error "\\(i != 0 \\&\\& j != 0\\)" }
+  foo (!i || !j) ();	// { dg-error "\\(i == 0 \\|\\| j == 0\\)" }
+  foo (!i == !j) ();	// { dg-error "\\(i != 0 \\^ j == 0\\)" }
+}

gcc43-pr32139.patch:

Index: gcc43-pr32139.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc43-pr32139.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc43-pr32139.patch	12 Dec 2007 20:16:35 -0000	1.1
+++ gcc43-pr32139.patch	25 Jan 2008 17:43:01 -0000	1.2
@@ -1,47 +1,8 @@
 2007-06-01  Jakub Jelinek  <jakub at redhat.com>
 
 	PR tree-optimization/32139
-	* c-typeck.c (common_pointer_type): Set TYPE_READONLY
-	and TYPE_VOLATILE on the merged pointed to FUNCTION_TYPE
-	only if both pointed_to_1 and pointed_to_2 are TYPE_READONLY
-	resp. TYPE_VOLATILE.
-
 	* gcc.c-torture/compile/20070531-1.c: New test.
 
---- gcc/c-typeck.c.jj	2007-04-25 10:13:52.000000000 +0200
-+++ gcc/c-typeck.c	2007-06-01 10:51:53.000000000 +0200
-@@ -499,6 +499,7 @@ common_pointer_type (tree t1, tree t2)
-   tree pointed_to_1, mv1;
-   tree pointed_to_2, mv2;
-   tree target;
-+  int type_quals;
- 
-   /* Save time if the two types are the same.  */
- 
-@@ -526,10 +527,19 @@ common_pointer_type (tree t1, tree t2)
-   if (TREE_CODE (mv2) != ARRAY_TYPE)
-     mv2 = TYPE_MAIN_VARIANT (pointed_to_2);
-   target = composite_type (mv1, mv2);
--  t1 = build_pointer_type (c_build_qualified_type
--			   (target,
--			    TYPE_QUALS (pointed_to_1) |
--			    TYPE_QUALS (pointed_to_2)));
-+  type_quals = TYPE_QUALS (pointed_to_1) | TYPE_QUALS (pointed_to_2);
-+  if (TREE_CODE (pointed_to_1) == FUNCTION_TYPE)
-+    {
-+      /* TYPE_READONLY and TYPE_VOLATILE on FUNCTION_TYPE should be
-+	 logically ANDed, not ORed, as if one function is
-+	 __attribute__((const)) and the other is not, the common type
-+	 must be conservatively not __attribute__((const))
-+	 and similarly for __attribute__((noreturn)).  */
-+      type_quals &= ~(TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE);
-+      type_quals |= (TYPE_QUALS (pointed_to_1) & TYPE_QUALS (pointed_to_2))
-+		    & (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE);
-+    }
-+  t1 = build_pointer_type (c_build_qualified_type (target, type_quals));
-   return build_type_attribute_variant (t1, attributes);
- }
- 
 --- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj	2007-05-31 13:47:22.000000000 +0200
 +++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c	2007-06-01 10:57:15.000000000 +0200
 @@ -0,0 +1,11 @@


Index: gcc43.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc43.spec,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- gcc43.spec	25 Jan 2008 17:07:14 -0000	1.10
+++ gcc43.spec	25 Jan 2008 17:43:01 -0000	1.11
@@ -140,6 +140,7 @@
 Patch11: gcc43-rh341221.patch
 Patch12: gcc43-cpp-pragma.patch
 Patch13: gcc43-java-debug-iface-type.patch
+Patch14: gcc43-pr34965.patch
 
 # On ARM EABI systems, we do want -gnueabi to be part of the
 # target triple.
@@ -434,8 +435,9 @@
 %patch9 -p0 -b .pr33763~
 %patch10 -p0 -b .rh330771~
 %patch11 -p0 -b .rh341221~
-%patch12 -p0 -b .cpp-pragma.patch
-%patch13 -p0 -b .java-debug-iface-type
+%patch12 -p0 -b .cpp-pragma~
+%patch13 -p0 -b .java-debug-iface-type~
+%patch14 -p0 -b .pr34965~
 
 tar xzf %{SOURCE4}
 




More information about the fedora-extras-commits mailing list