354 lines
10 KiB
Diff
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)
|
|
|