gcc/gcc44-diff.patch
Jakub Jelinek 9fceea1844 4.4.0-0.20
2009-02-17 17:56:57 +00:00

354 lines
10 KiB
Diff

--- gcc/DATESTAMP (revision 144236)
+++ gcc/DATESTAMP (revision 144237)
@@ -1 +1 @@
-20090216
+20090217
--- gcc/ChangeLog (revision 144236)
+++ gcc/ChangeLog (revision 144237)
@@ -1,3 +1,36 @@
+2009-02-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39202
+ * tree-ssa-structalias.c (do_structure_copy): Before collapsing
+ a var make sure to follow existing collapses.
+
+2009-02-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/39214
+ * langhooks.c (lhd_print_error_function): Check for NULL block.
+
+2009-02-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39204
+ * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
+ of the PHI arg.
+
+2009-02-17 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/soft-fp/double.h: Update from glibc CVS.
+
+2009-02-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39207
+ * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
+ strict-aliasing warnings for pointers pointing to NULL.
+
+2009-02-16 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/35446
+ * c-parser.c (c_parser_braced_init): Call pop_init_level when
+ skipping until next close brace.
+
2009-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR target/37049
--- gcc/testsuite/gcc.c-torture/compile/pr39202.c (revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/pr39202.c (revision 144237)
@@ -0,0 +1,33 @@
+typedef struct
+{
+ union
+ {
+ int * aaa;
+ } u;
+} t_a;
+
+typedef struct
+{
+ unsigned bbb : 1;
+} t_b;
+
+typedef struct
+{
+ int ccc;
+ t_a ddd;
+ t_b eee;
+ int fff;
+} t_c;
+
+typedef struct t_d
+{
+ t_c f1;
+ t_c f2;
+} t_d;
+
+void foo (void)
+{
+ t_d ggg;
+ ggg.f1 = ggg.f2;
+}
+
--- gcc/testsuite/gcc.dg/torture/pr39204.c (revision 0)
+++ gcc/testsuite/gcc.dg/torture/pr39204.c (revision 144237)
@@ -0,0 +1,131 @@
+/* { dg-do compile } */
+/* { dg-options "-w" } */
+
+typedef unsigned int size_t;
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct {
+ int __val[2];
+} __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned int __id_t;
+typedef struct _IO_FILE FILE;
+typedef struct _IO_FILE __FILE;
+typedef struct {
+ int __count;
+ union {
+ unsigned int __wch;
+ char __wchb[4];
+ }
+ __value;
+} __mbstate_t;
+typedef struct {
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct {
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef struct _IO_FILE _IO_FILE;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+extern int fputs (__const char *__restrict __s, FILE * __restrict __stream);
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nonnull__ (1, 2)));
+ extern char *rindex (__const char *__s, int __c) __attribute__ ((__nonnull__ (1)));
+extern size_t strlen (__const char *__s) __attribute__ ((__nothrow__))
+ __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+ char *mystrlwr (char *string);
+ char *m_replace_filename (const char *path, const char *filename);
+ typedef struct LINE {
+ char *text;
+ struct LINE *next;
+ int flags;
+ } LINE;
+typedef struct TOC {
+ char *text;
+ char *alt;
+ struct TOC *next;
+ int root;
+ int texinfoable;
+ int htmlable;
+ int otherfile;
+} TOC;
+static int _empty_count;
+extern char *_word_substitution[256];
+static void _output_sorted_nested_toc (TOC ** list, unsigned int num_items);
+static char *_do_text_substitution (char *input);
+static int _toc_scmp (const void *e1, const void *e2)
+{
+ TOC *t1 = *((TOC **) e1);
+ TOC *t2 = *((TOC **) e2);
+ return mystricmp (t1->text, t2->text);
+}
+static void _output_buffered_text (void) { if (_empty_count) ; }
+void _post_process_filename (char *filename)
+{
+ int code_scanning = 0;
+ char *new_filename, *p;
+ char *line;
+ FILE *f1 = 0, *f2 = 0;
+ if (!new_filename || strlen (new_filename) < 2)
+ new_filename[strlen (filename) - 1] = 'x';
+ if (!f1 || !f2)
+ while ((line = m_fgets (f1)))
+ {
+ line = _do_text_substitution (line);
+ fputs (line, f2);
+ }
+ if (remove (filename))
+ cancel:
+ if (f1)
+ if (f2)
+ if (new_filename)
+ ;
+}
+static void _close_html_file (FILE * file)
+{
+ int f;
+ for (f = 0; _word_substitution[f]; f++)
+ ;
+}
+static __attribute__((always_inline))
+char * _do_text_substitution (char *input)
+{
+ int start, end, middle, f;
+ char *temp, *found, *reader;
+ for (f = 0; _word_substitution[f]; f++)
+ {
+ reader = input;
+ while ((found = strstr (reader, _word_substitution[f])))
+ {
+ start = found - input;
+ input = temp;
+ reader = temp + start + middle;
+ }
+ }
+ return input;
+}
--- gcc/testsuite/gcc.dg/noncompile/init-5.c (revision 0)
+++ gcc/testsuite/gcc.dg/noncompile/init-5.c (revision 144237)
@@ -0,0 +1,4 @@
+/* Test for ICE after syntax error in initializer with range
+ designator: PR 35446. */
+
+int a[2][2] = { [0 ... 1] = { ; } }; /* { dg-error "expected expression" } */
--- gcc/testsuite/gcc.dg/init-bad-4.c (revision 144236)
+++ gcc/testsuite/gcc.dg/init-bad-4.c (revision 144237)
@@ -2,4 +2,4 @@
/* Origin: Richard Guenther <rguenth@gcc.gnu.org> */
/* { dg-do compile } */
-struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound" } */
+struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound|excess" } */
--- gcc/testsuite/gcc.dg/vect/vect-outer-5.c (revision 144236)
+++ gcc/testsuite/gcc.dg/vect/vect-outer-5.c (revision 144237)
@@ -1,4 +1,4 @@
-/* { dg-require-effective-target vect_int } */
+/* { dg-require-effective-target vect_float } */
#include <stdio.h>
#include <stdarg.h>
--- gcc/testsuite/gcc.dg/vect/vect-outer-6.c (revision 144236)
+++ gcc/testsuite/gcc.dg/vect/vect-outer-6.c (revision 144237)
@@ -1,4 +1,4 @@
-/* { dg-require-effective-target vect_int } */
+/* { dg-require-effective-target vect_float } */
#include <stdarg.h>
#include <signal.h>
--- gcc/testsuite/ChangeLog (revision 144236)
+++ gcc/testsuite/ChangeLog (revision 144237)
@@ -1,3 +1,24 @@
+2009-02-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39202
+ * gcc.c-torture/compile/pr39202.c: New testcase.
+
+2009-02-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39204
+ * gcc.dg/torture/pr39204.c: New testcase.
+
+2009-02-17 Bingfeng Mei <bmei@broadcom.com>
+
+ * gcc.dg/vect/vect-outer-5.c: Require vect_float support.
+ * gcc.dg/vect/vect-outer-6.c: Ditto.
+
+2009-02-16 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/35446
+ * gcc.dg/noncompile/init-5.c: New test.
+ * gcc.dg/init-bad-4.c: Adjust expected errors.
+
2009-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR target/37049
--- gcc/langhooks.c (revision 144236)
+++ gcc/langhooks.c (revision 144237)
@@ -437,7 +437,7 @@ lhd_print_error_function (diagnostic_con
while (block && TREE_CODE (block) == BLOCK)
block = BLOCK_SUPERCONTEXT (block);
- if (TREE_CODE (block) == FUNCTION_DECL)
+ if (block && TREE_CODE (block) == FUNCTION_DECL)
fndecl = block;
abstract_origin = NULL;
}
--- gcc/tree-ssa-pre.c (revision 144236)
+++ gcc/tree-ssa-pre.c (revision 144237)
@@ -1707,6 +1707,9 @@ phi_translate_1 (pre_expr expr, bitmap_s
tree def = PHI_ARG_DEF (phi, e->dest_idx);
pre_expr newexpr;
+ if (TREE_CODE (def) == SSA_NAME)
+ def = VN_INFO (def)->valnum;
+
/* Handle constant. */
if (is_gimple_min_invariant (def))
return get_or_alloc_expr_for_constant (def);
--- gcc/tree-ssa-structalias.c (revision 144236)
+++ gcc/tree-ssa-structalias.c (revision 144237)
@@ -3405,8 +3405,8 @@ do_structure_copy (tree lhsop, tree rhso
{
if (!do_simple_structure_copy (lhs, rhs, MIN (lhssize, rhssize)))
{
- lhs.var = collapse_rest_of_var (lhs.var);
- rhs.var = collapse_rest_of_var (rhs.var);
+ lhs.var = collapse_rest_of_var (get_varinfo_fc (lhs.var)->id);
+ rhs.var = collapse_rest_of_var (get_varinfo_fc (rhs.var)->id);
lhs.offset = 0;
rhs.offset = 0;
lhs.type = SCALAR;
@@ -4935,6 +4935,7 @@ find_what_p_points_to (tree p)
{
pi->pt_vars = NULL;
if (pruned > 0
+ && !pi->pt_null
&& pi->is_dereferenced
&& warn_strict_aliasing > 0
&& !SSA_NAME_IS_DEFAULT_DEF (p))
--- gcc/c-parser.c (revision 144236)
+++ gcc/c-parser.c (revision 144237)
@@ -3036,6 +3036,7 @@ c_parser_braced_init (c_parser *parser,
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, "expected %<}%>");
+ pop_init_level (0);
return ret;
}
c_parser_consume_token (parser);
--- gcc/config/soft-fp/double.h (revision 144236)
+++ gcc/config/soft-fp/double.h (revision 144237)
@@ -1,6 +1,7 @@
/* Software floating-point emulation.
Definitions for IEEE Double Precision
- Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -203,13 +204,13 @@ union _FP_UNION_D
#define FP_UNPACK_SEMIRAW_D(X,val) \
do { \
- _FP_UNPACK_RAW_2(1,X,val); \
+ _FP_UNPACK_RAW_1(D,X,val); \
_FP_UNPACK_SEMIRAW(D,1,X); \
} while (0)
#define FP_UNPACK_SEMIRAW_DP(X,val) \
do { \
- _FP_UNPACK_RAW_2_P(1,X,val); \
+ _FP_UNPACK_RAW_1_P(D,X,val); \
_FP_UNPACK_SEMIRAW(D,1,X); \
} while (0)