gcc-4.6: Switch to using svn SRC_URI for recipe
We call the recipes 4.6 Remove the backport patches (From OE-Core rev: 68b545f4ff719f2b6e57d68b002dc9845c7a14ae) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
c2007ba4cd
commit
0faa5f7299
|
@ -1,70 +0,0 @@
|
|||
From af3385141f9bfe32ab89165bfc98a7ea2ff19278 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 09:19:36 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48141
|
||||
* dse.c (record_store): If no positions are needed in an insn
|
||||
that cannot be deleted, at least unchain it from active_local_stores.
|
||||
|
||||
* gcc.dg/pr48141.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171545 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 8e9b645..e43ab72 100644
|
||||
--- a/gcc/dse.c
|
||||
+++ b/gcc/dse.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* RTL dead store elimination.
|
||||
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
|
||||
+ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Contributed by Richard Sandiford <rsandifor@codesourcery.com>
|
||||
@@ -1530,8 +1530,7 @@ record_store (rtx body, bb_info_t bb_info)
|
||||
|
||||
/* An insn can be deleted if every position of every one of
|
||||
its s_infos is zero. */
|
||||
- if (any_positions_needed_p (s_info)
|
||||
- || ptr->cannot_delete)
|
||||
+ if (any_positions_needed_p (s_info))
|
||||
del = false;
|
||||
|
||||
if (del)
|
||||
@@ -1543,7 +1542,8 @@ record_store (rtx body, bb_info_t bb_info)
|
||||
else
|
||||
active_local_stores = ptr->next_local_store;
|
||||
|
||||
- delete_dead_store_insn (insn_to_delete);
|
||||
+ if (!insn_to_delete->cannot_delete)
|
||||
+ delete_dead_store_insn (insn_to_delete);
|
||||
}
|
||||
else
|
||||
last = ptr;
|
||||
new file mode 100644
|
||||
index 0000000..006f5cb
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48141.c
|
||||
@@ -0,0 +1,17 @@
|
||||
+/* PR rtl-optimization/48141 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O" } */
|
||||
+
|
||||
+#define A i = 0;
|
||||
+#define B A A A A A A A A A A
|
||||
+#define C B B B B B B B B B B
|
||||
+#define D C C C C C C C C C C
|
||||
+#define E D D D D D D D D D D
|
||||
+
|
||||
+int
|
||||
+foo (void)
|
||||
+{
|
||||
+ volatile int i = 0;
|
||||
+ E E E E E E E E E E E
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
From 540b311d6b6aa2e50a9feb45255361e498bb5198 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 09:20:34 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48141
|
||||
* params.def (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES): New.
|
||||
* dse.c: Include params.h.
|
||||
(active_local_stores_len): New variable.
|
||||
(add_wild_read, dse_step1): Clear it when setting active_local_stores
|
||||
to NULL.
|
||||
(record_store, check_mem_read_rtx): Decrease it when removing
|
||||
from the chain.
|
||||
(scan_insn): Likewise. Increase it when adding to chain, if it
|
||||
reaches PARAM_MAX_DSE_ACTIVE_LOCAL_STORES limit, set to 1 and
|
||||
set active_local_stores to NULL before the addition.
|
||||
* Makefile.in (dse.o): Depend on $(PARAMS_H).
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171546 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 9a8262a..792ca6c 100644
|
||||
--- a/gcc/Makefile.in
|
||||
+++ b/gcc/Makefile.in
|
||||
@@ -3070,7 +3070,7 @@ dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
|
||||
$(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) \
|
||||
$(TREE_PASS_H) alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H) \
|
||||
- $(BITMAP_H)
|
||||
+ $(BITMAP_H) $(PARAMS_H)
|
||||
fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \
|
||||
output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
|
||||
diff --git a/gcc/dse.c b/gcc/dse.c
|
||||
index e43ab72..a15b735 100644
|
||||
--- a/gcc/dse.c
|
||||
+++ b/gcc/dse.c
|
||||
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "optabs.h"
|
||||
#include "dbgcnt.h"
|
||||
#include "target.h"
|
||||
+#include "params.h"
|
||||
|
||||
/* This file contains three techniques for performing Dead Store
|
||||
Elimination (dse).
|
||||
@@ -387,6 +388,7 @@ static alloc_pool insn_info_pool;
|
||||
/* The linked list of stores that are under consideration in this
|
||||
basic block. */
|
||||
static insn_info_t active_local_stores;
|
||||
+static int active_local_stores_len;
|
||||
|
||||
struct bb_info
|
||||
{
|
||||
@@ -947,6 +949,7 @@ add_wild_read (bb_info_t bb_info)
|
||||
}
|
||||
insn_info->wild_read = true;
|
||||
active_local_stores = NULL;
|
||||
+ active_local_stores_len = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1537,6 +1540,7 @@ record_store (rtx body, bb_info_t bb_info)
|
||||
{
|
||||
insn_info_t insn_to_delete = ptr;
|
||||
|
||||
+ active_local_stores_len--;
|
||||
if (last)
|
||||
last->next_local_store = ptr->next_local_store;
|
||||
else
|
||||
@@ -2074,6 +2078,7 @@ check_mem_read_rtx (rtx *loc, void *data)
|
||||
if (dump_file)
|
||||
dump_insn_info ("removing from active", i_ptr);
|
||||
|
||||
+ active_local_stores_len--;
|
||||
if (last)
|
||||
last->next_local_store = i_ptr->next_local_store;
|
||||
else
|
||||
@@ -2163,6 +2168,7 @@ check_mem_read_rtx (rtx *loc, void *data)
|
||||
if (dump_file)
|
||||
dump_insn_info ("removing from active", i_ptr);
|
||||
|
||||
+ active_local_stores_len--;
|
||||
if (last)
|
||||
last->next_local_store = i_ptr->next_local_store;
|
||||
else
|
||||
@@ -2222,6 +2228,7 @@ check_mem_read_rtx (rtx *loc, void *data)
|
||||
if (dump_file)
|
||||
dump_insn_info ("removing from active", i_ptr);
|
||||
|
||||
+ active_local_stores_len--;
|
||||
if (last)
|
||||
last->next_local_store = i_ptr->next_local_store;
|
||||
else
|
||||
@@ -2426,6 +2433,7 @@ scan_insn (bb_info_t bb_info, rtx insn)
|
||||
if (dump_file)
|
||||
dump_insn_info ("removing from active", i_ptr);
|
||||
|
||||
+ active_local_stores_len--;
|
||||
if (last)
|
||||
last->next_local_store = i_ptr->next_local_store;
|
||||
else
|
||||
@@ -2453,6 +2461,12 @@ scan_insn (bb_info_t bb_info, rtx insn)
|
||||
fprintf (dump_file, "handling memset as BLKmode store\n");
|
||||
if (mems_found == 1)
|
||||
{
|
||||
+ if (active_local_stores_len++
|
||||
+ >= PARAM_VALUE (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES))
|
||||
+ {
|
||||
+ active_local_stores_len = 1;
|
||||
+ active_local_stores = NULL;
|
||||
+ }
|
||||
insn_info->next_local_store = active_local_stores;
|
||||
active_local_stores = insn_info;
|
||||
}
|
||||
@@ -2496,6 +2510,12 @@ scan_insn (bb_info_t bb_info, rtx insn)
|
||||
it as cannot delete. This simplifies the processing later. */
|
||||
if (mems_found == 1)
|
||||
{
|
||||
+ if (active_local_stores_len++
|
||||
+ >= PARAM_VALUE (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES))
|
||||
+ {
|
||||
+ active_local_stores_len = 1;
|
||||
+ active_local_stores = NULL;
|
||||
+ }
|
||||
insn_info->next_local_store = active_local_stores;
|
||||
active_local_stores = insn_info;
|
||||
}
|
||||
@@ -2534,6 +2554,7 @@ remove_useless_values (cselib_val *base)
|
||||
|
||||
if (del)
|
||||
{
|
||||
+ active_local_stores_len--;
|
||||
if (last)
|
||||
last->next_local_store = insn_info->next_local_store;
|
||||
else
|
||||
@@ -2584,6 +2605,7 @@ dse_step1 (void)
|
||||
= create_alloc_pool ("cse_store_info_pool",
|
||||
sizeof (struct store_info), 100);
|
||||
active_local_stores = NULL;
|
||||
+ active_local_stores_len = 0;
|
||||
cselib_clear_table ();
|
||||
|
||||
/* Scan the insns. */
|
||||
diff --git a/gcc/params.def b/gcc/params.def
|
||||
index 5749eb2..e5a82e9 100644
|
||||
--- a/gcc/params.def
|
||||
+++ b/gcc/params.def
|
||||
@@ -698,6 +698,12 @@ DEFPARAM(PARAM_MAX_SCHED_READY_INSNS,
|
||||
"The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass",
|
||||
100, 0, 0)
|
||||
|
||||
+/* This is the maximum number of active local stores RTL DSE will consider. */
|
||||
+DEFPARAM (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES,
|
||||
+ "max-dse-active-local-stores",
|
||||
+ "Maximum number of active local stores in RTL dead store elimination",
|
||||
+ 5000, 0, 0)
|
||||
+
|
||||
/* Prefetching and cache-optimizations related parameters. Default values are
|
||||
usually set by machine description. */
|
||||
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
From 125ee3cf946de59472c02ffd792aca4f1045669f Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 09:21:34 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48156
|
||||
* df-core.c (df_get_bb_dirty): Use df_lr if df_live is NULL,
|
||||
assume df and df_lr are not NULL.
|
||||
|
||||
* gcc.dg/pr48156.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171547 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 36270bf..98c2088 100644
|
||||
--- a/gcc/df-core.c
|
||||
+++ b/gcc/df-core.c
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Allocation for dataflow support routines.
|
||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||
- 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+ 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
Originally contributed by Michael P. Hayes
|
||||
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
|
||||
Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
|
||||
@@ -1400,10 +1400,9 @@ df_mark_solutions_dirty (void)
|
||||
bool
|
||||
df_get_bb_dirty (basic_block bb)
|
||||
{
|
||||
- if (df && df_live)
|
||||
- return bitmap_bit_p (df_live->out_of_date_transfer_functions, bb->index);
|
||||
- else
|
||||
- return false;
|
||||
+ return bitmap_bit_p ((df_live
|
||||
+ ? df_live : df_lr)->out_of_date_transfer_functions,
|
||||
+ bb->index);
|
||||
}
|
||||
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..7b4d529
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48156.c
|
||||
@@ -0,0 +1,45 @@
|
||||
+/* PR rtl-optimization/48156 */
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O -fcrossjumping --param min-crossjump-insns=1" } */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+
|
||||
+static int __attribute__ ((noinline, noclone))
|
||||
+equals (int s1, int s2)
|
||||
+{
|
||||
+ return s1 == s2;
|
||||
+}
|
||||
+
|
||||
+static int __attribute__ ((noinline, noclone))
|
||||
+bar (void)
|
||||
+{
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static void __attribute__ ((noinline, noclone))
|
||||
+baz (int f, int j)
|
||||
+{
|
||||
+ if (f != 4 || j != 2)
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo (int x)
|
||||
+{
|
||||
+ int i = 0, j = bar ();
|
||||
+
|
||||
+ if (x == 1)
|
||||
+ i = 2;
|
||||
+
|
||||
+ if (j && equals (i, j))
|
||||
+ baz (8, i);
|
||||
+ else
|
||||
+ baz (4, i);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ foo (1);
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
From 5bc59e25607b755798008d5e0d79ca4cea6711ed Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 09:23:01 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/42544
|
||||
PR c/48197
|
||||
* c-common.c (shorten_compare): If primopN is first sign-extended
|
||||
to opN and then zero-extended to result type, set primopN to opN.
|
||||
|
||||
* gcc.c-torture/execute/pr42544.c: New test.
|
||||
* gcc.c-torture/execute/pr48197.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171548 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 4da9a2d..c0c01b2 100644
|
||||
--- a/gcc/c-family/c-common.c
|
||||
+++ b/gcc/c-family/c-common.c
|
||||
@@ -3300,6 +3300,20 @@ shorten_compare (tree *op0_ptr, tree *op1_ptr, tree *restype_ptr,
|
||||
primop0 = get_narrower (op0, &unsignedp0);
|
||||
primop1 = get_narrower (op1, &unsignedp1);
|
||||
|
||||
+ /* If primopN is first sign-extended from primopN's precision to opN's
|
||||
+ precision, then zero-extended from opN's precision to
|
||||
+ *restype_ptr precision, shortenings might be invalid. */
|
||||
+ if (TYPE_PRECISION (TREE_TYPE (primop0)) < TYPE_PRECISION (TREE_TYPE (op0))
|
||||
+ && TYPE_PRECISION (TREE_TYPE (op0)) < TYPE_PRECISION (*restype_ptr)
|
||||
+ && !unsignedp0
|
||||
+ && TYPE_UNSIGNED (TREE_TYPE (op0)))
|
||||
+ primop0 = op0;
|
||||
+ if (TYPE_PRECISION (TREE_TYPE (primop1)) < TYPE_PRECISION (TREE_TYPE (op1))
|
||||
+ && TYPE_PRECISION (TREE_TYPE (op1)) < TYPE_PRECISION (*restype_ptr)
|
||||
+ && !unsignedp1
|
||||
+ && TYPE_UNSIGNED (TREE_TYPE (op1)))
|
||||
+ primop1 = op1;
|
||||
+
|
||||
/* Handle the case that OP0 does not *contain* a conversion
|
||||
but it *requires* conversion to FINAL_TYPE. */
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..c5951b0
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.c-torture/execute/pr42544.c
|
||||
@@ -0,0 +1,14 @@
|
||||
+/* PR c/42544 */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ signed short s = -1;
|
||||
+ if (sizeof (long long) == sizeof (unsigned int))
|
||||
+ return 0;
|
||||
+ if ((unsigned int) s >= 0x100000000ULL)
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr48197.c b/gcc/testsuite/gcc.c-torture/execute/pr48197.c
|
||||
new file mode 100644
|
||||
index 0000000..37812c0
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.c-torture/execute/pr48197.c
|
||||
@@ -0,0 +1,25 @@
|
||||
+/* PR c/48197 */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+static int y = 0x8000;
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ unsigned int x = (short)y;
|
||||
+ if (sizeof (0LL) == sizeof (0U))
|
||||
+ return 0;
|
||||
+ if (0LL > (0U ^ (short)-0x8000))
|
||||
+ abort ();
|
||||
+ if (0LL > (0U ^ x))
|
||||
+ abort ();
|
||||
+ if (0LL > (0U ^ (short)y))
|
||||
+ abort ();
|
||||
+ if ((0U ^ (short)-0x8000) < 0LL)
|
||||
+ abort ();
|
||||
+ if ((0U ^ x) < 0LL)
|
||||
+ abort ();
|
||||
+ if ((0U ^ (short)y) < 0LL)
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
From b6ed53c51ca6090f3f422e6223e8dc3b150f0393 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 09:24:06 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/48204
|
||||
* simplify-rtx.c (simplify_const_unary_operation): Call
|
||||
real_convert when changing mode class with FLOAT_EXTEND.
|
||||
|
||||
* gcc.dg/dfp/pr48204.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171549 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ce4eab4..ed6ae2b 100644
|
||||
--- a/gcc/simplify-rtx.c
|
||||
+++ b/gcc/simplify-rtx.c
|
||||
@@ -1526,7 +1526,8 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
|
||||
}
|
||||
|
||||
else if (GET_CODE (op) == CONST_DOUBLE
|
||||
- && SCALAR_FLOAT_MODE_P (mode))
|
||||
+ && SCALAR_FLOAT_MODE_P (mode)
|
||||
+ && SCALAR_FLOAT_MODE_P (GET_MODE (op)))
|
||||
{
|
||||
REAL_VALUE_TYPE d, t;
|
||||
REAL_VALUE_FROM_CONST_DOUBLE (d, op);
|
||||
@@ -1549,7 +1550,10 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
|
||||
d = real_value_truncate (mode, d);
|
||||
break;
|
||||
case FLOAT_EXTEND:
|
||||
- /* All this does is change the mode. */
|
||||
+ /* All this does is change the mode, unless changing
|
||||
+ mode class. */
|
||||
+ if (GET_MODE_CLASS (mode) != GET_MODE_CLASS (GET_MODE (op)))
|
||||
+ real_convert (&d, mode, &d);
|
||||
break;
|
||||
case FIX:
|
||||
real_arithmetic (&d, FIX_TRUNC_EXPR, &d, NULL);
|
||||
new file mode 100644
|
||||
index 0000000..7b42158
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/dfp/pr48204.c
|
||||
@@ -0,0 +1,10 @@
|
||||
+/* PR debug/48204 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre -g" } */
|
||||
+
|
||||
+void
|
||||
+foo (void)
|
||||
+{
|
||||
+ float cf = 3.0f;
|
||||
+ _Decimal64 d64 = cf;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
From d4d74232bca4968da87cd8157cc2d6139115946e Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 09:24:53 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* printf/printf_fp.c (__quadmath_printf_fp): Use memcpy instead of
|
||||
mempcpy.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171550 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 4a63be9..eb66372 100644
|
||||
--- a/libquadmath/printf/printf_fp.c
|
||||
+++ b/libquadmath/printf/printf_fp.c
|
||||
@@ -1197,7 +1197,7 @@ __quadmath_printf_fp (struct __quadmath_printf_file *fp,
|
||||
if (*copywc == decimalwc)
|
||||
memcpy (cp, decimal, decimal_len), cp += decimal_len;
|
||||
else if (*copywc == thousands_sepwc)
|
||||
- mempcpy (cp, thousands_sep, thousands_sep_len), cp += thousands_sep_len;
|
||||
+ memcpy (cp, thousands_sep, thousands_sep_len), cp += thousands_sep_len;
|
||||
else
|
||||
*cp++ = (char) *copywc;
|
||||
}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
From 6bb9234e718d4b75a9a1e63d523d08c3392ba55f Mon Sep 17 00:00:00 2001
|
||||
From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 10:02:34 +0000
|
||||
Subject: [PATCH] 2011-03-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/bits/random.h (negative_binomial_distribution<>::
|
||||
negative_binomial_distribution(_IntType, double),
|
||||
negative_binomial_distribution<>::
|
||||
negative_binomial_distribution(const param_type&)): Fix thinko
|
||||
p / (1 - p) for (1 - p) / p.
|
||||
* include/bits/random.tcc (negative_binomial_distribution<>::
|
||||
operator()): Fix.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171553 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 26cec8a..988ee61 100644
|
||||
--- a/libstdc++-v3/include/bits/random.h
|
||||
+++ b/libstdc++-v3/include/bits/random.h
|
||||
@@ -3782,7 +3782,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
explicit
|
||||
param_type(_IntType __k = 1, double __p = 0.5)
|
||||
: _M_k(__k), _M_p(__p)
|
||||
- { }
|
||||
+ {
|
||||
+ _GLIBCXX_DEBUG_ASSERT((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0));
|
||||
+ }
|
||||
|
||||
_IntType
|
||||
k() const
|
||||
@@ -3803,12 +3805,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
explicit
|
||||
negative_binomial_distribution(_IntType __k = 1, double __p = 0.5)
|
||||
- : _M_param(__k, __p), _M_gd(__k, __p / (1.0 - __p))
|
||||
+ : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p)
|
||||
{ }
|
||||
|
||||
explicit
|
||||
negative_binomial_distribution(const param_type& __p)
|
||||
- : _M_param(__p), _M_gd(__p.k(), __p.p() / (1.0 - __p.p()))
|
||||
+ : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p())
|
||||
{ }
|
||||
|
||||
/**
|
||||
diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
|
||||
index 4b17e91..e81392f 100644
|
||||
--- a/libstdc++-v3/include/bits/random.tcc
|
||||
+++ b/libstdc++-v3/include/bits/random.tcc
|
||||
@@ -1100,7 +1100,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
param_type;
|
||||
|
||||
const double __y =
|
||||
- _M_gd(__urng, param_type(__p.k(), __p.p() / (1.0 - __p.p())));
|
||||
+ _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p()));
|
||||
|
||||
std::poisson_distribution<result_type> __poisson(__y);
|
||||
return __poisson(__urng);
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,226 +0,0 @@
|
|||
From 8c9cc2d03061ea065b70695ef4903a0390c01fb8 Mon Sep 17 00:00:00 2001
|
||||
From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 26 Mar 2011 18:41:02 +0000
|
||||
Subject: [PATCH] Backport from mainline:
|
||||
2011-03-24 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/48237
|
||||
* config/i386/i386.md (*movdf_internal_rex64): Do not split
|
||||
alternatives that can be handled with movq or movabsq insn.
|
||||
(*movdf_internal): Disable for !TARGET_64BIT.
|
||||
(*movdf_internal_nointeger): Ditto.
|
||||
* config/i386/i386.c (ix86_print_operand): Handle DFmode immediates.
|
||||
|
||||
testsuite/ChangeLog:
|
||||
|
||||
Backport from mainline:
|
||||
2011-03-24 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/48237
|
||||
* gcc.target/i386/pr48237.c: New test.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171560 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index 82d999b..4fb654f 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -14389,17 +14389,21 @@ ix86_print_operand (FILE *file, rtx x, int code)
|
||||
fprintf (file, "0x%08x", (unsigned int) l);
|
||||
}
|
||||
|
||||
- /* These float cases don't actually occur as immediate operands. */
|
||||
else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == DFmode)
|
||||
{
|
||||
- char dstr[30];
|
||||
+ REAL_VALUE_TYPE r;
|
||||
+ long l[2];
|
||||
|
||||
- real_to_decimal (dstr, CONST_DOUBLE_REAL_VALUE (x), sizeof (dstr), 0, 1);
|
||||
- fputs (dstr, file);
|
||||
+ REAL_VALUE_FROM_CONST_DOUBLE (r, x);
|
||||
+ REAL_VALUE_TO_TARGET_DOUBLE (r, l);
|
||||
+
|
||||
+ if (ASSEMBLER_DIALECT == ASM_ATT)
|
||||
+ putc ('$', file);
|
||||
+ fprintf (file, "0x%lx%08lx", l[1] & 0xffffffff, l[0] & 0xffffffff);
|
||||
}
|
||||
|
||||
- else if (GET_CODE (x) == CONST_DOUBLE
|
||||
- && GET_MODE (x) == XFmode)
|
||||
+ /* These float cases don't actually occur as immediate operands. */
|
||||
+ else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == XFmode)
|
||||
{
|
||||
char dstr[30];
|
||||
|
||||
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
|
||||
index a17ab7a..b50a52a 100644
|
||||
--- a/gcc/config/i386/i386.md
|
||||
+++ b/gcc/config/i386/i386.md
|
||||
@@ -2906,9 +2906,9 @@
|
||||
|
||||
(define_insn "*movdf_internal_rex64"
|
||||
[(set (match_operand:DF 0 "nonimmediate_operand"
|
||||
- "=f,m,f,r ,m ,Y2*x,Y2*x,Y2*x,m ,Yi,r ")
|
||||
+ "=f,m,f,r ,m,!r,!m,Y2*x,Y2*x,Y2*x,m ,Yi,r ")
|
||||
(match_operand:DF 1 "general_operand"
|
||||
- "fm,f,G,rmF,Fr,C ,Y2*x,m ,Y2*x,r ,Yi"))]
|
||||
+ "fm,f,G,rm,r,F ,F ,C ,Y2*x,m ,Y2*x,r ,Yi"))]
|
||||
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
@@ -2929,9 +2929,15 @@
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
- return "#";
|
||||
+ return "mov{q}\t{%1, %0|%0, %1}";
|
||||
|
||||
case 5:
|
||||
+ return "movabs{q}\t{%1, %0|%0, %1}";
|
||||
+
|
||||
+ case 6:
|
||||
+ return "#";
|
||||
+
|
||||
+ case 7:
|
||||
switch (get_attr_mode (insn))
|
||||
{
|
||||
case MODE_V4SF:
|
||||
@@ -2949,9 +2955,9 @@
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
- case 6:
|
||||
- case 7:
|
||||
case 8:
|
||||
+ case 9:
|
||||
+ case 10:
|
||||
switch (get_attr_mode (insn))
|
||||
{
|
||||
case MODE_V4SF:
|
||||
@@ -2986,17 +2992,27 @@
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
- case 9:
|
||||
- case 10:
|
||||
+ case 11:
|
||||
+ case 12:
|
||||
return "%vmovd\t{%1, %0|%0, %1}";
|
||||
|
||||
default:
|
||||
gcc_unreachable();
|
||||
}
|
||||
}
|
||||
- [(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov,ssemov,ssemov")
|
||||
+ [(set_attr "type" "fmov,fmov,fmov,imov,imov,imov,multi,sselog1,ssemov,ssemov,ssemov,ssemov,ssemov")
|
||||
+ (set (attr "modrm")
|
||||
+ (if_then_else
|
||||
+ (and (eq_attr "alternative" "5") (eq_attr "type" "imov"))
|
||||
+ (const_string "0")
|
||||
+ (const_string "*")))
|
||||
+ (set (attr "length_immediate")
|
||||
+ (if_then_else
|
||||
+ (and (eq_attr "alternative" "5") (eq_attr "type" "imov"))
|
||||
+ (const_string "8")
|
||||
+ (const_string "*")))
|
||||
(set (attr "prefix")
|
||||
- (if_then_else (eq_attr "alternative" "0,1,2,3,4")
|
||||
+ (if_then_else (eq_attr "alternative" "0,1,2,3,4,5,6")
|
||||
(const_string "orig")
|
||||
(const_string "maybe_vex")))
|
||||
(set (attr "prefix_data16")
|
||||
@@ -3006,18 +3022,18 @@
|
||||
(set (attr "mode")
|
||||
(cond [(eq_attr "alternative" "0,1,2")
|
||||
(const_string "DF")
|
||||
- (eq_attr "alternative" "3,4,9,10")
|
||||
+ (eq_attr "alternative" "3,4,5,6,11,12")
|
||||
(const_string "DI")
|
||||
|
||||
/* For SSE1, we have many fewer alternatives. */
|
||||
(eq (symbol_ref "TARGET_SSE2") (const_int 0))
|
||||
- (cond [(eq_attr "alternative" "5,6")
|
||||
+ (cond [(eq_attr "alternative" "7,8")
|
||||
(const_string "V4SF")
|
||||
]
|
||||
(const_string "V2SF"))
|
||||
|
||||
/* xorps is one byte shorter. */
|
||||
- (eq_attr "alternative" "5")
|
||||
+ (eq_attr "alternative" "7")
|
||||
(cond [(ne (symbol_ref "optimize_function_for_size_p (cfun)")
|
||||
(const_int 0))
|
||||
(const_string "V4SF")
|
||||
@@ -3032,7 +3048,7 @@
|
||||
chains, otherwise use short move to avoid extra work.
|
||||
|
||||
movaps encodes one byte shorter. */
|
||||
- (eq_attr "alternative" "6")
|
||||
+ (eq_attr "alternative" "8")
|
||||
(cond
|
||||
[(ne (symbol_ref "optimize_function_for_size_p (cfun)")
|
||||
(const_int 0))
|
||||
@@ -3045,7 +3061,7 @@
|
||||
/* For architectures resolving dependencies on register
|
||||
parts we may avoid extra work to zero out upper part
|
||||
of register. */
|
||||
- (eq_attr "alternative" "7")
|
||||
+ (eq_attr "alternative" "9")
|
||||
(if_then_else
|
||||
(ne (symbol_ref "TARGET_SSE_SPLIT_REGS")
|
||||
(const_int 0))
|
||||
@@ -3059,7 +3075,7 @@
|
||||
"=f,m,f,r ,o ,Y2*x,Y2*x,Y2*x,m ")
|
||||
(match_operand:DF 1 "general_operand"
|
||||
"fm,f,G,roF,Fr,C ,Y2*x,m ,Y2*x"))]
|
||||
- "!(MEM_P (operands[0]) && MEM_P (operands[1]))
|
||||
+ "!TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))
|
||||
&& optimize_function_for_speed_p (cfun)
|
||||
&& TARGET_INTEGER_DFMODE_MOVES
|
||||
&& (reload_in_progress || reload_completed
|
||||
@@ -3199,9 +3215,9 @@
|
||||
"=f,m,f,*r ,o ,Y2*x,Y2*x,Y2*x ,m ")
|
||||
(match_operand:DF 1 "general_operand"
|
||||
"fm,f,G,*roF,*Fr,C ,Y2*x,mY2*x,Y2*x"))]
|
||||
- "!(MEM_P (operands[0]) && MEM_P (operands[1]))
|
||||
- && ((optimize_function_for_size_p (cfun)
|
||||
- || !TARGET_INTEGER_DFMODE_MOVES) && !TARGET_64BIT)
|
||||
+ "!TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))
|
||||
+ && (optimize_function_for_size_p (cfun)
|
||||
+ || !TARGET_INTEGER_DFMODE_MOVES)
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
|| (!(TARGET_SSE2 && TARGET_SSE_MATH)
|
||||
new file mode 100644
|
||||
index 0000000..e20446e
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr48237.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O -fcaller-saves -fschedule-insns2 -fselective-scheduling2 -mtune=core2" } */
|
||||
+
|
||||
+union double_union
|
||||
+{
|
||||
+ double d;
|
||||
+ int i[2];
|
||||
+};
|
||||
+
|
||||
+void bar (int, ...);
|
||||
+
|
||||
+void
|
||||
+foo (double d)
|
||||
+{
|
||||
+ union double_union du = { d };
|
||||
+ while (1)
|
||||
+ {
|
||||
+ du.i[1] -= 0x100000L;
|
||||
+ bar (0, du.d);
|
||||
+ du.d += d;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,312 +0,0 @@
|
|||
From e2965db317ee7efd916963c87b9c34023eefda54 Mon Sep 17 00:00:00 2001
|
||||
From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sun, 27 Mar 2011 20:08:35 +0000
|
||||
Subject: [PATCH] 2011-03-27 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR other/48179
|
||||
PR other/48221
|
||||
PR other/48234
|
||||
* doc/extend.texi (Alignment): Move section to match order in TOC.
|
||||
* doc/invoke.texi (i386 and x86-64 Windows Options): Likewise.
|
||||
(Warning Options): Adjust -Wno-cpp summary and remove stray backslash.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171581 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index c897101..998d703 100644
|
||||
--- a/gcc/doc/extend.texi
|
||||
+++ b/gcc/doc/extend.texi
|
||||
@@ -4180,42 +4180,6 @@ machines, typically because the target assembler does not allow them.
|
||||
You can use the sequence @samp{\e} in a string or character constant to
|
||||
stand for the ASCII character @key{ESC}.
|
||||
|
||||
-@node Alignment
|
||||
-@section Inquiring on Alignment of Types or Variables
|
||||
-@cindex alignment
|
||||
-@cindex type alignment
|
||||
-@cindex variable alignment
|
||||
-
|
||||
-The keyword @code{__alignof__} allows you to inquire about how an object
|
||||
-is aligned, or the minimum alignment usually required by a type. Its
|
||||
-syntax is just like @code{sizeof}.
|
||||
-
|
||||
-For example, if the target machine requires a @code{double} value to be
|
||||
-aligned on an 8-byte boundary, then @code{__alignof__ (double)} is 8.
|
||||
-This is true on many RISC machines. On more traditional machine
|
||||
-designs, @code{__alignof__ (double)} is 4 or even 2.
|
||||
-
|
||||
-Some machines never actually require alignment; they allow reference to any
|
||||
-data type even at an odd address. For these machines, @code{__alignof__}
|
||||
-reports the smallest alignment that GCC will give the data type, usually as
|
||||
-mandated by the target ABI.
|
||||
-
|
||||
-If the operand of @code{__alignof__} is an lvalue rather than a type,
|
||||
-its value is the required alignment for its type, taking into account
|
||||
-any minimum alignment specified with GCC's @code{__attribute__}
|
||||
-extension (@pxref{Variable Attributes}). For example, after this
|
||||
-declaration:
|
||||
-
|
||||
-@smallexample
|
||||
-struct foo @{ int x; char y; @} foo1;
|
||||
-@end smallexample
|
||||
-
|
||||
-@noindent
|
||||
-the value of @code{__alignof__ (foo1.y)} is 1, even though its actual
|
||||
-alignment is probably 2 or 4, the same as @code{__alignof__ (int)}.
|
||||
-
|
||||
-It is an error to ask for the alignment of an incomplete type.
|
||||
-
|
||||
@node Variable Attributes
|
||||
@section Specifying Attributes of Variables
|
||||
@cindex attribute of variables
|
||||
@@ -5224,6 +5188,42 @@ allows one to declare vector data types supported by the Sony/Toshiba/IBM SPU
|
||||
Language Extensions Specification. It is intended to support the
|
||||
@code{__vector} keyword.
|
||||
|
||||
+@node Alignment
|
||||
+@section Inquiring on Alignment of Types or Variables
|
||||
+@cindex alignment
|
||||
+@cindex type alignment
|
||||
+@cindex variable alignment
|
||||
+
|
||||
+The keyword @code{__alignof__} allows you to inquire about how an object
|
||||
+is aligned, or the minimum alignment usually required by a type. Its
|
||||
+syntax is just like @code{sizeof}.
|
||||
+
|
||||
+For example, if the target machine requires a @code{double} value to be
|
||||
+aligned on an 8-byte boundary, then @code{__alignof__ (double)} is 8.
|
||||
+This is true on many RISC machines. On more traditional machine
|
||||
+designs, @code{__alignof__ (double)} is 4 or even 2.
|
||||
+
|
||||
+Some machines never actually require alignment; they allow reference to any
|
||||
+data type even at an odd address. For these machines, @code{__alignof__}
|
||||
+reports the smallest alignment that GCC will give the data type, usually as
|
||||
+mandated by the target ABI.
|
||||
+
|
||||
+If the operand of @code{__alignof__} is an lvalue rather than a type,
|
||||
+its value is the required alignment for its type, taking into account
|
||||
+any minimum alignment specified with GCC's @code{__attribute__}
|
||||
+extension (@pxref{Variable Attributes}). For example, after this
|
||||
+declaration:
|
||||
+
|
||||
+@smallexample
|
||||
+struct foo @{ int x; char y; @} foo1;
|
||||
+@end smallexample
|
||||
+
|
||||
+@noindent
|
||||
+the value of @code{__alignof__ (foo1.y)} is 1, even though its actual
|
||||
+alignment is probably 2 or 4, the same as @code{__alignof__ (int)}.
|
||||
+
|
||||
+It is an error to ask for the alignment of an incomplete type.
|
||||
+
|
||||
|
||||
@node Inline
|
||||
@section An Inline Function is As Fast As a Macro
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index f4cdf66..5478f79 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -237,7 +237,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wno-attributes -Wno-builtin-macro-redefined @gol
|
||||
-Wc++-compat -Wc++0x-compat -Wcast-align -Wcast-qual @gol
|
||||
-Wchar-subscripts -Wclobbered -Wcomment @gol
|
||||
--Wconversion -Wcoverage-mismatch -Wcpp -Wno-deprecated @gol
|
||||
+-Wconversion -Wcoverage-mismatch -Wno-cpp -Wno-deprecated @gol
|
||||
-Wno-deprecated-declarations -Wdisabled-optimization @gol
|
||||
-Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare @gol
|
||||
-Wno-endif-labels -Werror -Werror=* @gol
|
||||
@@ -613,6 +613,11 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-m32 -m64 -mlarge-data-threshold=@var{num} @gol
|
||||
-msse2avx -mfentry -m8bit-idiv}
|
||||
|
||||
+@emph{i386 and x86-64 Windows Options}
|
||||
+@gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll
|
||||
+-mnop-fun-dllimport -mthread @gol
|
||||
+-municode -mwin32 -mwindows -fno-set-stack-executable}
|
||||
+
|
||||
@emph{IA-64 Options}
|
||||
@gccoptlist{-mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic @gol
|
||||
-mvolatile-asm-stop -mregister-names -msdata -mno-sdata @gol
|
||||
@@ -906,11 +911,6 @@ See RS/6000 and PowerPC Options.
|
||||
@emph{x86-64 Options}
|
||||
See i386 and x86-64 Options.
|
||||
|
||||
-@emph{i386 and x86-64 Windows Options}
|
||||
-@gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll
|
||||
--mnop-fun-dllimport -mthread @gol
|
||||
--municode -mwin32 -mwindows -fno-set-stack-executable}
|
||||
-
|
||||
@emph{Xstormy16 Options}
|
||||
@gccoptlist{-msim}
|
||||
|
||||
@@ -3045,7 +3045,7 @@ Warn whenever a comment-start sequence @samp{/*} appears in a @samp{/*}
|
||||
comment, or whenever a Backslash-Newline appears in a @samp{//} comment.
|
||||
This warning is enabled by @option{-Wall}.
|
||||
|
||||
-@item -Wno-cpp \
|
||||
+@item -Wno-cpp
|
||||
@r{(C, Objective-C, C++, Objective-C++ and Fortran only)}
|
||||
|
||||
Suppress warning messages emitted by @code{#warning} directives.
|
||||
@@ -12815,6 +12815,78 @@ Generate code for the large model: This model makes no assumptions
|
||||
about addresses and sizes of sections.
|
||||
@end table
|
||||
|
||||
+@node i386 and x86-64 Windows Options
|
||||
+@subsection i386 and x86-64 Windows Options
|
||||
+@cindex i386 and x86-64 Windows Options
|
||||
+
|
||||
+These additional options are available for Windows targets:
|
||||
+
|
||||
+@table @gcctabopt
|
||||
+@item -mconsole
|
||||
+@opindex mconsole
|
||||
+This option is available for Cygwin and MinGW targets. It
|
||||
+specifies that a console application is to be generated, by
|
||||
+instructing the linker to set the PE header subsystem type
|
||||
+required for console applications.
|
||||
+This is the default behavior for Cygwin and MinGW targets.
|
||||
+
|
||||
+@item -mdll
|
||||
+@opindex mdll
|
||||
+This option is available for Cygwin and MinGW targets. It
|
||||
+specifies that a DLL - a dynamic link library - is to be
|
||||
+generated, enabling the selection of the required runtime
|
||||
+startup object and entry point.
|
||||
+
|
||||
+@item -mnop-fun-dllimport
|
||||
+@opindex mnop-fun-dllimport
|
||||
+This option is available for Cygwin and MinGW targets. It
|
||||
+specifies that the dllimport attribute should be ignored.
|
||||
+
|
||||
+@item -mthread
|
||||
+@opindex mthread
|
||||
+This option is available for MinGW targets. It specifies
|
||||
+that MinGW-specific thread support is to be used.
|
||||
+
|
||||
+@item -municode
|
||||
+@opindex municode
|
||||
+This option is available for mingw-w64 targets. It specifies
|
||||
+that the UNICODE macro is getting pre-defined and that the
|
||||
+unicode capable runtime startup code is chosen.
|
||||
+
|
||||
+@item -mwin32
|
||||
+@opindex mwin32
|
||||
+This option is available for Cygwin and MinGW targets. It
|
||||
+specifies that the typical Windows pre-defined macros are to
|
||||
+be set in the pre-processor, but does not influence the choice
|
||||
+of runtime library/startup code.
|
||||
+
|
||||
+@item -mwindows
|
||||
+@opindex mwindows
|
||||
+This option is available for Cygwin and MinGW targets. It
|
||||
+specifies that a GUI application is to be generated by
|
||||
+instructing the linker to set the PE header subsystem type
|
||||
+appropriately.
|
||||
+
|
||||
+@item -fno-set-stack-executable
|
||||
+@opindex fno-set-stack-executable
|
||||
+This option is available for MinGW targets. It specifies that
|
||||
+the executable flag for stack used by nested functions isn't
|
||||
+set. This is necessary for binaries running in kernel mode of
|
||||
+Windows, as there the user32 API, which is used to set executable
|
||||
+privileges, isn't available.
|
||||
+
|
||||
+@item -mpe-aligned-commons
|
||||
+@opindex mpe-aligned-commons
|
||||
+This option is available for Cygwin and MinGW targets. It
|
||||
+specifies that the GNU extension to the PE file format that
|
||||
+permits the correct alignment of COMMON variables should be
|
||||
+used when generating code. It will be enabled by default if
|
||||
+GCC detects that the target assembler found during configuration
|
||||
+supports the feature.
|
||||
+@end table
|
||||
+
|
||||
+See also under @ref{i386 and x86-64 Options} for standard options.
|
||||
+
|
||||
@node IA-64 Options
|
||||
@subsection IA-64 Options
|
||||
@cindex IA-64 Options
|
||||
@@ -17541,78 +17613,6 @@ is defined for compatibility with Diab.
|
||||
|
||||
These are listed under @xref{i386 and x86-64 Options}.
|
||||
|
||||
-@node i386 and x86-64 Windows Options
|
||||
-@subsection i386 and x86-64 Windows Options
|
||||
-@cindex i386 and x86-64 Windows Options
|
||||
-
|
||||
-These additional options are available for Windows targets:
|
||||
-
|
||||
-@table @gcctabopt
|
||||
-@item -mconsole
|
||||
-@opindex mconsole
|
||||
-This option is available for Cygwin and MinGW targets. It
|
||||
-specifies that a console application is to be generated, by
|
||||
-instructing the linker to set the PE header subsystem type
|
||||
-required for console applications.
|
||||
-This is the default behavior for Cygwin and MinGW targets.
|
||||
-
|
||||
-@item -mdll
|
||||
-@opindex mdll
|
||||
-This option is available for Cygwin and MinGW targets. It
|
||||
-specifies that a DLL - a dynamic link library - is to be
|
||||
-generated, enabling the selection of the required runtime
|
||||
-startup object and entry point.
|
||||
-
|
||||
-@item -mnop-fun-dllimport
|
||||
-@opindex mnop-fun-dllimport
|
||||
-This option is available for Cygwin and MinGW targets. It
|
||||
-specifies that the dllimport attribute should be ignored.
|
||||
-
|
||||
-@item -mthread
|
||||
-@opindex mthread
|
||||
-This option is available for MinGW targets. It specifies
|
||||
-that MinGW-specific thread support is to be used.
|
||||
-
|
||||
-@item -municode
|
||||
-@opindex municode
|
||||
-This option is available for mingw-w64 targets. It specifies
|
||||
-that the UNICODE macro is getting pre-defined and that the
|
||||
-unicode capable runtime startup code is chosen.
|
||||
-
|
||||
-@item -mwin32
|
||||
-@opindex mwin32
|
||||
-This option is available for Cygwin and MinGW targets. It
|
||||
-specifies that the typical Windows pre-defined macros are to
|
||||
-be set in the pre-processor, but does not influence the choice
|
||||
-of runtime library/startup code.
|
||||
-
|
||||
-@item -mwindows
|
||||
-@opindex mwindows
|
||||
-This option is available for Cygwin and MinGW targets. It
|
||||
-specifies that a GUI application is to be generated by
|
||||
-instructing the linker to set the PE header subsystem type
|
||||
-appropriately.
|
||||
-
|
||||
-@item -fno-set-stack-executable
|
||||
-@opindex fno-set-stack-executable
|
||||
-This option is available for MinGW targets. It specifies that
|
||||
-the executable flag for stack used by nested functions isn't
|
||||
-set. This is necessary for binaries running in kernel mode of
|
||||
-Windows, as there the user32 API, which is used to set executable
|
||||
-privileges, isn't available.
|
||||
-
|
||||
-@item -mpe-aligned-commons
|
||||
-@opindex mpe-aligned-commons
|
||||
-This option is available for Cygwin and MinGW targets. It
|
||||
-specifies that the GNU extension to the PE file format that
|
||||
-permits the correct alignment of COMMON variables should be
|
||||
-used when generating code. It will be enabled by default if
|
||||
-GCC detects that the target assembler found during configuration
|
||||
-supports the feature.
|
||||
-@end table
|
||||
-
|
||||
-See also under @ref{i386 and x86-64 Options} for standard options.
|
||||
-
|
||||
@node Xstormy16 Options
|
||||
@subsection Xstormy16 Options
|
||||
@cindex Xstormy16 Options
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,246 +0,0 @@
|
|||
From 2631216d2fedc5339a5edcac64db1ab5d9269498 Mon Sep 17 00:00:00 2001
|
||||
From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 28 Mar 2011 10:14:34 +0000
|
||||
Subject: [PATCH] 2011-03-28 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Backport from mainline
|
||||
2011-03-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/48269
|
||||
* tree-object-size.c (addr_object_size): Do not double-account
|
||||
for MEM_REF offsets.
|
||||
|
||||
* gcc.dg/builtin-object-size-10.c: New testcase.
|
||||
|
||||
2011-03-22 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/48228
|
||||
* tree-vrp.c (vrp_visit_phi_node): Do not stop propagating
|
||||
for single-arg PHIs.
|
||||
|
||||
* gcc.dg/Wstrict-overflow-23.c: New testcase.
|
||||
|
||||
2011-03-17 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/48134
|
||||
* tree-ssa.c (insert_debug_temp_for_var_def): If we propagated
|
||||
a value make sure to fold the statement.
|
||||
|
||||
* gcc.dg/pr48134.c: New testcase.
|
||||
|
||||
2011-03-15 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/48031
|
||||
* fold-const.c (fold_indirect_ref_1): Do not create new variable-sized
|
||||
or variable-indexed array accesses when in gimple form.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171595 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 957049c..9a2f31f 100644
|
||||
--- a/gcc/fold-const.c
|
||||
+++ b/gcc/fold-const.c
|
||||
@@ -15554,12 +15554,17 @@ fold_indirect_ref_1 (location_t loc, tree type, tree op0)
|
||||
}
|
||||
/* *(foo *)&fooarray => fooarray[0] */
|
||||
else if (TREE_CODE (optype) == ARRAY_TYPE
|
||||
- && type == TREE_TYPE (optype))
|
||||
+ && type == TREE_TYPE (optype)
|
||||
+ && (!in_gimple_form
|
||||
+ || TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST))
|
||||
{
|
||||
tree type_domain = TYPE_DOMAIN (optype);
|
||||
tree min_val = size_zero_node;
|
||||
if (type_domain && TYPE_MIN_VALUE (type_domain))
|
||||
min_val = TYPE_MIN_VALUE (type_domain);
|
||||
+ if (in_gimple_form
|
||||
+ && TREE_CODE (min_val) != INTEGER_CST)
|
||||
+ return NULL_TREE;
|
||||
return build4_loc (loc, ARRAY_REF, type, op, min_val,
|
||||
NULL_TREE, NULL_TREE);
|
||||
}
|
||||
@@ -15633,7 +15638,9 @@ fold_indirect_ref_1 (location_t loc, tree type, tree op0)
|
||||
|
||||
/* *(foo *)fooarrptr => (*fooarrptr)[0] */
|
||||
if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE
|
||||
- && type == TREE_TYPE (TREE_TYPE (subtype)))
|
||||
+ && type == TREE_TYPE (TREE_TYPE (subtype))
|
||||
+ && (!in_gimple_form
|
||||
+ || TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST))
|
||||
{
|
||||
tree type_domain;
|
||||
tree min_val = size_zero_node;
|
||||
@@ -15641,6 +15648,9 @@ fold_indirect_ref_1 (location_t loc, tree type, tree op0)
|
||||
type_domain = TYPE_DOMAIN (TREE_TYPE (sub));
|
||||
if (type_domain && TYPE_MIN_VALUE (type_domain))
|
||||
min_val = TYPE_MIN_VALUE (type_domain);
|
||||
+ if (in_gimple_form
|
||||
+ && TREE_CODE (min_val) != INTEGER_CST)
|
||||
+ return NULL_TREE;
|
||||
return build4_loc (loc, ARRAY_REF, type, sub, min_val, NULL_TREE,
|
||||
NULL_TREE);
|
||||
}
|
||||
new file mode 100644
|
||||
index 0000000..16014bb
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -Wstrict-overflow" } */
|
||||
+
|
||||
+unsigned int
|
||||
+do_scrolling (unsigned int window_size, unsigned int writecost)
|
||||
+{
|
||||
+ unsigned int i = window_size;
|
||||
+
|
||||
+ int terminal_window_p = 0;
|
||||
+ unsigned int queue = 0;
|
||||
+
|
||||
+ for (i = window_size; i; i--)
|
||||
+ {
|
||||
+ if (writecost < i)
|
||||
+ ++queue;
|
||||
+ else if (writecost & 1)
|
||||
+ terminal_window_p = 1;
|
||||
+ }
|
||||
+
|
||||
+ if (queue > 0)
|
||||
+ {
|
||||
+ if (!terminal_window_p)
|
||||
+ {
|
||||
+ terminal_window_p = 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (terminal_window_p)
|
||||
+ return 100;
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-10.c b/gcc/testsuite/gcc.dg/builtin-object-size-10.c
|
||||
new file mode 100644
|
||||
index 0000000..6c7ed45
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/builtin-object-size-10.c
|
||||
@@ -0,0 +1,26 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fdump-tree-objsz-details" } */
|
||||
+
|
||||
+typedef struct {
|
||||
+ char sentinel[4];
|
||||
+ char data[0];
|
||||
+} drone_packet;
|
||||
+typedef struct {
|
||||
+ char type_str[16];
|
||||
+ char channel_hop;
|
||||
+} drone_source_packet;
|
||||
+drone_packet *
|
||||
+foo(char *x)
|
||||
+{
|
||||
+ drone_packet *dpkt = __builtin_malloc(sizeof(drone_packet)
|
||||
+ + sizeof(drone_source_packet));
|
||||
+ drone_source_packet *spkt = (drone_source_packet *) dpkt->data;
|
||||
+ __builtin___snprintf_chk (spkt->type_str, 16,
|
||||
+ 1, __builtin_object_size (spkt->type_str, 1),
|
||||
+ "%s", x);
|
||||
+ return dpkt;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-tree-dump "maximum object size 21" "objsz" } } */
|
||||
+/* { dg-final { scan-tree-dump "maximum subobject size 16" "objsz" } } */
|
||||
+/* { dg-final { cleanup-tree-dump "objsz" } } */
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48134.c b/gcc/testsuite/gcc.dg/pr48134.c
|
||||
new file mode 100644
|
||||
index 0000000..8dc5a6d
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48134.c
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fstack-check=specific -fno-tree-dse -fno-tree-fre -fno-tree-loop-optimize -g" } */
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ int w, z;
|
||||
+};
|
||||
+struct T
|
||||
+{
|
||||
+ struct S s;
|
||||
+};
|
||||
+
|
||||
+int i;
|
||||
+
|
||||
+static inline struct S
|
||||
+bar (struct S x)
|
||||
+{
|
||||
+ i++;
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+foo (struct T t, struct S s)
|
||||
+{
|
||||
+ struct S *c = &s;
|
||||
+ if (i)
|
||||
+ c = &t.s;
|
||||
+ t.s.w = 3;
|
||||
+ s = bar (*c);
|
||||
+ return t.s.w;
|
||||
+}
|
||||
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
|
||||
index 6a74d19..043b445 100644
|
||||
--- a/gcc/tree-object-size.c
|
||||
+++ b/gcc/tree-object-size.c
|
||||
@@ -348,8 +348,6 @@ addr_object_size (struct object_size_info *osi, const_tree ptr,
|
||||
tree bytes2 = compute_object_offset (TREE_OPERAND (ptr, 0), pt_var);
|
||||
if (bytes2 != error_mark_node)
|
||||
{
|
||||
- bytes2 = size_binop (PLUS_EXPR, bytes2,
|
||||
- TREE_OPERAND (pt_var, 1));
|
||||
if (TREE_CODE (bytes2) == INTEGER_CST
|
||||
&& tree_int_cst_lt (pt_var_size, bytes2))
|
||||
bytes2 = size_zero_node;
|
||||
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
|
||||
index 5c9e0d8..eaf3ef9 100644
|
||||
--- a/gcc/tree-ssa.c
|
||||
+++ b/gcc/tree-ssa.c
|
||||
@@ -455,13 +455,19 @@ insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var)
|
||||
continue;
|
||||
|
||||
if (value)
|
||||
- FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
|
||||
- /* unshare_expr is not needed here. vexpr is either a
|
||||
- SINGLE_RHS, that can be safely shared, some other RHS
|
||||
- that was unshared when we found it had a single debug
|
||||
- use, or a DEBUG_EXPR_DECL, that can be safely
|
||||
- shared. */
|
||||
- SET_USE (use_p, value);
|
||||
+ {
|
||||
+ FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
|
||||
+ /* unshare_expr is not needed here. vexpr is either a
|
||||
+ SINGLE_RHS, that can be safely shared, some other RHS
|
||||
+ that was unshared when we found it had a single debug
|
||||
+ use, or a DEBUG_EXPR_DECL, that can be safely
|
||||
+ shared. */
|
||||
+ SET_USE (use_p, value);
|
||||
+ /* If we didn't replace uses with a debug decl fold the
|
||||
+ resulting expression. Otherwise we end up with invalid IL. */
|
||||
+ if (TREE_CODE (value) != DEBUG_EXPR_DECL)
|
||||
+ fold_stmt_inplace (stmt);
|
||||
+ }
|
||||
else
|
||||
gimple_debug_bind_reset_value (stmt);
|
||||
|
||||
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
|
||||
index 65d249f..280e6da 100644
|
||||
--- a/gcc/tree-vrp.c
|
||||
+++ b/gcc/tree-vrp.c
|
||||
@@ -6619,6 +6619,7 @@ vrp_visit_phi_node (gimple phi)
|
||||
edge; this helps us avoid an overflow infinity for conditionals
|
||||
which are not in a loop. */
|
||||
if (edges > 0
|
||||
+ && gimple_phi_num_args (phi) > 1
|
||||
&& edges == old_edges)
|
||||
{
|
||||
int cmp_min = compare_values (lhs_vr->min, vr_result.min);
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
From 2fe380ffa4f1ca0fba1e4915df127992eb977569 Mon Sep 17 00:00:00 2001
|
||||
From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 28 Mar 2011 10:22:57 +0000
|
||||
Subject: [PATCH] gcc/
|
||||
PR target/47553
|
||||
* config/arm/predicates.md (neon_lane_number): Accept 0..15.
|
||||
|
||||
gcc/testsuite/
|
||||
PR target/47553
|
||||
* gcc.target/arm/neon-vld-1.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171596 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 399938f..40ce1f3 100644
|
||||
--- a/gcc/config/arm/predicates.md
|
||||
+++ b/gcc/config/arm/predicates.md
|
||||
@@ -610,7 +610,7 @@
|
||||
;; TODO: We could check lane numbers more precisely based on the mode.
|
||||
(define_predicate "neon_lane_number"
|
||||
(and (match_code "const_int")
|
||||
- (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 7")))
|
||||
+ (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 15")))
|
||||
;; Predicates for named expanders that overlap multiple ISAs.
|
||||
|
||||
(define_predicate "cmpdi_operand"
|
||||
new file mode 100644
|
||||
index 0000000..f6bf691
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/arm/neon-vld-1.c
|
||||
@@ -0,0 +1,13 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-require-effective-target arm_neon_ok } */
|
||||
+/* { dg-options "-O1" } */
|
||||
+/* { dg-add-options arm_neon } */
|
||||
+
|
||||
+#include <arm_neon.h>
|
||||
+
|
||||
+uint8x16_t
|
||||
+foo (uint8_t *a, uint8x16_t b)
|
||||
+{
|
||||
+ vst1q_lane_u8 (a, b, 14);
|
||||
+ return vld1q_lane_u8 (a + 0x100, b, 15);
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
From c471cbe03c049ed4a97708936342e4dd28606d22 Mon Sep 17 00:00:00 2001
|
||||
From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 28 Mar 2011 16:46:27 +0000
|
||||
Subject: [PATCH] Backport from mainline:
|
||||
2011-03-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
PR testsuite/48251
|
||||
* g++.dg/guality/guality.exp: Disable on alpha*-dec-osf*.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171616 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 9a17850..749691d 100644
|
||||
--- a/gcc/testsuite/g++.dg/guality/guality.exp
|
||||
+++ b/gcc/testsuite/g++.dg/guality/guality.exp
|
||||
@@ -4,7 +4,8 @@ load_lib g++-dg.exp
|
||||
load_lib gcc-gdb-test.exp
|
||||
|
||||
# Disable on darwin until radr://7264615 is resolved.
|
||||
-if { [istarget *-*-darwin*] } {
|
||||
+# Disable on Tru64 UNIX (PR testsuite/48251).
|
||||
+if { [istarget *-*-darwin*] || [istarget alpha*-dec-osf*] } {
|
||||
return
|
||||
}
|
||||
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,837 +0,0 @@
|
|||
From d70e14fe2c9c3fc20d9bc1dca7cfcc3d6bb1301e Mon Sep 17 00:00:00 2001
|
||||
From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 28 Mar 2011 17:09:27 +0000
|
||||
Subject: [PATCH] libgfortran:
|
||||
backport from mainline:
|
||||
2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
PR bootstrap/48135
|
||||
* configure.ac (gfortran_use_symver): Handle --disable-symvers.
|
||||
* configure: Regenerate.
|
||||
|
||||
libgomp:
|
||||
backport from mainline:
|
||||
2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
PR bootstrap/48135
|
||||
* acinclude.m4 (enable_symvers): Handle --disable-symvers.
|
||||
* configure: Regenerate.
|
||||
|
||||
libjava:
|
||||
backport from mainline:
|
||||
2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
PR bootstrap/48135
|
||||
* configure.ac (libjava_cv_anon_version_script): Handle
|
||||
--disable-symvers.
|
||||
* configure: Regenerate.
|
||||
|
||||
libquadmath:
|
||||
backport from mainline:
|
||||
2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
PR bootstrap/48135
|
||||
* configure.ac (quadmath_use_symver): Handle --disable-symvers.
|
||||
* configure: Regenerate.
|
||||
|
||||
libssp:
|
||||
backport from mainline:
|
||||
2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
PR bootstrap/48135
|
||||
* configure.ac (ssp_use_symver): Handle --disable-symvers.
|
||||
* configure: Regenerate.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171617 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 13a079f..5a81735 100755
|
||||
--- a/libgfortran/configure
|
||||
+++ b/libgfortran/configure
|
||||
@@ -757,6 +757,7 @@ enable_intermodule
|
||||
enable_maintainer_mode
|
||||
enable_multilib
|
||||
enable_dependency_tracking
|
||||
+enable_symvers
|
||||
enable_shared
|
||||
enable_static
|
||||
with_pic
|
||||
@@ -1406,6 +1407,7 @@ Optional Features:
|
||||
--enable-multilib build many library versions (default)
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
+ --disable-symvers disable symbol versioning for libgfortran
|
||||
--enable-shared[=PKGS] build shared libraries [default=yes]
|
||||
--enable-static[=PKGS] build static libraries [default=yes]
|
||||
--enable-fast-install[=PKGS]
|
||||
@@ -5564,14 +5566,22 @@ fi
|
||||
# Check for symbol versioning (copied from libssp).
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symbol versioning is supported" >&5
|
||||
$as_echo_n "checking whether symbol versioning is supported... " >&6; }
|
||||
-save_LDFLAGS="$LDFLAGS"
|
||||
-LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
-cat > conftest.map <<EOF
|
||||
+# Check whether --enable-symvers was given.
|
||||
+if test "${enable_symvers+set}" = set; then :
|
||||
+ enableval=$enable_symvers; gfortran_use_symver=$enableval
|
||||
+else
|
||||
+ gfortran_use_symver=yes
|
||||
+fi
|
||||
+
|
||||
+if test "x$gfortran_use_symver" = xyes; then
|
||||
+ save_LDFLAGS="$LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
-if test x$gcc_no_link = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -5592,18 +5602,18 @@ else
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
-if test x$gfortran_use_symver = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
- # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
- cat > conftest.map <<EOF
|
||||
+ if test x$gfortran_use_symver = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
+ # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: foo; local: *;
|
||||
};
|
||||
EOF
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -5624,10 +5634,11 @@ else
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- ;;
|
||||
- esac
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
-LDFLAGS="$save_LDFLAGS"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gfortran_use_symver" >&5
|
||||
$as_echo "$gfortran_use_symver" >&6; }
|
||||
if test "x$gfortran_use_symver" != xno; then
|
||||
@@ -12101,7 +12112,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 12104 "configure"
|
||||
+#line 12115 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -12207,7 +12218,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 12210 "configure"
|
||||
+#line 12221 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
|
||||
index 66468db..e265ccd 100644
|
||||
--- a/libgfortran/configure.ac
|
||||
+++ b/libgfortran/configure.ac
|
||||
@@ -144,30 +144,37 @@ AC_SUBST(CFLAGS)
|
||||
|
||||
# Check for symbol versioning (copied from libssp).
|
||||
AC_MSG_CHECKING([whether symbol versioning is supported])
|
||||
-save_LDFLAGS="$LDFLAGS"
|
||||
-LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
-cat > conftest.map <<EOF
|
||||
+AC_ARG_ENABLE(symvers,
|
||||
+AS_HELP_STRING([--disable-symvers],
|
||||
+ [disable symbol versioning for libgfortran]),
|
||||
+gfortran_use_symver=$enableval,
|
||||
+gfortran_use_symver=yes)
|
||||
+if test "x$gfortran_use_symver" = xyes; then
|
||||
+ save_LDFLAGS="$LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
-AC_TRY_LINK([int foo;],[],[gfortran_use_symver=gnu],[gfortran_use_symver=no])
|
||||
-if test x$gfortran_use_symver = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
- # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
- cat > conftest.map <<EOF
|
||||
+ AC_TRY_LINK([int foo;],[],[gfortran_use_symver=gnu],[gfortran_use_symver=no])
|
||||
+ if test x$gfortran_use_symver = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
+ # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: foo; local: *;
|
||||
};
|
||||
EOF
|
||||
- AC_TRY_LINK([int foo;],[],[gfortran_use_symver=sun],[gfortran_use_symver=no])
|
||||
- ;;
|
||||
- esac
|
||||
+ AC_TRY_LINK([int foo;],[],[gfortran_use_symver=sun],[gfortran_use_symver=no])
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
-LDFLAGS="$save_LDFLAGS"
|
||||
AC_MSG_RESULT($gfortran_use_symver)
|
||||
AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" != xno])
|
||||
AM_CONDITIONAL(LIBGFOR_USE_SYMVER_GNU, [test "x$gfortran_use_symver" = xgnu])
|
||||
index eb876b9..4a4b62f 100644
|
||||
--- a/libgomp/acinclude.m4
|
||||
+++ b/libgomp/acinclude.m4
|
||||
@@ -228,20 +228,24 @@ LIBGOMP_ENABLE(symvers,yes,[=STYLE],
|
||||
# If we never went through the LIBGOMP_CHECK_LINKER_FEATURES macro, then we
|
||||
# don't know enough about $LD to do tricks...
|
||||
AC_REQUIRE([LIBGOMP_CHECK_LINKER_FEATURES])
|
||||
-# FIXME The following test is too strict, in theory.
|
||||
-if test $enable_shared = no || test "x$LD" = x; then
|
||||
- enable_symvers=no
|
||||
-else
|
||||
- if test $with_gnu_ld = yes ; then
|
||||
- enable_symvers=gnu
|
||||
+
|
||||
+# Turn a 'yes' into a suitable default.
|
||||
+if test x$enable_symvers = xyes ; then
|
||||
+ # FIXME The following test is too strict, in theory.
|
||||
+ if test $enable_shared = no || test "x$LD" = x; then
|
||||
+ enable_symvers=no
|
||||
else
|
||||
- case ${target_os} in
|
||||
- # Sun symbol versioning exists since Solaris 2.5.
|
||||
- solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
|
||||
- enable_symvers=sun ;;
|
||||
- *)
|
||||
- enable_symvers=no ;;
|
||||
- esac
|
||||
+ if test $with_gnu_ld = yes ; then
|
||||
+ enable_symvers=gnu
|
||||
+ else
|
||||
+ case ${target_os} in
|
||||
+ # Sun symbol versioning exists since Solaris 2.5.
|
||||
+ solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
|
||||
+ enable_symvers=sun ;;
|
||||
+ *)
|
||||
+ enable_symvers=no ;;
|
||||
+ esac
|
||||
+ fi
|
||||
fi
|
||||
fi
|
||||
|
||||
diff --git a/libgomp/configure b/libgomp/configure
|
||||
index 3368c0e..50dc29a 100755
|
||||
--- a/libgomp/configure
|
||||
+++ b/libgomp/configure
|
||||
@@ -15780,20 +15780,24 @@ fi
|
||||
# If we never went through the LIBGOMP_CHECK_LINKER_FEATURES macro, then we
|
||||
# don't know enough about $LD to do tricks...
|
||||
|
||||
-# FIXME The following test is too strict, in theory.
|
||||
-if test $enable_shared = no || test "x$LD" = x; then
|
||||
- enable_symvers=no
|
||||
-else
|
||||
- if test $with_gnu_ld = yes ; then
|
||||
- enable_symvers=gnu
|
||||
+
|
||||
+# Turn a 'yes' into a suitable default.
|
||||
+if test x$enable_symvers = xyes ; then
|
||||
+ # FIXME The following test is too strict, in theory.
|
||||
+ if test $enable_shared = no || test "x$LD" = x; then
|
||||
+ enable_symvers=no
|
||||
else
|
||||
- case ${target_os} in
|
||||
- # Sun symbol versioning exists since Solaris 2.5.
|
||||
- solaris2.[5-9]* | solaris2.1[0-9]*)
|
||||
- enable_symvers=sun ;;
|
||||
- *)
|
||||
- enable_symvers=no ;;
|
||||
- esac
|
||||
+ if test $with_gnu_ld = yes ; then
|
||||
+ enable_symvers=gnu
|
||||
+ else
|
||||
+ case ${target_os} in
|
||||
+ # Sun symbol versioning exists since Solaris 2.5.
|
||||
+ solaris2.[5-9]* | solaris2.1[0-9]*)
|
||||
+ enable_symvers=sun ;;
|
||||
+ *)
|
||||
+ enable_symvers=no ;;
|
||||
+ esac
|
||||
+ fi
|
||||
fi
|
||||
fi
|
||||
|
||||
index f79e53b..2a57e13 100755
|
||||
--- a/libjava/configure
|
||||
+++ b/libjava/configure
|
||||
@@ -959,6 +959,7 @@ enable_rpath
|
||||
with_libiconv_prefix
|
||||
enable_tls
|
||||
with_system_libunwind
|
||||
+enable_symvers
|
||||
with_python_dir
|
||||
enable_aot_compile_rpm
|
||||
enable_java_home
|
||||
@@ -1648,6 +1649,7 @@ Optional Features:
|
||||
--enable-java-gc=TYPE choose garbage collector (default is boehm)
|
||||
--disable-rpath do not hardcode runtime library paths
|
||||
--enable-tls Use thread-local storage [default=yes]
|
||||
+ --disable-symvers disable symbol versioning for libjava
|
||||
--enable-aot-compile-rpm
|
||||
enable installation of aot-compile-rpm [default=no]
|
||||
--enable-java-home create a standard JDK-style directory layout in the
|
||||
@@ -13344,7 +13346,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 13347 "configure"
|
||||
+#line 13349 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -13450,7 +13452,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 13453 "configure"
|
||||
+#line 13455 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -19443,7 +19445,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then :
|
||||
enableval=$enable_sjlj_exceptions; :
|
||||
else
|
||||
cat > conftest.$ac_ext << EOF
|
||||
-#line 19446 "configure"
|
||||
+#line 19448 "configure"
|
||||
struct S { ~S(); };
|
||||
void bar();
|
||||
void foo()
|
||||
@@ -24530,12 +24532,24 @@ $as_echo_n "checking whether ld supports anonymous version scripts... " >&6; }
|
||||
if test "${libjava_cv_anon_version_script+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
- save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
|
||||
- libjava_cv_anon_version_script=no
|
||||
- CFLAGS="$CFLAGS -fPIC";
|
||||
- LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
|
||||
- echo '{ global: globalsymb*; local: *; };' > conftest.map
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ # Check whether --enable-symvers was given.
|
||||
+if test "${enable_symvers+set}" = set; then :
|
||||
+ enableval=$enable_symvers; case "$enableval" in
|
||||
+ yes) libjava_cv_anon_version_script=yes ;;
|
||||
+ no) libjava_cv_anon_version_script=no ;;
|
||||
+ *) as_fn_error "Unknown argument to enable/disable symvers" "$LINENO" 5;;
|
||||
+ esac
|
||||
+else
|
||||
+ libjava_cv_anon_version_script=yes
|
||||
+
|
||||
+fi
|
||||
+
|
||||
+ if test x$libjava_cv_anon_version_script = xyes; then
|
||||
+ save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
|
||||
+ CFLAGS="$CFLAGS -fPIC";
|
||||
+ LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
|
||||
+ echo '{ global: globalsymb*; local: *; };' > conftest.map
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -24551,17 +24565,19 @@ main ()
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
libjava_cv_anon_version_script=gnu
|
||||
+else
|
||||
+ libjava_cv_anon_version_script=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- if test x$libjava_cv_anon_version_script = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
|
||||
- # Sun ld doesn't understand wildcards here.
|
||||
- echo '{ global: globalsymbol; local: *; };' > conftest.map
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ if test x$libjava_cv_anon_version_script = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
|
||||
+ # Sun ld doesn't understand wildcards here.
|
||||
+ echo '{ global: globalsymbol; local: *; };' > conftest.map
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -24580,10 +24596,11 @@ if ac_fn_c_try_link "$LINENO"; then :
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- ;;
|
||||
- esac
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
- CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libjava_cv_anon_version_script" >&5
|
||||
diff --git a/libjava/configure.ac b/libjava/configure.ac
|
||||
index 8187eec..c5bb1a0 100644
|
||||
--- a/libjava/configure.ac
|
||||
+++ b/libjava/configure.ac
|
||||
@@ -1800,26 +1800,38 @@ GCC_CHECK_UNWIND_GETIPINFO
|
||||
# See if linker supports anonymous version scripts.
|
||||
AC_CACHE_CHECK([whether ld supports anonymous version scripts],
|
||||
[libjava_cv_anon_version_script],
|
||||
- [save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
|
||||
- libjava_cv_anon_version_script=no
|
||||
- CFLAGS="$CFLAGS -fPIC";
|
||||
- LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
|
||||
- echo '{ global: globalsymb*; local: *; };' > conftest.map
|
||||
- AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
|
||||
- [libjava_cv_anon_version_script=gnu], [])
|
||||
- if test x$libjava_cv_anon_version_script = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
|
||||
- # Sun ld doesn't understand wildcards here.
|
||||
- echo '{ global: globalsymbol; local: *; };' > conftest.map
|
||||
- AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
|
||||
- [libjava_cv_anon_version_script=sun], [])
|
||||
- ;;
|
||||
- esac
|
||||
+ [AC_ARG_ENABLE(symvers,
|
||||
+ AS_HELP_STRING([--disable-symvers],
|
||||
+ [disable symbol versioning for libjava]),
|
||||
+ [case "$enableval" in
|
||||
+ yes) libjava_cv_anon_version_script=yes ;;
|
||||
+ no) libjava_cv_anon_version_script=no ;;
|
||||
+ *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]);;
|
||||
+ esac],
|
||||
+ [libjava_cv_anon_version_script=yes]
|
||||
+ )
|
||||
+ if test x$libjava_cv_anon_version_script = xyes; then
|
||||
+ save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
|
||||
+ CFLAGS="$CFLAGS -fPIC";
|
||||
+ LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
|
||||
+ echo '{ global: globalsymb*; local: *; };' > conftest.map
|
||||
+ AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
|
||||
+ [libjava_cv_anon_version_script=gnu],
|
||||
+ [libjava_cv_anon_version_script=no])
|
||||
+ if test x$libjava_cv_anon_version_script = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
|
||||
+ # Sun ld doesn't understand wildcards here.
|
||||
+ echo '{ global: globalsymbol; local: *; };' > conftest.map
|
||||
+ AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
|
||||
+ [libjava_cv_anon_version_script=sun], [])
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
- CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
|
||||
])
|
||||
AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" != no)
|
||||
AM_CONDITIONAL(ANONVERSCRIPT_GNU, test "$libjava_cv_anon_version_script" = gnu)
|
||||
index 8735ac5..7f78ea1 100755
|
||||
--- a/libquadmath/configure
|
||||
+++ b/libquadmath/configure
|
||||
@@ -747,6 +747,7 @@ with_gnu_ld
|
||||
enable_libtool_lock
|
||||
enable_maintainer_mode
|
||||
enable_multilib
|
||||
+enable_symvers
|
||||
enable_generated_files_in_srcdir
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
@@ -1391,6 +1392,7 @@ Optional Features:
|
||||
--enable-maintainer-mode enable make rules and dependencies not useful
|
||||
(and sometimes confusing) to the casual installer
|
||||
--enable-multilib build many library versions (default)
|
||||
+ --disable-symvers disable symbol versioning for libquadmath
|
||||
--enable-generated-files-in-srcdir
|
||||
put copies of generated files in source dir intended
|
||||
for creating source tarballs for users without
|
||||
@@ -10511,7 +10513,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 10514 "configure"
|
||||
+#line 10516 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -10617,7 +10619,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 10620 "configure"
|
||||
+#line 10622 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -12339,19 +12341,27 @@ CFLAGS="$saved_CFLAGS"
|
||||
# Check for symbol versioning (copied from libssp).
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symbol versioning is supported" >&5
|
||||
$as_echo_n "checking whether symbol versioning is supported... " >&6; }
|
||||
-if test x$gcc_no_link = xyes; then
|
||||
- # If we cannot link, we cannot build shared libraries, so do not use
|
||||
- # symbol versioning.
|
||||
- quadmath_use_symver=no
|
||||
+# Check whether --enable-symvers was given.
|
||||
+if test "${enable_symvers+set}" = set; then :
|
||||
+ enableval=$enable_symvers; quadmath_use_symver=$enableval
|
||||
else
|
||||
- save_LDFLAGS="$LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
- cat > conftest.map <<EOF
|
||||
+ quadmath_use_symver=yes
|
||||
+fi
|
||||
+
|
||||
+if test "x$quadmath_use_symver" = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
+ # If we cannot link, we cannot build shared libraries, so do not use
|
||||
+ # symbol versioning.
|
||||
+ quadmath_use_symver=no
|
||||
+ else
|
||||
+ save_LDFLAGS="$LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -12372,18 +12382,18 @@ else
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- if test x$quadmath_use_symver = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
- # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
- cat > conftest.map <<EOF
|
||||
+ if test x$quadmath_use_symver = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
+ # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: foo; local: *;
|
||||
};
|
||||
EOF
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -12404,10 +12414,11 @@ else
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- ;;
|
||||
- esac
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $quadmath_use_symver" >&5
|
||||
$as_echo "$quadmath_use_symver" >&6; }
|
||||
diff --git a/libquadmath/configure.ac b/libquadmath/configure.ac
|
||||
index 8559c1d..512b9f8 100644
|
||||
--- a/libquadmath/configure.ac
|
||||
+++ b/libquadmath/configure.ac
|
||||
@@ -164,35 +164,42 @@ CFLAGS="$saved_CFLAGS"
|
||||
|
||||
# Check for symbol versioning (copied from libssp).
|
||||
AC_MSG_CHECKING([whether symbol versioning is supported])
|
||||
-if test x$gcc_no_link = xyes; then
|
||||
- # If we cannot link, we cannot build shared libraries, so do not use
|
||||
- # symbol versioning.
|
||||
- quadmath_use_symver=no
|
||||
-else
|
||||
- save_LDFLAGS="$LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
- cat > conftest.map <<EOF
|
||||
+AC_ARG_ENABLE(symvers,
|
||||
+AS_HELP_STRING([--disable-symvers],
|
||||
+ [disable symbol versioning for libquadmath]),
|
||||
+quadmath_use_symver=$enableval,
|
||||
+quadmath_use_symver=yes)
|
||||
+if test "x$quadmath_use_symver" = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
+ # If we cannot link, we cannot build shared libraries, so do not use
|
||||
+ # symbol versioning.
|
||||
+ quadmath_use_symver=no
|
||||
+ else
|
||||
+ save_LDFLAGS="$LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
- AC_TRY_LINK([int foo;],[],[quadmath_use_symver=gnu],[quadmath_use_symver=no])
|
||||
- if test x$quadmath_use_symver = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
- # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
- cat > conftest.map <<EOF
|
||||
+ AC_TRY_LINK([int foo;],[],[quadmath_use_symver=gnu],[quadmath_use_symver=no])
|
||||
+ if test x$quadmath_use_symver = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
+ # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: foo; local: *;
|
||||
};
|
||||
EOF
|
||||
- AC_TRY_LINK([int foo;],[],[quadmath_use_symver=sun],[quadmath_use_symver=no])
|
||||
- ;;
|
||||
- esac
|
||||
+ AC_TRY_LINK([int foo;],[],[quadmath_use_symver=sun],[quadmath_use_symver=no])
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
AC_MSG_RESULT($quadmath_use_symver)
|
||||
AM_CONDITIONAL(LIBQUAD_USE_SYMVER, [test "x$quadmath_use_symver" != xno])
|
||||
index 85a6a0a..b1edcb4 100755
|
||||
--- a/libssp/configure
|
||||
+++ b/libssp/configure
|
||||
@@ -734,6 +734,7 @@ enable_version_specific_runtime_libs
|
||||
enable_maintainer_mode
|
||||
enable_multilib
|
||||
enable_dependency_tracking
|
||||
+enable_symvers
|
||||
enable_shared
|
||||
enable_static
|
||||
with_pic
|
||||
@@ -1372,6 +1373,7 @@ Optional Features:
|
||||
--enable-multilib build many library versions (default)
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
+ --disable-symvers disable symbol versioning for libssp
|
||||
--enable-shared[=PKGS] build shared libraries [default=yes]
|
||||
--enable-static[=PKGS] build static libraries [default=yes]
|
||||
--enable-fast-install[=PKGS]
|
||||
@@ -4098,19 +4100,27 @@ fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symbol versioning is supported" >&5
|
||||
$as_echo_n "checking whether symbol versioning is supported... " >&6; }
|
||||
-if test x$gcc_no_link = xyes; then
|
||||
- # If we cannot link, we cannot build shared libraries, so do not use
|
||||
- # symbol versioning.
|
||||
- ssp_use_symver=no
|
||||
+# Check whether --enable-symvers was given.
|
||||
+if test "${enable_symvers+set}" = set; then :
|
||||
+ enableval=$enable_symvers; ssp_use_symver=$enableval
|
||||
else
|
||||
- save_LDFLAGS="$LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
- cat > conftest.map <<EOF
|
||||
+ ssp_use_symver=yes
|
||||
+fi
|
||||
+
|
||||
+if test "x$ssp_use_symver" = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
+ # If we cannot link, we cannot build shared libraries, so do not use
|
||||
+ # symbol versioning.
|
||||
+ ssp_use_symver=no
|
||||
+ else
|
||||
+ save_LDFLAGS="$LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -4131,18 +4141,18 @@ else
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- if test x$ssp_use_symver = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
- # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
- cat > conftest.map <<EOF
|
||||
+ if test x$ssp_use_symver = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
+ # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: foo; local: *;
|
||||
};
|
||||
EOF
|
||||
- if test x$gcc_no_link = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -4163,10 +4173,11 @@ else
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
- ;;
|
||||
- esac
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssp_use_symver" >&5
|
||||
$as_echo "$ssp_use_symver" >&6; }
|
||||
@@ -10639,7 +10650,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 10642 "configure"
|
||||
+#line 10653 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -10745,7 +10756,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 10748 "configure"
|
||||
+#line 10759 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
diff --git a/libssp/configure.ac b/libssp/configure.ac
|
||||
index ee48f4d..0eee36c 100644
|
||||
--- a/libssp/configure.ac
|
||||
+++ b/libssp/configure.ac
|
||||
@@ -72,35 +72,42 @@ if test x$ssp_hidden = xyes; then
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([whether symbol versioning is supported])
|
||||
-if test x$gcc_no_link = xyes; then
|
||||
- # If we cannot link, we cannot build shared libraries, so do not use
|
||||
- # symbol versioning.
|
||||
- ssp_use_symver=no
|
||||
-else
|
||||
- save_LDFLAGS="$LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
- cat > conftest.map <<EOF
|
||||
+AC_ARG_ENABLE(symvers,
|
||||
+AS_HELP_STRING([--disable-symvers],
|
||||
+ [disable symbol versioning for libssp]),
|
||||
+ssp_use_symver=$enableval,
|
||||
+ssp_use_symver=yes)
|
||||
+if test "x$ssp_use_symver" = xyes; then
|
||||
+ if test x$gcc_no_link = xyes; then
|
||||
+ # If we cannot link, we cannot build shared libraries, so do not use
|
||||
+ # symbol versioning.
|
||||
+ ssp_use_symver=no
|
||||
+ else
|
||||
+ save_LDFLAGS="$LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
- AC_TRY_LINK([int foo;],[],[ssp_use_symver=gnu],[ssp_use_symver=no])
|
||||
- if test x$ssp_use_symver = xno; then
|
||||
- case "$target_os" in
|
||||
- solaris2*)
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
- LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
- # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
- cat > conftest.map <<EOF
|
||||
+ AC_TRY_LINK([int foo;],[],[ssp_use_symver=gnu],[ssp_use_symver=no])
|
||||
+ if test x$ssp_use_symver = xno; then
|
||||
+ case "$target_os" in
|
||||
+ solaris2*)
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||||
+ # Sun ld cannot handle wildcards and treats all entries as undefined.
|
||||
+ cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: foo; local: *;
|
||||
};
|
||||
EOF
|
||||
- AC_TRY_LINK([int foo;],[],[ssp_use_symver=sun],[ssp_use_symver=no])
|
||||
- ;;
|
||||
- esac
|
||||
+ AC_TRY_LINK([int foo;],[],[ssp_use_symver=sun],[ssp_use_symver=no])
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
- LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
AC_MSG_RESULT($ssp_use_symver)
|
||||
AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" != xno])
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
From 6f57329da3c7308ccf6b1740ead898d668ec24f9 Mon Sep 17 00:00:00 2001
|
||||
From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 11:57:40 +0000
|
||||
Subject: [PATCH] 2011-03-29 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* config/s390/s390.c (s390_preferred_reload_class): Return NO_REGS
|
||||
for invalid symbolic addresses.
|
||||
(s390_secondary_reload): Don't use s390_check_symref_alignment for
|
||||
larl operands.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171658 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 5165e87..c1bb234 100644
|
||||
--- a/gcc/config/s390/s390.c
|
||||
+++ b/gcc/config/s390/s390.c
|
||||
@@ -3011,14 +3011,20 @@ s390_preferred_reload_class (rtx op, reg_class_t rclass)
|
||||
it is most likely being used as an address, so
|
||||
prefer ADDR_REGS. If 'class' is not a superset
|
||||
of ADDR_REGS, e.g. FP_REGS, reject this reload. */
|
||||
- case PLUS:
|
||||
case LABEL_REF:
|
||||
case SYMBOL_REF:
|
||||
case CONST:
|
||||
- if (reg_class_subset_p (ADDR_REGS, rclass))
|
||||
+ if (reg_class_subset_p (ADDR_REGS, rclass)
|
||||
+ && legitimate_reload_constant_p (op))
|
||||
return ADDR_REGS;
|
||||
else
|
||||
return NO_REGS;
|
||||
+ case PLUS:
|
||||
+ /* load address will be used for this reload. */
|
||||
+ if (reg_class_subset_p (ADDR_REGS, rclass))
|
||||
+ return ADDR_REGS;
|
||||
+ else
|
||||
+ return NO_REGS;
|
||||
|
||||
default:
|
||||
break;
|
||||
@@ -3134,12 +3140,16 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
|
||||
|
||||
if (TARGET_Z10)
|
||||
{
|
||||
+ HOST_WIDE_INT offset;
|
||||
+ rtx symref;
|
||||
+
|
||||
/* On z10 several optimizer steps may generate larl operands with
|
||||
an odd addend. */
|
||||
if (in_p
|
||||
- && s390_symref_operand_p (x, NULL, NULL)
|
||||
+ && s390_symref_operand_p (x, &symref, &offset)
|
||||
&& mode == Pmode
|
||||
- && !s390_check_symref_alignment (x, 2))
|
||||
+ && !SYMBOL_REF_ALIGN1_P (symref)
|
||||
+ && (offset & 1) == 1)
|
||||
sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10
|
||||
: CODE_FOR_reloadsi_larl_odd_addend_z10);
|
||||
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,405 +0,0 @@
|
|||
From 04688242805dcf2a1e9c8948a3d15611d88c1520 Mon Sep 17 00:00:00 2001
|
||||
From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 12:27:07 +0000
|
||||
Subject: [PATCH] * config/rx/rx.h (LABEL_ALIGN_AFTER_BARRIER): Define.
|
||||
(ASM_OUTPUT_MAX_SKIP): Define.
|
||||
* config/rx/predicates.md (rx_zs_comparison_operator): Do not
|
||||
allow LT aor GE comparisons.
|
||||
* config/rx/rx-protos.h (rx_align_for_label): Prototype.
|
||||
* config/rx/rx.md: Add peepholes and patterns to combine extending
|
||||
loads with simple arithmetic instructions.
|
||||
* config/rx/rx.c (rx_is_legitimate_address): Allow QI and HI modes
|
||||
to use pre-decrement and post-increment addressing.
|
||||
(rx_is_restricted_memory_address): For REG+INT addressing, ensure
|
||||
that the INT is a valid offset.
|
||||
(rx_print_operand): Handle %R.
|
||||
Fix %Q's handling of MEMs.
|
||||
(rx_option_override): Set alignments.
|
||||
(rx_align_for_label): New function.
|
||||
(rx_max_skip_for_label): New function.
|
||||
(TARGET_ASM_JUMP_ALIGN_MAX_SKIP): Define.
|
||||
(TARGET_ASM_LOOP_ALIGN_MAX_SKIP): Define.
|
||||
(TARGET_ASM_LABEL_ALIGN_MAX_SKIP): Define.
|
||||
(TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Define.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171659 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 77b3353..82cac42 100644
|
||||
--- a/gcc/config/rx/predicates.md
|
||||
+++ b/gcc/config/rx/predicates.md
|
||||
@@ -284,7 +284,7 @@
|
||||
)
|
||||
|
||||
(define_predicate "rx_zs_comparison_operator"
|
||||
- (match_code "eq,ne,lt,ge")
|
||||
+ (match_code "eq,ne")
|
||||
)
|
||||
|
||||
;; GT and LE omitted due to operand swap required.
|
||||
diff --git a/gcc/config/rx/rx-protos.h b/gcc/config/rx/rx-protos.h
|
||||
index a6ae416..e1ab9c2 100644
|
||||
--- a/gcc/config/rx/rx-protos.h
|
||||
+++ b/gcc/config/rx/rx-protos.h
|
||||
@@ -30,16 +30,17 @@ extern void rx_expand_prologue (void);
|
||||
extern int rx_initial_elimination_offset (int, int);
|
||||
|
||||
#ifdef RTX_CODE
|
||||
+extern int rx_align_for_label (void);
|
||||
extern void rx_emit_stack_popm (rtx *, bool);
|
||||
extern void rx_emit_stack_pushm (rtx *);
|
||||
extern void rx_expand_epilogue (bool);
|
||||
extern char * rx_gen_move_template (rtx *, bool);
|
||||
extern bool rx_is_legitimate_constant (rtx);
|
||||
extern bool rx_is_restricted_memory_address (rtx, Mmode);
|
||||
+extern bool rx_match_ccmode (rtx, Mmode);
|
||||
extern void rx_notice_update_cc (rtx body, rtx insn);
|
||||
extern void rx_split_cbranch (Mmode, Rcode, rtx, rtx, rtx);
|
||||
extern Mmode rx_select_cc_mode (Rcode, rtx, rtx);
|
||||
-extern bool rx_match_ccmode (rtx, Mmode);
|
||||
#endif
|
||||
|
||||
#endif /* GCC_RX_PROTOS_H */
|
||||
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
|
||||
index 6b179e7..ad8d0bb 100644
|
||||
--- a/gcc/config/rx/rx.c
|
||||
+++ b/gcc/config/rx/rx.c
|
||||
@@ -57,7 +57,7 @@ static void rx_print_operand (FILE *, rtx, int);
|
||||
#define CC_FLAG_Z (1 << 1)
|
||||
#define CC_FLAG_O (1 << 2)
|
||||
#define CC_FLAG_C (1 << 3)
|
||||
-#define CC_FLAG_FP (1 << 4) /* fake, to differentiate CC_Fmode */
|
||||
+#define CC_FLAG_FP (1 << 4) /* Fake, to differentiate CC_Fmode. */
|
||||
|
||||
static unsigned int flags_from_mode (enum machine_mode mode);
|
||||
static unsigned int flags_from_code (enum rtx_code code);
|
||||
@@ -85,7 +85,9 @@ rx_is_legitimate_address (Mmode mode, rtx x, bool strict ATTRIBUTE_UNUSED)
|
||||
/* Register Indirect. */
|
||||
return true;
|
||||
|
||||
- if (GET_MODE_SIZE (mode) == 4
|
||||
+ if ((GET_MODE_SIZE (mode) == 4
|
||||
+ || GET_MODE_SIZE (mode) == 2
|
||||
+ || GET_MODE_SIZE (mode) == 1)
|
||||
&& (GET_CODE (x) == PRE_DEC || GET_CODE (x) == POST_INC))
|
||||
/* Pre-decrement Register Indirect or
|
||||
Post-increment Register Indirect. */
|
||||
@@ -187,7 +189,10 @@ rx_is_restricted_memory_address (rtx mem, enum machine_mode mode)
|
||||
base = XEXP (mem, 0);
|
||||
index = XEXP (mem, 1);
|
||||
|
||||
- return RX_REG_P (base) && CONST_INT_P (index);
|
||||
+ if (! RX_REG_P (base) || ! CONST_INT_P (index))
|
||||
+ return false;
|
||||
+
|
||||
+ return IN_RANGE (INTVAL (index), 0, (0x10000 * GET_MODE_SIZE (mode)) - 1);
|
||||
|
||||
case SYMBOL_REF:
|
||||
/* Can happen when small data is being supported.
|
||||
@@ -386,11 +391,14 @@ rx_assemble_integer (rtx x, unsigned int size, int is_aligned)
|
||||
%L Print low part of a DImode register, integer or address.
|
||||
%N Print the negation of the immediate value.
|
||||
%Q If the operand is a MEM, then correctly generate
|
||||
- register indirect or register relative addressing. */
|
||||
+ register indirect or register relative addressing.
|
||||
+ %R Like %Q but for zero-extending loads. */
|
||||
|
||||
static void
|
||||
rx_print_operand (FILE * file, rtx op, int letter)
|
||||
{
|
||||
+ bool unsigned_load = false;
|
||||
+
|
||||
switch (letter)
|
||||
{
|
||||
case 'A':
|
||||
@@ -450,6 +458,7 @@ rx_print_operand (FILE * file, rtx op, int letter)
|
||||
else
|
||||
{
|
||||
unsigned int flags = flags_from_mode (mode);
|
||||
+
|
||||
switch (code)
|
||||
{
|
||||
case LT:
|
||||
@@ -588,10 +597,15 @@ rx_print_operand (FILE * file, rtx op, int letter)
|
||||
rx_print_integer (file, - INTVAL (op));
|
||||
break;
|
||||
|
||||
+ case 'R':
|
||||
+ gcc_assert (GET_MODE_SIZE (GET_MODE (op)) < 4);
|
||||
+ unsigned_load = true;
|
||||
+ /* Fall through. */
|
||||
case 'Q':
|
||||
if (MEM_P (op))
|
||||
{
|
||||
HOST_WIDE_INT offset;
|
||||
+ rtx mem = op;
|
||||
|
||||
op = XEXP (op, 0);
|
||||
|
||||
@@ -626,22 +640,24 @@ rx_print_operand (FILE * file, rtx op, int letter)
|
||||
rx_print_operand (file, op, 0);
|
||||
fprintf (file, "].");
|
||||
|
||||
- switch (GET_MODE_SIZE (GET_MODE (op)))
|
||||
+ switch (GET_MODE_SIZE (GET_MODE (mem)))
|
||||
{
|
||||
case 1:
|
||||
- gcc_assert (offset < 65535 * 1);
|
||||
- fprintf (file, "B");
|
||||
+ gcc_assert (offset <= 65535 * 1);
|
||||
+ fprintf (file, unsigned_load ? "UB" : "B");
|
||||
break;
|
||||
case 2:
|
||||
gcc_assert (offset % 2 == 0);
|
||||
- gcc_assert (offset < 65535 * 2);
|
||||
- fprintf (file, "W");
|
||||
+ gcc_assert (offset <= 65535 * 2);
|
||||
+ fprintf (file, unsigned_load ? "UW" : "W");
|
||||
break;
|
||||
- default:
|
||||
+ case 4:
|
||||
gcc_assert (offset % 4 == 0);
|
||||
- gcc_assert (offset < 65535 * 4);
|
||||
+ gcc_assert (offset <= 65535 * 4);
|
||||
fprintf (file, "L");
|
||||
break;
|
||||
+ default:
|
||||
+ gcc_unreachable ();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2336,6 +2352,13 @@ rx_option_override (void)
|
||||
flag_strict_volatile_bitfields = 1;
|
||||
|
||||
rx_override_options_after_change ();
|
||||
+
|
||||
+ if (align_jumps == 0 && ! optimize_size)
|
||||
+ align_jumps = 3;
|
||||
+ if (align_loops == 0 && ! optimize_size)
|
||||
+ align_loops = 3;
|
||||
+ if (align_labels == 0 && ! optimize_size)
|
||||
+ align_labels = 3;
|
||||
}
|
||||
|
||||
/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */
|
||||
@@ -2728,6 +2751,45 @@ rx_match_ccmode (rtx insn, enum machine_mode cc_mode)
|
||||
}
|
||||
|
||||
|
||||
+int
|
||||
+rx_align_for_label (void)
|
||||
+{
|
||||
+ return optimize_size ? 1 : 3;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+rx_max_skip_for_label (rtx lab)
|
||||
+{
|
||||
+ int opsize;
|
||||
+ rtx op;
|
||||
+
|
||||
+ if (lab == NULL_RTX)
|
||||
+ return 0;
|
||||
+ op = lab;
|
||||
+ do
|
||||
+ {
|
||||
+ op = next_nonnote_insn (op);
|
||||
+ }
|
||||
+ while (op && (LABEL_P (op)
|
||||
+ || (INSN_P (op) && GET_CODE (PATTERN (op)) == USE)));
|
||||
+ if (!op)
|
||||
+ return 0;
|
||||
+
|
||||
+ opsize = get_attr_length (op);
|
||||
+ if (opsize >= 0 && opsize < 8)
|
||||
+ return opsize - 1;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#undef TARGET_ASM_JUMP_ALIGN_MAX_SKIP
|
||||
+#define TARGET_ASM_JUMP_ALIGN_MAX_SKIP rx_max_skip_for_label
|
||||
+#undef TARGET_ASM_LOOP_ALIGN_MAX_SKIP
|
||||
+#define TARGET_ASM_LOOP_ALIGN_MAX_SKIP rx_max_skip_for_label
|
||||
+#undef TARGET_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
|
||||
+#define TARGET_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP rx_max_skip_for_label
|
||||
+#undef TARGET_ASM_LABEL_ALIGN_MAX_SKIP
|
||||
+#define TARGET_ASM_LABEL_ALIGN_MAX_SKIP rx_max_skip_for_label
|
||||
+
|
||||
#undef TARGET_FUNCTION_VALUE
|
||||
#define TARGET_FUNCTION_VALUE rx_function_value
|
||||
|
||||
diff --git a/gcc/config/rx/rx.h b/gcc/config/rx/rx.h
|
||||
index e3966ed..01fc23b 100644
|
||||
--- a/gcc/config/rx/rx.h
|
||||
+++ b/gcc/config/rx/rx.h
|
||||
@@ -615,4 +615,23 @@ typedef unsigned int CUMULATIVE_ARGS;
|
||||
#define BRANCH_COST(SPEED,PREDICT) 1
|
||||
#define REGISTER_MOVE_COST(MODE,FROM,TO) 2
|
||||
|
||||
-#define SELECT_CC_MODE(OP,X,Y) rx_select_cc_mode(OP, X, Y)
|
||||
+#define SELECT_CC_MODE(OP,X,Y) rx_select_cc_mode((OP), (X), (Y))
|
||||
+
|
||||
+#define LABEL_ALIGN_AFTER_BARRIER(x) rx_align_for_label ()
|
||||
+
|
||||
+#define ASM_OUTPUT_MAX_SKIP_ALIGN(STREAM, LOG, MAX_SKIP) \
|
||||
+ do \
|
||||
+ { \
|
||||
+ if ((LOG) == 0 || (MAX_SKIP) == 0) \
|
||||
+ break; \
|
||||
+ if (TARGET_AS100_SYNTAX) \
|
||||
+ { \
|
||||
+ if ((LOG) >= 2) \
|
||||
+ fprintf (STREAM, "\t.ALIGN 4\t; %d alignment actually requested\n", 1 << (LOG)); \
|
||||
+ else \
|
||||
+ fprintf (STREAM, "\t.ALIGN 2\n"); \
|
||||
+ } \
|
||||
+ else \
|
||||
+ fprintf (STREAM, "\t.balign %d,3,%d\n", 1 << (LOG), (MAX_SKIP)); \
|
||||
+ } \
|
||||
+ while (0)
|
||||
diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md
|
||||
index cd5b571..641f1d4 100644
|
||||
--- a/gcc/config/rx/rx.md
|
||||
+++ b/gcc/config/rx/rx.md
|
||||
@@ -1545,6 +1545,139 @@
|
||||
(set_attr "length" "3,4,5,6,7,6")]
|
||||
)
|
||||
|
||||
+;; A set of peepholes to catch extending loads followed by arithmetic operations.
|
||||
+;; We use iterators where possible to reduce the amount of typing and hence the
|
||||
+;; possibilities for typos.
|
||||
+
|
||||
+(define_code_iterator extend_types [(zero_extend "") (sign_extend "")])
|
||||
+(define_code_attr letter [(zero_extend "R") (sign_extend "Q")])
|
||||
+
|
||||
+(define_code_iterator memex_commutative [(plus "") (and "") (ior "") (xor "")])
|
||||
+(define_code_iterator memex_noncomm [(div "") (udiv "") (minus "")])
|
||||
+(define_code_iterator memex_nocc [(smax "") (smin "") (mult "")])
|
||||
+
|
||||
+(define_code_attr op [(plus "add") (and "and") (div "div") (udiv "divu") (smax "max") (smin "min") (mult "mul") (ior "or") (minus "sub") (xor "xor")])
|
||||
+
|
||||
+(define_peephole2
|
||||
+ [(set (match_operand:SI 0 "register_operand")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand")))
|
||||
+ (parallel [(set (match_operand:SI 2 "register_operand")
|
||||
+ (memex_commutative:SI (match_dup 0)
|
||||
+ (match_dup 2)))
|
||||
+ (clobber (reg:CC CC_REG))])]
|
||||
+ "peep2_regno_dead_p (2, REGNO (operands[0]))"
|
||||
+ [(parallel [(set:SI (match_dup 2)
|
||||
+ (memex_commutative:SI (match_dup 2)
|
||||
+ (extend_types:SI (match_dup 1))))
|
||||
+ (clobber (reg:CC CC_REG))])]
|
||||
+)
|
||||
+
|
||||
+(define_peephole2
|
||||
+ [(set (match_operand:SI 0 "register_operand")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand")))
|
||||
+ (parallel [(set (match_operand:SI 2 "register_operand")
|
||||
+ (memex_commutative:SI (match_dup 2)
|
||||
+ (match_dup 0)))
|
||||
+ (clobber (reg:CC CC_REG))])]
|
||||
+ "peep2_regno_dead_p (2, REGNO (operands[0]))"
|
||||
+ [(parallel [(set:SI (match_dup 2)
|
||||
+ (memex_commutative:SI (match_dup 2)
|
||||
+ (extend_types:SI (match_dup 1))))
|
||||
+ (clobber (reg:CC CC_REG))])]
|
||||
+)
|
||||
+
|
||||
+(define_peephole2
|
||||
+ [(set (match_operand:SI 0 "register_operand")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand")))
|
||||
+ (parallel [(set (match_operand:SI 2 "register_operand")
|
||||
+ (memex_noncomm:SI (match_dup 2)
|
||||
+ (match_dup 0)))
|
||||
+ (clobber (reg:CC CC_REG))])]
|
||||
+ "peep2_regno_dead_p (2, REGNO (operands[0]))"
|
||||
+ [(parallel [(set:SI (match_dup 2)
|
||||
+ (memex_noncomm:SI (match_dup 2)
|
||||
+ (extend_types:SI (match_dup 1))))
|
||||
+ (clobber (reg:CC CC_REG))])]
|
||||
+)
|
||||
+
|
||||
+(define_peephole2
|
||||
+ [(set (match_operand:SI 0 "register_operand")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand")))
|
||||
+ (set (match_operand:SI 2 "register_operand")
|
||||
+ (memex_nocc:SI (match_dup 0)
|
||||
+ (match_dup 2)))]
|
||||
+ "peep2_regno_dead_p (2, REGNO (operands[0]))"
|
||||
+ [(set:SI (match_dup 2)
|
||||
+ (memex_nocc:SI (match_dup 2)
|
||||
+ (extend_types:SI (match_dup 1))))]
|
||||
+)
|
||||
+
|
||||
+(define_peephole2
|
||||
+ [(set (match_operand:SI 0 "register_operand")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand")))
|
||||
+ (set (match_operand:SI 2 "register_operand")
|
||||
+ (memex_nocc:SI (match_dup 2)
|
||||
+ (match_dup 0)))]
|
||||
+ "peep2_regno_dead_p (2, REGNO (operands[0]))"
|
||||
+ [(set:SI (match_dup 2)
|
||||
+ (memex_nocc:SI (match_dup 2)
|
||||
+ (extend_types:SI (match_dup 1))))]
|
||||
+)
|
||||
+
|
||||
+(define_insn "*<memex_commutative:code>si3_<extend_types:code><small_int_modes:mode>"
|
||||
+ [(set (match_operand:SI 0 "register_operand" "=r")
|
||||
+ (memex_commutative:SI (match_operand:SI 1 "register_operand" "%0")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))
|
||||
+ (clobber (reg:CC CC_REG))]
|
||||
+ ""
|
||||
+ "<memex_commutative:op>\t%<extend_types:letter>2, %0"
|
||||
+ [(set_attr "timings" "33")
|
||||
+ (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
|
||||
+) ;; rather than using iterators we could specify exact sizes.
|
||||
+
|
||||
+(define_insn "*<memex_noncomm:code>si3_<extend_types:code><small_int_modes:mode>"
|
||||
+ [(set (match_operand:SI 0 "register_operand" "=r")
|
||||
+ (memex_noncomm:SI (match_operand:SI 1 "register_operand" "0")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))
|
||||
+ (clobber (reg:CC CC_REG))]
|
||||
+ ""
|
||||
+ "<memex_noncomm:op>\t%<extend_types:letter>2, %0"
|
||||
+ [(set_attr "timings" "33")
|
||||
+ (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
|
||||
+) ;; rather than using iterators we could specify exact sizes.
|
||||
+
|
||||
+(define_insn "*<memex_nocc:code>si3_<extend_types:code><small_int_modes:mode>"
|
||||
+ [(set (match_operand:SI 0 "register_operand" "=r")
|
||||
+ (memex_nocc:SI (match_operand:SI 1 "register_operand" "%0")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))]
|
||||
+ ""
|
||||
+ "<memex_nocc:op>\t%<extend_types:letter>2, %0"
|
||||
+ [(set_attr "timings" "33")
|
||||
+ (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
|
||||
+) ;; rather than using iterators we could specify exact sizes.
|
||||
+
|
||||
+(define_peephole2
|
||||
+ [(set (match_operand:SI 0 "register_operand")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand")))
|
||||
+ (set (reg:CC CC_REG)
|
||||
+ (compare:CC (match_operand:SI 2 "register_operand")
|
||||
+ (match_dup 0)))]
|
||||
+ "peep2_regno_dead_p (2, REGNO (operands[0]))"
|
||||
+ [(set (reg:CC CC_REG)
|
||||
+ (compare:CC (match_dup 2)
|
||||
+ (extend_types:SI (match_dup 1))))]
|
||||
+)
|
||||
+
|
||||
+(define_insn "*comparesi3_<extend_types:code><small_int_modes:mode>"
|
||||
+ [(set (reg:CC CC_REG)
|
||||
+ (compare:CC (match_operand:SI 0 "register_operand" "=r")
|
||||
+ (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand" "Q"))))]
|
||||
+ ""
|
||||
+ "cmp\t%<extend_types:letter>1, %0"
|
||||
+ [(set_attr "timings" "33")
|
||||
+ (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
|
||||
+) ;; rather than using iterators we could specify exact sizes.
|
||||
+
|
||||
;; Floating Point Instructions
|
||||
|
||||
(define_insn "addsf3"
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From e8c1376d80e89383a6eff16349bf2071b571a47f Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:23:59 +0000
|
||||
Subject: [PATCH] * c.opt: Add -std=c++03.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171662 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index bb928fa..fe746e2 100644
|
||||
--- a/gcc/c-family/c.opt
|
||||
+++ b/gcc/c-family/c.opt
|
||||
@@ -1133,7 +1133,11 @@ Remap file names when including files
|
||||
|
||||
std=c++98
|
||||
C++ ObjC++
|
||||
-Conform to the ISO 1998 C++ standard
|
||||
+Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum
|
||||
+
|
||||
+std=c++03
|
||||
+C++ ObjC++ Alias(std=c++98)
|
||||
+Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum
|
||||
|
||||
std=c++0x
|
||||
C++ ObjC++
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
From 1d1e50e7f9e7511a01ee95d7cffd8311c9b84d8b Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:24:09 +0000
|
||||
Subject: [PATCH] PR c++/47570
|
||||
* semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
|
||||
use the generic binary expression handling.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171663 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index a0f48c0..d23effe 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -6896,7 +6896,13 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t,
|
||||
r = cxx_eval_constant_expression (call, op0, allow_non_constant,
|
||||
addr, non_constant_p);
|
||||
else
|
||||
- goto binary;
|
||||
+ {
|
||||
+ /* Check that the LHS is constant and then discard it. */
|
||||
+ cxx_eval_constant_expression (call, op0, allow_non_constant,
|
||||
+ false, non_constant_p);
|
||||
+ r = cxx_eval_constant_expression (call, op1, allow_non_constant,
|
||||
+ addr, non_constant_p);
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -6938,7 +6944,6 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t,
|
||||
case UNEQ_EXPR:
|
||||
case RANGE_EXPR:
|
||||
case COMPLEX_EXPR:
|
||||
- binary:
|
||||
r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
|
||||
non_constant_p);
|
||||
break;
|
||||
new file mode 100644
|
||||
index 0000000..c60ba86
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
|
||||
@@ -0,0 +1,25 @@
|
||||
+// PR c++/47570
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+unsigned int constexpr one()
|
||||
+{ return 1; }
|
||||
+
|
||||
+int constexpr one_B()
|
||||
+{ return 1; }
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ // FAIL TO COMPILE:
|
||||
+ static bool constexpr SC_huh1 = ((unsigned int)one()) >= ((unsigned int)0);
|
||||
+ static bool constexpr SC_huh2 = one() >= ((unsigned int)0);
|
||||
+ static bool constexpr SC_huh3 = one() >= 0;
|
||||
+
|
||||
+ // COMPILE OK:
|
||||
+ static bool constexpr SC_huh4 = ((one() == 0) || (one() > 0));
|
||||
+ static bool constexpr SC_huh5 = one() == 0;
|
||||
+ static bool constexpr SC_huh6 = one() > 0;
|
||||
+ static bool constexpr SC_huh7 = one_B() >= 0;
|
||||
+ static bool constexpr SC_huh8 = one() >= 1;
|
||||
+
|
||||
+ return SC_huh3;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
From 4ebec68ee3aee90ba13a4c4bc70afbb4a613468b Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:24:19 +0000
|
||||
Subject: [PATCH] PR c++/47504
|
||||
* semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
|
||||
the conversion set TREE_OVERFLOW.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171664 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index d23effe..5fe1414 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -7030,6 +7030,11 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t,
|
||||
conversion. */
|
||||
return fold (t);
|
||||
r = fold_build1 (TREE_CODE (t), to, op);
|
||||
+ /* Conversion of an out-of-range value has implementation-defined
|
||||
+ behavior; the language considers it different from arithmetic
|
||||
+ overflow, which is undefined. */
|
||||
+ if (TREE_OVERFLOW_P (r) && !TREE_OVERFLOW_P (op))
|
||||
+ TREE_OVERFLOW (r) = false;
|
||||
}
|
||||
break;
|
||||
|
||||
index 598cae6..2d614ec 100644
|
||||
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C
|
||||
@@ -44,5 +44,4 @@ extern template struct A3<int, 510>;
|
||||
|
||||
// Use.
|
||||
A3<int, 1111> a31;
|
||||
-// FIXME should this be an error?
|
||||
A3<char, 9999> a32; // { dg-warning "overflow" }
|
||||
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C
|
||||
new file mode 100644
|
||||
index 0000000..5d5749c
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C
|
||||
@@ -0,0 +1,8 @@
|
||||
+// PR c++/47504
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+char constexpr sub(char arg)
|
||||
+{ return char(arg - char(1)); }
|
||||
+
|
||||
+int main()
|
||||
+{ static char constexpr m = sub(-1); }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
From 3a987d8e4a8c885fe7fc54595ebdd82d5291e1e7 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:24:30 +0000
|
||||
Subject: [PATCH] * except.c (build_noexcept_spec): Call cxx_constant_value after
|
||||
converting to bool.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171665 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index c05e507..a814d67 100644
|
||||
--- a/gcc/cp/except.c
|
||||
+++ b/gcc/cp/except.c
|
||||
@@ -1203,10 +1203,10 @@ build_noexcept_spec (tree expr, int complain)
|
||||
it until instantiation. */
|
||||
if (!processing_template_decl)
|
||||
{
|
||||
- expr = cxx_constant_value (expr);
|
||||
expr = perform_implicit_conversion_flags (boolean_type_node, expr,
|
||||
complain,
|
||||
LOOKUP_NORMAL);
|
||||
+ expr = cxx_constant_value (expr);
|
||||
}
|
||||
if (expr == boolean_true_node)
|
||||
return noexcept_true_spec;
|
||||
new file mode 100644
|
||||
index 0000000..7bf961b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept5.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+struct booleable {
|
||||
+ bool data;
|
||||
+ constexpr explicit operator bool() { return data; }
|
||||
+};
|
||||
+
|
||||
+constexpr booleable truthy_func() { return {true}; }
|
||||
+
|
||||
+void funky() noexcept(truthy_func()) {}
|
||||
+
|
||||
+int main() {
|
||||
+ funky();
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,181 +0,0 @@
|
|||
From 21e7558c6e06c35620e80478f4e6b5ccd1c78aa9 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:24:42 +0000
|
||||
Subject: [PATCH] c-family/
|
||||
* c.opt (fconstexpr-depth): New option.
|
||||
cp/
|
||||
* semantics.c (push_cx_call_context): Return bool.
|
||||
(cxx_eval_call_expression): Handle excess depth.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171666 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index fe746e2..4c4727f 100644
|
||||
--- a/gcc/c-family/c.opt
|
||||
+++ b/gcc/c-family/c.opt
|
||||
@@ -719,6 +719,10 @@ fconstant-string-class=
|
||||
ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
|
||||
-fconst-string-class=<name> Use class <name> for constant strings
|
||||
|
||||
+fconstexpr-depth=
|
||||
+C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
|
||||
+-fconstexpr-depth=<number> Specify maximum constexpr recursion depth
|
||||
+
|
||||
fdeduce-init-list
|
||||
C++ ObjC++ Var(flag_deduce_init_list) Init(1)
|
||||
-fno-deduce-init-list disable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list
|
||||
index 5fe1414..3213483 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -5922,17 +5922,21 @@ cxx_bind_parameters_in_call (const constexpr_call *old_call, tree t,
|
||||
/* Variables and functions to manage constexpr call expansion context.
|
||||
These do not need to be marked for PCH or GC. */
|
||||
|
||||
+/* FIXME remember and print actual constant arguments. */
|
||||
static VEC(tree,heap) *call_stack = NULL;
|
||||
static int call_stack_tick;
|
||||
static int last_cx_error_tick;
|
||||
|
||||
-static void
|
||||
+static bool
|
||||
push_cx_call_context (tree call)
|
||||
{
|
||||
++call_stack_tick;
|
||||
if (!EXPR_HAS_LOCATION (call))
|
||||
SET_EXPR_LOCATION (call, input_location);
|
||||
VEC_safe_push (tree, heap, call_stack, call);
|
||||
+ if (VEC_length (tree, call_stack) > (unsigned) max_constexpr_depth)
|
||||
+ return false;
|
||||
+ return true;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5967,6 +5971,9 @@ cxx_eval_call_expression (const constexpr_call *old_call, tree t,
|
||||
tree result;
|
||||
constexpr_call new_call = { NULL, NULL, NULL, 0 };
|
||||
constexpr_call **slot;
|
||||
+ constexpr_call *entry;
|
||||
+ bool depth_ok;
|
||||
+
|
||||
if (TREE_CODE (fun) != FUNCTION_DECL)
|
||||
{
|
||||
/* Might be a constexpr function pointer. */
|
||||
@@ -6029,7 +6036,7 @@ cxx_eval_call_expression (const constexpr_call *old_call, tree t,
|
||||
if (*non_constant_p)
|
||||
return t;
|
||||
|
||||
- push_cx_call_context (t);
|
||||
+ depth_ok = push_cx_call_context (t);
|
||||
|
||||
new_call.hash
|
||||
= iterative_hash_template_arg (new_call.bindings,
|
||||
@@ -6039,37 +6046,43 @@ cxx_eval_call_expression (const constexpr_call *old_call, tree t,
|
||||
maybe_initialize_constexpr_call_table ();
|
||||
slot = (constexpr_call **)
|
||||
htab_find_slot (constexpr_call_table, &new_call, INSERT);
|
||||
- if (*slot != NULL)
|
||||
- {
|
||||
- /* Calls which are in progress have their result set to NULL
|
||||
- so that we can detect circular dependencies. */
|
||||
- if ((*slot)->result == NULL)
|
||||
- {
|
||||
- if (!allow_non_constant)
|
||||
- error ("call has circular dependency");
|
||||
- (*slot)->result = result = error_mark_node;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- result = (*slot)->result;
|
||||
- if (result == error_mark_node && !allow_non_constant)
|
||||
- /* Re-evaluate to get the error. */
|
||||
- cxx_eval_constant_expression (&new_call, new_call.fundef->body,
|
||||
- allow_non_constant, addr,
|
||||
- non_constant_p);
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
+ entry = *slot;
|
||||
+ if (entry == NULL)
|
||||
{
|
||||
/* We need to keep a pointer to the entry, not just the slot, as the
|
||||
slot can move in the call to cxx_eval_builtin_function_call. */
|
||||
- constexpr_call *entry = ggc_alloc_constexpr_call ();
|
||||
+ *slot = entry = ggc_alloc_constexpr_call ();
|
||||
*entry = new_call;
|
||||
- *slot = entry;
|
||||
- result
|
||||
- = cxx_eval_constant_expression (&new_call, new_call.fundef->body,
|
||||
- allow_non_constant, addr,
|
||||
- non_constant_p);
|
||||
+ }
|
||||
+ /* Calls which are in progress have their result set to NULL
|
||||
+ so that we can detect circular dependencies. */
|
||||
+ else if (entry->result == NULL)
|
||||
+ {
|
||||
+ if (!allow_non_constant)
|
||||
+ error ("call has circular dependency");
|
||||
+ *non_constant_p = true;
|
||||
+ entry->result = result = error_mark_node;
|
||||
+ }
|
||||
+
|
||||
+ if (!depth_ok)
|
||||
+ {
|
||||
+ if (!allow_non_constant)
|
||||
+ error ("constexpr evaluation depth exceeds maximum of %d (use "
|
||||
+ "-fconstexpr-depth= to increase the maximum)",
|
||||
+ max_constexpr_depth);
|
||||
+ *non_constant_p = true;
|
||||
+ entry->result = result = error_mark_node;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ result = entry->result;
|
||||
+ if (!result || (result == error_mark_node && !allow_non_constant))
|
||||
+ result = (cxx_eval_constant_expression
|
||||
+ (&new_call, new_call.fundef->body,
|
||||
+ allow_non_constant, addr,
|
||||
+ non_constant_p));
|
||||
+ if (result == error_mark_node)
|
||||
+ *non_constant_p = true;
|
||||
if (*non_constant_p)
|
||||
entry->result = result = error_mark_node;
|
||||
else
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index 5478f79..4bcf83a 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -181,7 +181,7 @@ in the following sections.
|
||||
@item C++ Language Options
|
||||
@xref{C++ Dialect Options,,Options Controlling C++ Dialect}.
|
||||
@gccoptlist{-fabi-version=@var{n} -fno-access-control -fcheck-new @gol
|
||||
--fconserve-space -ffriend-injection @gol
|
||||
+-fconserve-space -fconstexpr-depth=@var{n} -ffriend-injection @gol
|
||||
-fno-elide-constructors @gol
|
||||
-fno-enforce-eh-specs @gol
|
||||
-ffor-scope -fno-for-scope -fno-gnu-keywords @gol
|
||||
@@ -1881,6 +1881,13 @@ two definitions were merged.
|
||||
This option is no longer useful on most targets, now that support has
|
||||
been added for putting variables into BSS without making them common.
|
||||
|
||||
+@item -fconstexpr-depth=@var{n}
|
||||
+@opindex fconstexpr-depth
|
||||
+Set the maximum nested evaluation depth for C++0x constexpr functions
|
||||
+to @var{n}. A limit is needed to detect endless recursion during
|
||||
+constant expression evaluation. The minimum specified by the standard
|
||||
+is 512.
|
||||
+
|
||||
@item -fno-deduce-init-list
|
||||
@opindex fno-deduce-init-list
|
||||
Disable deduction of a template type parameter as
|
||||
new file mode 100644
|
||||
index 0000000..2f9b488
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C
|
||||
@@ -0,0 +1,5 @@
|
||||
+// Test that we catch excessive recursion.
|
||||
+// { dg-options "-std=c++0x -fconstexpr-depth=5" }
|
||||
+// { dg-prune-output "in constexpr expansion" }
|
||||
+constexpr int f (int i) { return f (i-1); }
|
||||
+constexpr int i = f(42); // { dg-error "constexpr evaluation depth" }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
From 87e73453e8135e72f592c1d7c84da942e7a1e308 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:24:59 +0000
|
||||
Subject: [PATCH] * decl2.c (cp_check_const_attributes): New.
|
||||
(cplus_decl_attributes): Call cp_check_const_attributes.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171667 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index eb5d4f5..f62f913 100644
|
||||
--- a/gcc/cp/decl2.c
|
||||
+++ b/gcc/cp/decl2.c
|
||||
@@ -1264,6 +1264,25 @@ cp_reconstruct_complex_type (tree type, tree bottom)
|
||||
return cp_build_qualified_type (outer, cp_type_quals (type));
|
||||
}
|
||||
|
||||
+/* Replaces any constexpr expression that may be into the attributes
|
||||
+ arguments with their reduced value. */
|
||||
+
|
||||
+static void
|
||||
+cp_check_const_attributes (tree attributes)
|
||||
+{
|
||||
+ tree attr;
|
||||
+ for (attr = attributes; attr; attr = TREE_CHAIN (attr))
|
||||
+ {
|
||||
+ tree arg;
|
||||
+ for (arg = TREE_VALUE (attr); arg; arg = TREE_CHAIN (arg))
|
||||
+ {
|
||||
+ tree expr = TREE_VALUE (arg);
|
||||
+ if (EXPR_P (expr))
|
||||
+ TREE_VALUE (arg) = maybe_constant_value (expr);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* Like decl_attributes, but handle C++ complexity. */
|
||||
|
||||
void
|
||||
@@ -1284,6 +1303,8 @@ cplus_decl_attributes (tree *decl, tree attributes, int flags)
|
||||
return;
|
||||
}
|
||||
|
||||
+ cp_check_const_attributes (attributes);
|
||||
+
|
||||
if (TREE_CODE (*decl) == TEMPLATE_DECL)
|
||||
decl = &DECL_TEMPLATE_RESULT (*decl);
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..ac85c07
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute.C
|
||||
@@ -0,0 +1,63 @@
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+//A few constexpr's
|
||||
+constexpr int foo() { return __alignof__(int); }
|
||||
+
|
||||
+template<typename T>
|
||||
+constexpr int fooT() { return __alignof__(T); }
|
||||
+
|
||||
+template<int N>
|
||||
+constexpr int fooN() { return N; }
|
||||
+
|
||||
+//Now the attributes
|
||||
+
|
||||
+//with normal variables,
|
||||
+int a __attribute__((aligned(foo())));
|
||||
+int b __attribute__((aligned(fooT<int>())));
|
||||
+int c __attribute__((aligned(fooN<__alignof__(int)>())));
|
||||
+
|
||||
+//with variables inside a template,
|
||||
+template <typename T>
|
||||
+void fun()
|
||||
+{
|
||||
+ T a __attribute__((aligned(foo())));
|
||||
+ T b __attribute__((aligned(fooT<T>())));
|
||||
+ T c __attribute__((aligned(fooN<__alignof__(T)>())));
|
||||
+ T d __attribute__((aligned(fooT<int>())));
|
||||
+ T e __attribute__((aligned(fooN<__alignof__(int)>())));
|
||||
+}
|
||||
+
|
||||
+//instantiate it,
|
||||
+void bar()
|
||||
+{
|
||||
+ fun<int>();
|
||||
+}
|
||||
+
|
||||
+//with classes
|
||||
+struct __attribute__((aligned(foo()))) S0
|
||||
+{
|
||||
+ char dummy;
|
||||
+};
|
||||
+S0 s0;
|
||||
+
|
||||
+struct __attribute__((aligned(fooT<int>()))) S1
|
||||
+{
|
||||
+ char dummy;
|
||||
+};
|
||||
+S1 s1;
|
||||
+
|
||||
+//and class templates
|
||||
+template <typename T>
|
||||
+struct __attribute__((aligned(foo()))) S2
|
||||
+{
|
||||
+ char dummy;
|
||||
+};
|
||||
+
|
||||
+S2<int> s2;
|
||||
+
|
||||
+template <typename T>
|
||||
+struct __attribute__((aligned(fooT<T>()))) S3
|
||||
+{
|
||||
+ char dummy;
|
||||
+};
|
||||
+S3<int> s3;
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
From c68e41052387396cba4a066d8e9658dc2011baf0 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:25:10 +0000
|
||||
Subject: [PATCH] Core 1148
|
||||
* typeck.c (check_return_expr): Fix conditions for setting
|
||||
LOOKUP_PREFER_RVALUE.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171668 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 0e8a6d7..03aa49e 100644
|
||||
--- a/gcc/cp/typeck.c
|
||||
+++ b/gcc/cp/typeck.c
|
||||
@@ -7760,12 +7760,19 @@ check_return_expr (tree retval, bool *no_warning)
|
||||
|
||||
/* Under C++0x [12.8/16 class.copy], a returned lvalue is sometimes
|
||||
treated as an rvalue for the purposes of overload resolution to
|
||||
- favor move constructors over copy constructors. */
|
||||
- if ((cxx_dialect != cxx98)
|
||||
- && named_return_value_okay_p
|
||||
- /* The variable must not have the `volatile' qualifier. */
|
||||
- && !CP_TYPE_VOLATILE_P (TREE_TYPE (retval))
|
||||
- /* The return type must be a class type. */
|
||||
+ favor move constructors over copy constructors.
|
||||
+
|
||||
+ Note that these conditions are similar to, but not as strict as,
|
||||
+ the conditions for the named return value optimization. */
|
||||
+ if ((cxx_dialect != cxx98)
|
||||
+ && (TREE_CODE (retval) == VAR_DECL
|
||||
+ || TREE_CODE (retval) == PARM_DECL)
|
||||
+ && DECL_CONTEXT (retval) == current_function_decl
|
||||
+ && !TREE_STATIC (retval)
|
||||
+ && same_type_p ((TYPE_MAIN_VARIANT (TREE_TYPE (retval))),
|
||||
+ (TYPE_MAIN_VARIANT
|
||||
+ (TREE_TYPE (TREE_TYPE (current_function_decl)))))
|
||||
+ /* This is only interesting for class type. */
|
||||
&& CLASS_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl))))
|
||||
flags = flags | LOOKUP_PREFER_RVALUE;
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..216b1b5
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/elision2.C
|
||||
@@ -0,0 +1,13 @@
|
||||
+// Core 1148: should be able to move from value parameter on return
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ A(const A&) = delete;
|
||||
+ A(A&&);
|
||||
+};
|
||||
+
|
||||
+A f (A a)
|
||||
+{
|
||||
+ return a;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
From 8d72f0bd42615d92c0db226238694eedb52914d3 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:25:22 +0000
|
||||
Subject: [PATCH] PR c++/48313
|
||||
* pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
|
||||
from overloaded function.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171669 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 95b82ee..2e18588 100644
|
||||
--- a/gcc/cp/pt.c
|
||||
+++ b/gcc/cp/pt.c
|
||||
@@ -13936,7 +13936,10 @@ maybe_adjust_types_for_deduction (unification_kind_t strict,
|
||||
&& TYPE_REF_IS_RVALUE (*parm)
|
||||
&& TREE_CODE (TREE_TYPE (*parm)) == TEMPLATE_TYPE_PARM
|
||||
&& cp_type_quals (TREE_TYPE (*parm)) == TYPE_UNQUALIFIED
|
||||
- && arg_expr && real_lvalue_p (arg_expr))
|
||||
+ && (arg_expr ? real_lvalue_p (arg_expr)
|
||||
+ /* try_one_overload doesn't provide an arg_expr, but
|
||||
+ functions are always lvalues. */
|
||||
+ : TREE_CODE (*arg) == FUNCTION_TYPE))
|
||||
*arg = build_reference_type (*arg);
|
||||
|
||||
/* [temp.deduct.call]
|
||||
new file mode 100644
|
||||
index 0000000..160296f
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C
|
||||
@@ -0,0 +1,18 @@
|
||||
+// PR c++/48313
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+template<typename F>
|
||||
+void f(F&&) { }
|
||||
+
|
||||
+void g() { }
|
||||
+
|
||||
+template<typename T> void h() { }
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ f( g ); // OK
|
||||
+ void (&p)() = h<int>;
|
||||
+ f( p ); // OK
|
||||
+ f( h<int> ); // ???
|
||||
+}
|
||||
+
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
From d1f71a5193dd2b3debd551f3dc0e0d237acf7e81 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:25:37 +0000
|
||||
Subject: [PATCH] PR c++/47999
|
||||
* semantics.c (finish_call_expr): Preserve reference semantics
|
||||
in templates.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171670 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 3213483..23bb021 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -2150,11 +2150,14 @@ finish_call_expr (tree fn, VEC(tree,gc) **args, bool disallow_virtual,
|
||||
/* A call where the function is unknown. */
|
||||
result = cp_build_function_call_vec (fn, args, complain);
|
||||
|
||||
- if (processing_template_decl)
|
||||
+ if (processing_template_decl && result != error_mark_node)
|
||||
{
|
||||
+ if (TREE_CODE (result) == INDIRECT_REF)
|
||||
+ result = TREE_OPERAND (result, 0);
|
||||
result = build_call_vec (TREE_TYPE (result), orig_fn, orig_args);
|
||||
KOENIG_LOOKUP_P (result) = koenig_p;
|
||||
release_tree_vector (orig_args);
|
||||
+ result = convert_from_reference (result);
|
||||
}
|
||||
|
||||
return result;
|
||||
new file mode 100644
|
||||
index 0000000..66630e5
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/auto22.C
|
||||
@@ -0,0 +1,21 @@
|
||||
+// PR c++/47999
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+int& identity(int& i)
|
||||
+{
|
||||
+ return i;
|
||||
+}
|
||||
+
|
||||
+// In a function template, auto type deduction works incorrectly.
|
||||
+template <typename = void>
|
||||
+void f()
|
||||
+{
|
||||
+ int i = 0;
|
||||
+ auto&& x = identity(i); // Type of x should be `int&`, but it is `int&&`.
|
||||
+}
|
||||
+
|
||||
+int main (int argc, char* argv[])
|
||||
+{
|
||||
+ f();
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
From 6ec20c02d4514be339f0112d793794abf60451a7 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:25:51 +0000
|
||||
Subject: [PATCH] * pt.c (build_non_dependent_expr): Keep dereferences outside the
|
||||
NON_DEPENDENT_EXPR.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171671 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 2e18588..d649628 100644
|
||||
--- a/gcc/cp/pt.c
|
||||
+++ b/gcc/cp/pt.c
|
||||
@@ -18851,24 +18851,17 @@ build_non_dependent_expr (tree expr)
|
||||
TREE_OPERAND (expr, 0),
|
||||
build_non_dependent_expr (TREE_OPERAND (expr, 1)));
|
||||
|
||||
+ /* Keep dereferences outside the NON_DEPENDENT_EXPR so lvalue_kind
|
||||
+ doesn't need to look inside. */
|
||||
+ if (TREE_CODE (expr) == INDIRECT_REF && REFERENCE_REF_P (expr))
|
||||
+ return convert_from_reference (build_non_dependent_expr
|
||||
+ (TREE_OPERAND (expr, 0)));
|
||||
+
|
||||
/* If the type is unknown, it can't really be non-dependent */
|
||||
gcc_assert (TREE_TYPE (expr) != unknown_type_node);
|
||||
|
||||
- /* Otherwise, build a NON_DEPENDENT_EXPR.
|
||||
-
|
||||
- REFERENCE_TYPEs are not stripped for expressions in templates
|
||||
- because doing so would play havoc with mangling. Consider, for
|
||||
- example:
|
||||
-
|
||||
- template <typename T> void f<T& g>() { g(); }
|
||||
-
|
||||
- In the body of "f", the expression for "g" will have
|
||||
- REFERENCE_TYPE, even though the standard says that it should
|
||||
- not. The reason is that we must preserve the syntactic form of
|
||||
- the expression so that mangling (say) "f<g>" inside the body of
|
||||
- "f" works out correctly. Therefore, the REFERENCE_TYPE is
|
||||
- stripped here. */
|
||||
- return build1 (NON_DEPENDENT_EXPR, non_reference (TREE_TYPE (expr)), expr);
|
||||
+ /* Otherwise, build a NON_DEPENDENT_EXPR. */
|
||||
+ return build1 (NON_DEPENDENT_EXPR, TREE_TYPE (expr), expr);
|
||||
}
|
||||
|
||||
/* ARGS is a vector of expressions as arguments to a function call.
|
||||
new file mode 100644
|
||||
index 0000000..12e363a
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/move1.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+// { dg-options "-std=c++0x -pedantic-errors" }
|
||||
+
|
||||
+#include <utility>
|
||||
+
|
||||
+class A { };
|
||||
+
|
||||
+static void g ( A && ) { }
|
||||
+
|
||||
+template < class T > class B {
|
||||
+public:
|
||||
+ void f ( ) {
|
||||
+ A a;
|
||||
+ g ( std :: move ( a ) );
|
||||
+ }
|
||||
+};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
From af19d0c50df96adb55baaf54026ad82a9d256868 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:26:00 +0000
|
||||
Subject: [PATCH] * call.c (reference_binding): Allow direct binding to an array
|
||||
rvalue.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171672 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ac625a0..2ff3745 100644
|
||||
--- a/gcc/cp/call.c
|
||||
+++ b/gcc/cp/call.c
|
||||
@@ -1429,7 +1429,9 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
|
||||
|| (((CP_TYPE_CONST_NON_VOLATILE_P (to)
|
||||
&& !(flags & LOOKUP_NO_TEMP_BIND))
|
||||
|| TYPE_REF_IS_RVALUE (rto))
|
||||
- && (CLASS_TYPE_P (from) || (expr && lvalue_p (expr))))))
|
||||
+ && (CLASS_TYPE_P (from)
|
||||
+ || TREE_CODE (from) == ARRAY_TYPE
|
||||
+ || (expr && lvalue_p (expr))))))
|
||||
{
|
||||
/* [dcl.init.ref]
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..25113d7
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C
|
||||
@@ -0,0 +1,5 @@
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+typedef int IRT[2];
|
||||
+
|
||||
+const IRT& ir = IRT{1,2};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
From 1370bfdaf3735fc1038436cfc86b7cfe43d3eaf0 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:26:10 +0000
|
||||
Subject: [PATCH] Core 1232
|
||||
* call.c (build_array_conv): New.
|
||||
(implicit_conversion): Use it.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171673 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 2ff3745..c84e6fc 100644
|
||||
--- a/gcc/cp/call.c
|
||||
+++ b/gcc/cp/call.c
|
||||
@@ -801,6 +801,53 @@ build_aggr_conv (tree type, tree ctor, int flags)
|
||||
return c;
|
||||
}
|
||||
|
||||
+/* Represent a conversion from CTOR, a braced-init-list, to TYPE, an
|
||||
+ array type, if such a conversion is possible. */
|
||||
+
|
||||
+static conversion *
|
||||
+build_array_conv (tree type, tree ctor, int flags)
|
||||
+{
|
||||
+ conversion *c;
|
||||
+ unsigned HOST_WIDE_INT len = CONSTRUCTOR_NELTS (ctor);
|
||||
+ tree elttype = TREE_TYPE (type);
|
||||
+ unsigned i;
|
||||
+ tree val;
|
||||
+ bool bad = false;
|
||||
+ bool user = false;
|
||||
+ enum conversion_rank rank = cr_exact;
|
||||
+
|
||||
+ if (TYPE_DOMAIN (type))
|
||||
+ {
|
||||
+ unsigned HOST_WIDE_INT alen = tree_low_cst (array_type_nelts_top (type), 1);
|
||||
+ if (alen < len)
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
|
||||
+ {
|
||||
+ conversion *sub
|
||||
+ = implicit_conversion (elttype, TREE_TYPE (val), val,
|
||||
+ false, flags);
|
||||
+ if (sub == NULL)
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (sub->rank > rank)
|
||||
+ rank = sub->rank;
|
||||
+ if (sub->user_conv_p)
|
||||
+ user = true;
|
||||
+ if (sub->bad_p)
|
||||
+ bad = true;
|
||||
+ }
|
||||
+
|
||||
+ c = alloc_conversion (ck_aggr);
|
||||
+ c->type = type;
|
||||
+ c->rank = rank;
|
||||
+ c->user_conv_p = user;
|
||||
+ c->bad_p = bad;
|
||||
+ c->u.next = NULL;
|
||||
+ return c;
|
||||
+}
|
||||
+
|
||||
/* Build a representation of the identity conversion from EXPR to
|
||||
itself. The TYPE should match the type of EXPR, if EXPR is non-NULL. */
|
||||
|
||||
@@ -1623,6 +1670,8 @@ implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
|
||||
return conv;
|
||||
}
|
||||
}
|
||||
+ else if (TREE_CODE (to) == ARRAY_TYPE)
|
||||
+ return build_array_conv (to, expr, flags);
|
||||
}
|
||||
|
||||
if (expr != NULL_TREE
|
||||
new file mode 100644
|
||||
index 0000000..19eec33
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-array2.C
|
||||
@@ -0,0 +1,12 @@
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+typedef int IA[2];
|
||||
+typedef double DA[2];
|
||||
+
|
||||
+void f(const IA&) { }
|
||||
+void f(const DA&);
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ f({1,2});
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
From 7ca62e4f7e0e27a4282dc14e5b89c389d5c194bb Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:26:21 +0000
|
||||
Subject: [PATCH] * semantics.c (is_valid_constexpr_fn): Specify input location.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171674 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 23bb021..a41a1d5 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -5390,8 +5390,8 @@ is_valid_constexpr_fn (tree fun, bool complain)
|
||||
{
|
||||
ret = false;
|
||||
if (complain)
|
||||
- error ("invalid type for parameter %q#D of constexpr function",
|
||||
- parm);
|
||||
+ error ("invalid type for parameter %d of constexpr "
|
||||
+ "function %q+#D", DECL_PARM_INDEX (parm), fun);
|
||||
}
|
||||
|
||||
if (!DECL_CONSTRUCTOR_P (fun))
|
||||
@@ -5401,7 +5401,7 @@ is_valid_constexpr_fn (tree fun, bool complain)
|
||||
{
|
||||
ret = false;
|
||||
if (complain)
|
||||
- error ("invalid return type %qT of constexpr function %qD",
|
||||
+ error ("invalid return type %qT of constexpr function %q+D",
|
||||
rettype, fun);
|
||||
}
|
||||
|
||||
@@ -5411,7 +5411,7 @@ is_valid_constexpr_fn (tree fun, bool complain)
|
||||
{
|
||||
ret = false;
|
||||
if (complain)
|
||||
- error ("enclosing class of %q#D is not a literal type", fun);
|
||||
+ error ("enclosing class of %q+#D is not a literal type", fun);
|
||||
}
|
||||
}
|
||||
|
||||
index a3706d6..183d3f7 100644
|
||||
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
|
||||
@@ -1,12 +1,11 @@
|
||||
// Test that we explain why a template instantiation isn't constexpr
|
||||
// { dg-options -std=c++0x }
|
||||
-// { dg-prune-output "not a constexpr function" }
|
||||
|
||||
template <class T>
|
||||
struct A
|
||||
{
|
||||
T t;
|
||||
- constexpr int f() { return 42; }
|
||||
+ constexpr int f() { return 42; } // { dg-error "enclosing class" }
|
||||
};
|
||||
|
||||
struct B { B(); operator int(); };
|
||||
@@ -14,8 +13,8 @@ struct B { B(); operator int(); };
|
||||
constexpr A<int> ai = { 42 };
|
||||
constexpr int i = ai.f();
|
||||
|
||||
-constexpr int b = A<B>().f(); // { dg-error "enclosing class" }
|
||||
+constexpr int b = A<B>().f(); // { dg-error "not a constexpr function" }
|
||||
|
||||
template <class T>
|
||||
-constexpr int f (T t) { return 42; }
|
||||
-constexpr int x = f(B()); // { dg-error "parameter" }
|
||||
+constexpr int f (T t) { return 42; } // { dg-error "parameter" }
|
||||
+constexpr int x = f(B()); // { dg-error "constexpr function" }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,102 +0,0 @@
|
|||
From d67703129d516043d4e43bdf79a17889f5abc3f7 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 14:26:33 +0000
|
||||
Subject: [PATCH] PR c++/48296
|
||||
* decl.c (cp_finish_decl): Defer validation of constexpr member
|
||||
functions.
|
||||
* class.c (finalize_literal_type_property): Validate them here.
|
||||
* semantics.c (is_valid_constexpr_fn): Don't check completeness.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171675 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 1325260..42066c3 100644
|
||||
--- a/gcc/cp/class.c
|
||||
+++ b/gcc/cp/class.c
|
||||
@@ -4547,6 +4547,8 @@ type_requires_array_cookie (tree type)
|
||||
static void
|
||||
finalize_literal_type_property (tree t)
|
||||
{
|
||||
+ tree fn;
|
||||
+
|
||||
if (cxx_dialect < cxx0x
|
||||
|| TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
|
||||
/* FIXME These constraints seem unnecessary; remove from standard.
|
||||
@@ -4557,18 +4559,10 @@ finalize_literal_type_property (tree t)
|
||||
&& !TYPE_HAS_CONSTEXPR_CTOR (t))
|
||||
CLASSTYPE_LITERAL_P (t) = false;
|
||||
|
||||
- if (!CLASSTYPE_LITERAL_P (t) && !CLASSTYPE_TEMPLATE_INSTANTIATION (t))
|
||||
- {
|
||||
- tree fn;
|
||||
- for (fn = TYPE_METHODS (t); fn; fn = DECL_CHAIN (fn))
|
||||
- if (DECL_DECLARED_CONSTEXPR_P (fn)
|
||||
- && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
|
||||
- && !DECL_CONSTRUCTOR_P (fn))
|
||||
- {
|
||||
- error ("enclosing class of %q+D is not a literal type", fn);
|
||||
- DECL_DECLARED_CONSTEXPR_P (fn) = false;
|
||||
- }
|
||||
- }
|
||||
+ for (fn = TYPE_METHODS (t); fn; fn = DECL_CHAIN (fn))
|
||||
+ if (DECL_DECLARED_CONSTEXPR_P (fn)
|
||||
+ && TREE_CODE (fn) != TEMPLATE_DECL)
|
||||
+ validate_constexpr_fundecl (fn);
|
||||
}
|
||||
|
||||
/* Check the validity of the bases and members declared in T. Add any
|
||||
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
|
||||
index 3139ad8..fbd6c97 100644
|
||||
--- a/gcc/cp/decl.c
|
||||
+++ b/gcc/cp/decl.c
|
||||
@@ -5793,7 +5793,10 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
|
||||
}
|
||||
}
|
||||
|
||||
- if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||
+ if (TREE_CODE (decl) == FUNCTION_DECL
|
||||
+ /* For members, defer until finalize_literal_type_property. */
|
||||
+ && (!DECL_CLASS_SCOPE_P (decl)
|
||||
+ || !TYPE_BEING_DEFINED (DECL_CONTEXT (decl))))
|
||||
validate_constexpr_fundecl (decl);
|
||||
|
||||
else if (!ensure_literal_type_for_constexpr_object (decl))
|
||||
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
|
||||
index a41a1d5..9926d26 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -5406,8 +5406,7 @@ is_valid_constexpr_fn (tree fun, bool complain)
|
||||
}
|
||||
|
||||
if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fun)
|
||||
- && COMPLETE_TYPE_P (DECL_CONTEXT (fun))
|
||||
- && !valid_type_in_constexpr_fundecl_p (DECL_CONTEXT (fun)))
|
||||
+ && !CLASSTYPE_LITERAL_P (DECL_CONTEXT (fun)))
|
||||
{
|
||||
ret = false;
|
||||
if (complain)
|
||||
new file mode 100644
|
||||
index 0000000..4646f82
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
|
||||
@@ -0,0 +1,18 @@
|
||||
+// PR c++/48296
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+struct X
|
||||
+{
|
||||
+ constexpr X() { }
|
||||
+ constexpr X f(X x) { return x; }
|
||||
+ constexpr X g(X x);
|
||||
+};
|
||||
+
|
||||
+constexpr X X::g(X x) { return x; }
|
||||
+
|
||||
+struct Y
|
||||
+{
|
||||
+ Y() { }
|
||||
+ constexpr Y f(Y y); // { dg-error "constexpr" }
|
||||
+ static constexpr Y g(Y y); // { dg-error "constexpr" }
|
||||
+};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From 709a81571cc3f418f51f95ed9291b4f2fabc577c Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 16:07:15 +0000
|
||||
Subject: [PATCH] PR c++/48166
|
||||
* decl.c (revert_static_member_fn): Strip function-cv-quals.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171679 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index fbd6c97..41beef3 100644
|
||||
--- a/gcc/cp/decl.c
|
||||
+++ b/gcc/cp/decl.c
|
||||
@@ -13342,10 +13342,14 @@ static_fn_type (tree memfntype)
|
||||
void
|
||||
revert_static_member_fn (tree decl)
|
||||
{
|
||||
- TREE_TYPE (decl) = static_fn_type (decl);
|
||||
+ tree stype = static_fn_type (decl);
|
||||
|
||||
- if (cp_type_quals (TREE_TYPE (decl)) != TYPE_UNQUALIFIED)
|
||||
- error ("static member function %q#D declared with type qualifiers", decl);
|
||||
+ if (type_memfn_quals (stype) != TYPE_UNQUALIFIED)
|
||||
+ {
|
||||
+ error ("static member function %q#D declared with type qualifiers", decl);
|
||||
+ stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED);
|
||||
+ }
|
||||
+ TREE_TYPE (decl) = stype;
|
||||
|
||||
if (DECL_ARGUMENTS (decl))
|
||||
DECL_ARGUMENTS (decl) = DECL_CHAIN (DECL_ARGUMENTS (decl));
|
||||
new file mode 100644
|
||||
index 0000000..ce8af7b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/parse/memfnquals1.C
|
||||
@@ -0,0 +1,6 @@
|
||||
+// PR c++/48166
|
||||
+
|
||||
+struct foo {
|
||||
+ static void func ();
|
||||
+};
|
||||
+void foo::func () const {} // { dg-error "type qualifiers" }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,178 +0,0 @@
|
|||
From 14fb9260e8c94249305dba567e7e242ac3d30fa7 Mon Sep 17 00:00:00 2001
|
||||
From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 18:24:02 +0000
|
||||
Subject: [PATCH] * config/alpha/alpha.c (alpha_sr_alias_set): Don't define.
|
||||
(alpha_option_override): Don't set alpha_sr_alias_set.
|
||||
(emit_frame_store_1): Use gen_frame_mem rather than calling
|
||||
set_mem_alias_set.
|
||||
(alpha_expand_epilogue): Ditto.
|
||||
(unicosmk_gen_dsib): Ditto.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171686 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index c1036b4..3da7fa0 100644
|
||||
index 76ab31a..b41404e 100644
|
||||
--- a/gcc/config/alpha/alpha.c
|
||||
+++ b/gcc/config/alpha/alpha.c
|
||||
@@ -94,10 +94,6 @@ int alpha_memory_latency = 3;
|
||||
|
||||
static int alpha_function_needs_gp;
|
||||
|
||||
-/* The alias set for prologue/epilogue register save/restore. */
|
||||
-
|
||||
-static GTY(()) alias_set_type alpha_sr_alias_set;
|
||||
-
|
||||
/* The assembler name of the current function. */
|
||||
|
||||
static const char *alpha_fnname;
|
||||
@@ -510,9 +506,6 @@ alpha_option_override (void)
|
||||
if (align_functions <= 0)
|
||||
align_functions = 16;
|
||||
|
||||
- /* Acquire a unique set number for our register saves and restores. */
|
||||
- alpha_sr_alias_set = new_alias_set ();
|
||||
-
|
||||
/* Register variables and functions with the garbage collector. */
|
||||
|
||||
/* Set up function hooks. */
|
||||
@@ -7715,8 +7708,7 @@ emit_frame_store_1 (rtx value, rtx base_reg, HOST_WIDE_INT frame_bias,
|
||||
rtx addr, mem, insn;
|
||||
|
||||
addr = plus_constant (base_reg, base_ofs);
|
||||
- mem = gen_rtx_MEM (DImode, addr);
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, addr);
|
||||
|
||||
insn = emit_move_insn (mem, value);
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
@@ -8391,9 +8383,7 @@ alpha_expand_epilogue (void)
|
||||
|
||||
/* Restore registers in order, excepting a true frame pointer. */
|
||||
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (sa_reg, reg_offset));
|
||||
- if (! eh_ofs)
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (sa_reg, reg_offset));
|
||||
reg = gen_rtx_REG (DImode, REG_RA);
|
||||
emit_move_insn (reg, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, cfa_restores);
|
||||
@@ -8408,8 +8398,8 @@ alpha_expand_epilogue (void)
|
||||
fp_offset = reg_offset;
|
||||
else
|
||||
{
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant(sa_reg, reg_offset));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode,
|
||||
+ plus_constant (sa_reg, reg_offset));
|
||||
reg = gen_rtx_REG (DImode, i);
|
||||
emit_move_insn (reg, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg,
|
||||
@@ -8421,8 +8411,7 @@ alpha_expand_epilogue (void)
|
||||
for (i = 0; i < 31; ++i)
|
||||
if (fmask & (1UL << i))
|
||||
{
|
||||
- mem = gen_rtx_MEM (DFmode, plus_constant(sa_reg, reg_offset));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DFmode, plus_constant (sa_reg, reg_offset));
|
||||
reg = gen_rtx_REG (DFmode, i+32);
|
||||
emit_move_insn (reg, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, cfa_restores);
|
||||
@@ -8438,9 +8427,9 @@ alpha_expand_epilogue (void)
|
||||
for (i = 9; i < 15; i++)
|
||||
if (imask & (1UL << i))
|
||||
{
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant(hard_frame_pointer_rtx,
|
||||
- reg_offset));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode,
|
||||
+ plus_constant (hard_frame_pointer_rtx,
|
||||
+ reg_offset));
|
||||
reg = gen_rtx_REG (DImode, i);
|
||||
emit_move_insn (reg, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, cfa_restores);
|
||||
@@ -8450,9 +8439,9 @@ alpha_expand_epilogue (void)
|
||||
for (i = 2; i < 10; i++)
|
||||
if (fmask & (1UL << i))
|
||||
{
|
||||
- mem = gen_rtx_MEM (DFmode, plus_constant(hard_frame_pointer_rtx,
|
||||
- reg_offset));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DFmode,
|
||||
+ plus_constant (hard_frame_pointer_rtx,
|
||||
+ reg_offset));
|
||||
reg = gen_rtx_REG (DFmode, i+32);
|
||||
emit_move_insn (reg, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, cfa_restores);
|
||||
@@ -8460,8 +8449,7 @@ alpha_expand_epilogue (void)
|
||||
}
|
||||
|
||||
/* Restore the return address from the DSIB. */
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (hard_frame_pointer_rtx, -8));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (hard_frame_pointer_rtx, -8));
|
||||
reg = gen_rtx_REG (DImode, REG_RA);
|
||||
emit_move_insn (reg, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, cfa_restores);
|
||||
@@ -8524,9 +8512,8 @@ alpha_expand_epilogue (void)
|
||||
if (TARGET_ABI_UNICOSMK)
|
||||
{
|
||||
emit_insn (gen_blockage ());
|
||||
- mem = gen_rtx_MEM (DImode,
|
||||
- plus_constant (hard_frame_pointer_rtx, -16));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode,
|
||||
+ plus_constant (hard_frame_pointer_rtx, -16));
|
||||
emit_move_insn (hard_frame_pointer_rtx, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE,
|
||||
hard_frame_pointer_rtx, cfa_restores);
|
||||
@@ -8534,8 +8521,7 @@ alpha_expand_epilogue (void)
|
||||
else if (fp_is_frame_pointer)
|
||||
{
|
||||
emit_insn (gen_blockage ());
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (sa_reg, fp_offset));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (sa_reg, fp_offset));
|
||||
emit_move_insn (hard_frame_pointer_rtx, mem);
|
||||
cfa_restores = alloc_reg_note (REG_CFA_RESTORE,
|
||||
hard_frame_pointer_rtx, cfa_restores);
|
||||
@@ -10515,15 +10501,13 @@ unicosmk_gen_dsib (unsigned long *imaskP)
|
||||
|
||||
/* Save the return address. */
|
||||
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (stack_pointer_rtx, 56));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (stack_pointer_rtx, 56));
|
||||
FRP (emit_move_insn (mem, gen_rtx_REG (DImode, REG_RA)));
|
||||
(*imaskP) &= ~(1UL << REG_RA);
|
||||
|
||||
/* Save the old frame pointer. */
|
||||
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (stack_pointer_rtx, 48));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (stack_pointer_rtx, 48));
|
||||
FRP (emit_move_insn (mem, hard_frame_pointer_rtx));
|
||||
(*imaskP) &= ~(1UL << HARD_FRAME_POINTER_REGNUM);
|
||||
|
||||
@@ -10532,8 +10516,7 @@ unicosmk_gen_dsib (unsigned long *imaskP)
|
||||
/* Store the SSIB pointer. */
|
||||
|
||||
ssib_name = ggc_strdup (unicosmk_ssib_name ());
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (stack_pointer_rtx, 32));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (stack_pointer_rtx, 32));
|
||||
|
||||
FRP (emit_move_insn (gen_rtx_REG (DImode, 5),
|
||||
gen_rtx_SYMBOL_REF (Pmode, ssib_name)));
|
||||
@@ -10541,8 +10524,7 @@ unicosmk_gen_dsib (unsigned long *imaskP)
|
||||
|
||||
/* Save the CIW index. */
|
||||
|
||||
- mem = gen_rtx_MEM (DImode, plus_constant (stack_pointer_rtx, 24));
|
||||
- set_mem_alias_set (mem, alpha_sr_alias_set);
|
||||
+ mem = gen_frame_mem (DImode, plus_constant (stack_pointer_rtx, 24));
|
||||
FRP (emit_move_insn (mem, gen_rtx_REG (DImode, 25)));
|
||||
|
||||
emit_insn (gen_blockage ());
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
From 4af193055b0dcc204387ba06e11a053c5b55ad15 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 18:47:47 +0000
|
||||
Subject: [PATCH] PR c++/48319
|
||||
* pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171688 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index d649628..da9365f 100644
|
||||
--- a/gcc/cp/pt.c
|
||||
+++ b/gcc/cp/pt.c
|
||||
@@ -18220,6 +18220,11 @@ value_dependent_expression_p (tree expression)
|
||||
return false;
|
||||
}
|
||||
|
||||
+ case TEMPLATE_ID_EXPR:
|
||||
+ /* If a TEMPLATE_ID_EXPR involves a dependent name, it will be
|
||||
+ type-dependent. */
|
||||
+ return type_dependent_expression_p (expression);
|
||||
+
|
||||
default:
|
||||
/* A constant expression is value-dependent if any subexpression is
|
||||
value-dependent. */
|
||||
new file mode 100644
|
||||
index 0000000..1ceeeaf
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/dependent1.C
|
||||
@@ -0,0 +1,25 @@
|
||||
+// PR c++/48319
|
||||
+// { dg-options -std=c++0x }
|
||||
+// We were failing to recognize declval<_Args1> as dependent.
|
||||
+
|
||||
+template<typename Tp> Tp declval() noexcept;
|
||||
+
|
||||
+template<typename _Tp>
|
||||
+class __is_constructible_helper
|
||||
+{
|
||||
+ typedef char __one;
|
||||
+ typedef struct { char __arr[2]; } __two;
|
||||
+
|
||||
+ template<typename _Tp1, typename... _Args1>
|
||||
+ static decltype(_Tp1(declval<_Args1>()...), __one()) __test(int);
|
||||
+
|
||||
+ template<typename, typename...>
|
||||
+ static __two __test(...);
|
||||
+
|
||||
+public:
|
||||
+ static const bool __value = sizeof(__test<_Tp>(0)) == 1;
|
||||
+};
|
||||
+
|
||||
+int main() {
|
||||
+ return __is_constructible_helper<int>::__value;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
From 0d6afd28da26c4b09e1eb2b16d7a3c021fae7372 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 20:30:06 +0000
|
||||
Subject: [PATCH] PR preprocessor/48248
|
||||
* c-ppoutput.c (print): Add src_file field.
|
||||
(init_pp_output): Initialize it.
|
||||
(maybe_print_line): Don't optimize by adding up to 8 newlines
|
||||
if map->to_file and print.src_file are different file.
|
||||
(print_line): Update print.src_file.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171697 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 57ed676..9ebac42 100644
|
||||
--- a/gcc/c-family/c-ppoutput.c
|
||||
+++ b/gcc/c-family/c-ppoutput.c
|
||||
@@ -36,6 +36,7 @@ static struct
|
||||
int src_line; /* Line number currently being written. */
|
||||
unsigned char printed; /* Nonzero if something output at line. */
|
||||
bool first_time; /* pp_file_change hasn't been called yet. */
|
||||
+ const char *src_file; /* Current source file. */
|
||||
} print;
|
||||
|
||||
/* Defined and undefined macros being queued for output with -dU at
|
||||
@@ -153,6 +154,7 @@ init_pp_output (FILE *out_stream)
|
||||
print.prev = 0;
|
||||
print.outf = out_stream;
|
||||
print.first_time = 1;
|
||||
+ print.src_file = "";
|
||||
}
|
||||
|
||||
/* Writes out the preprocessed file, handling spacing and paste
|
||||
@@ -312,7 +314,9 @@ maybe_print_line (source_location src_loc)
|
||||
print.printed = 0;
|
||||
}
|
||||
|
||||
- if (src_line >= print.src_line && src_line < print.src_line + 8)
|
||||
+ if (src_line >= print.src_line
|
||||
+ && src_line < print.src_line + 8
|
||||
+ && strcmp (map->to_file, print.src_file) == 0)
|
||||
{
|
||||
while (src_line > print.src_line)
|
||||
{
|
||||
@@ -344,6 +348,7 @@ print_line (source_location src_loc, const char *special_flags)
|
||||
unsigned char *p;
|
||||
|
||||
print.src_line = SOURCE_LINE (map, src_loc);
|
||||
+ print.src_file = map->to_file;
|
||||
|
||||
/* cpp_quote_string does not nul-terminate, so we have to do it
|
||||
ourselves. */
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,803 +0,0 @@
|
|||
From e4e229cd56063482aced7df857e82512b846435d Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 29 Mar 2011 22:47:59 +0000
|
||||
Subject: [PATCH] PR debug/48253
|
||||
* dwarf2out.c (struct dw_fde_struct): Remove dw_fde_hot_section_label,
|
||||
dw_fde_hot_section_end_label, dw_fde_unlikely_section_label,
|
||||
dw_fde_unlikely_section_end_label, cold_in_std_section,
|
||||
dw_fde_switched_sections and dw_fde_switched_cold_to_hot fields.
|
||||
Add dw_fde_second_begin, dw_fde_second_end and second_in_std_section
|
||||
fields.
|
||||
(output_fde): Use dw_fde_second_{begin,end} if second is
|
||||
true, otherwise dw_fde_{begin,end}.
|
||||
(output_call_frame_info): Test dw_fde_second_begin != NULL
|
||||
instead of dw_fde_switched_sections.
|
||||
(dwarf2out_begin_prologue): Stop initializing removed dw_fde_struct
|
||||
fields, initialize new fields. Initialize in_std_section
|
||||
unconditionally from the first partition.
|
||||
(dwarf2out_end_epilogue): Don't override dw_fde_end when
|
||||
dw_fde_second_begin is non-NULL.
|
||||
(dwarf2out_switch_text_section): Stop initializing removed
|
||||
dw_fde_struct fields, initialize new fields, initialize
|
||||
also dw_fde_end here. Set dw_fde_switch_cfi even when
|
||||
dwarf2out_do_cfi_asm (). Call var_location_switch_text_section.
|
||||
(struct var_loc_list_def): Add last_before_switch field.
|
||||
(arange_table, arange_table_allocated, arange_table_in_use,
|
||||
ARANGE_TABLE_INCREMENT, add_arange): Removed.
|
||||
(size_of_aranges): Count !in_std_section and !second_in_std_section
|
||||
hunks in fdes, instead of looking at arange_table_in_use.
|
||||
(output_aranges): Add aranges_length argument, don't call
|
||||
size_of_aranges here. Instead of using aranges_table*
|
||||
emit ranges for fdes when !in_std_section resp.
|
||||
!second_in_std_section.
|
||||
(dw_loc_list): Break ranges crossing section switch.
|
||||
(convert_cfa_to_fb_loc_list): Likewise. If switched sections,
|
||||
use dw_fde_second_end instead of dw_fde_end as end of last
|
||||
range.
|
||||
(gen_subprogram_die): Don't call add_arange. Use
|
||||
dw_fde_{begin,end} for first partition and if switched
|
||||
section dw_fde_second_{begin,end} for the second.
|
||||
(var_location_switch_text_section_1,
|
||||
var_location_switch_text_section): New functions.
|
||||
(dwarf2out_begin_function): Initialize cold_text_section even
|
||||
when function_section () isn't text_section.
|
||||
(prune_unused_types): Don't walk arange_table.
|
||||
(dwarf2out_finish): Don't needlessly test
|
||||
flag_reorder_blocks_and_partition when testing cold_text_section_used.
|
||||
If info_section_emitted, call size_of_aranges and if it indicates
|
||||
non-empty .debug_aranges, call output_aranges with the computed
|
||||
size. Stop using removed dw_fde_struct fields, use
|
||||
dw_fde_{begin,end} for first partition and dw_fde_second_{begin,end}
|
||||
for second.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171702 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index b7c06e5..1e5917c 100644
|
||||
--- a/gcc/dwarf2out.c
|
||||
+++ b/gcc/dwarf2out.c
|
||||
@@ -303,10 +303,8 @@ typedef struct GTY(()) dw_fde_struct {
|
||||
const char *dw_fde_end;
|
||||
const char *dw_fde_vms_end_prologue;
|
||||
const char *dw_fde_vms_begin_epilogue;
|
||||
- const char *dw_fde_hot_section_label;
|
||||
- const char *dw_fde_hot_section_end_label;
|
||||
- const char *dw_fde_unlikely_section_label;
|
||||
- const char *dw_fde_unlikely_section_end_label;
|
||||
+ const char *dw_fde_second_begin;
|
||||
+ const char *dw_fde_second_end;
|
||||
dw_cfi_ref dw_fde_cfi;
|
||||
dw_cfi_ref dw_fde_switch_cfi; /* Last CFI before switching sections. */
|
||||
HOST_WIDE_INT stack_realignment;
|
||||
@@ -325,13 +323,9 @@ typedef struct GTY(()) dw_fde_struct {
|
||||
unsigned drap_reg_saved: 1;
|
||||
/* True iff dw_fde_begin label is in text_section or cold_text_section. */
|
||||
unsigned in_std_section : 1;
|
||||
- /* True iff dw_fde_unlikely_section_label is in text_section or
|
||||
+ /* True iff dw_fde_second_begin label is in text_section or
|
||||
cold_text_section. */
|
||||
- unsigned cold_in_std_section : 1;
|
||||
- /* True iff switched sections. */
|
||||
- unsigned dw_fde_switched_sections : 1;
|
||||
- /* True iff switching from cold to hot section. */
|
||||
- unsigned dw_fde_switched_cold_to_hot : 1;
|
||||
+ unsigned second_in_std_section : 1;
|
||||
}
|
||||
dw_fde_node;
|
||||
|
||||
@@ -3625,28 +3619,8 @@ output_fde (dw_fde_ref fde, bool for_eh, bool second,
|
||||
dw2_asm_output_offset (DWARF_OFFSET_SIZE, section_start_label,
|
||||
debug_frame_section, "FDE CIE offset");
|
||||
|
||||
- if (!fde->dw_fde_switched_sections)
|
||||
- {
|
||||
- begin = fde->dw_fde_begin;
|
||||
- end = fde->dw_fde_end;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* For the first section, prefer dw_fde_begin over
|
||||
- dw_fde_{hot,cold}_section_label, as the latter
|
||||
- might be separated from the real start of the
|
||||
- function by alignment padding. */
|
||||
- if (!second)
|
||||
- begin = fde->dw_fde_begin;
|
||||
- else if (fde->dw_fde_switched_cold_to_hot)
|
||||
- begin = fde->dw_fde_hot_section_label;
|
||||
- else
|
||||
- begin = fde->dw_fde_unlikely_section_label;
|
||||
- if (second ^ fde->dw_fde_switched_cold_to_hot)
|
||||
- end = fde->dw_fde_unlikely_section_end_label;
|
||||
- else
|
||||
- end = fde->dw_fde_hot_section_end_label;
|
||||
- }
|
||||
+ begin = second ? fde->dw_fde_second_begin : fde->dw_fde_begin;
|
||||
+ end = second ? fde->dw_fde_second_end : fde->dw_fde_end;
|
||||
|
||||
if (for_eh)
|
||||
{
|
||||
@@ -3707,7 +3681,7 @@ output_fde (dw_fde_ref fde, bool for_eh, bool second,
|
||||
/* Loop through the Call Frame Instructions associated with
|
||||
this FDE. */
|
||||
fde->dw_fde_current_label = begin;
|
||||
- if (!fde->dw_fde_switched_sections)
|
||||
+ if (fde->dw_fde_second_begin == NULL)
|
||||
for (cfi = fde->dw_fde_cfi; cfi != NULL; cfi = cfi->dw_cfi_next)
|
||||
output_cfi (cfi, fde, for_eh);
|
||||
else if (!second)
|
||||
@@ -3986,7 +3960,7 @@ output_call_frame_info (int for_eh)
|
||||
if (for_eh && !fde_needed_for_eh_p (fde))
|
||||
continue;
|
||||
|
||||
- for (k = 0; k < (fde->dw_fde_switched_sections ? 2 : 1); k++)
|
||||
+ for (k = 0; k < (fde->dw_fde_second_begin ? 2 : 1); k++)
|
||||
output_fde (fde, for_eh, k, section_start_label, fde_encoding,
|
||||
augmentation, any_lsda_needed, lsda_encoding);
|
||||
}
|
||||
@@ -4104,14 +4078,10 @@ dwarf2out_begin_prologue (unsigned int line ATTRIBUTE_UNUSED,
|
||||
fde = &fde_table[fde_table_in_use++];
|
||||
fde->decl = current_function_decl;
|
||||
fde->dw_fde_begin = dup_label;
|
||||
- fde->dw_fde_current_label = dup_label;
|
||||
- fde->dw_fde_hot_section_label = NULL;
|
||||
- fde->dw_fde_hot_section_end_label = NULL;
|
||||
- fde->dw_fde_unlikely_section_label = NULL;
|
||||
- fde->dw_fde_unlikely_section_end_label = NULL;
|
||||
- fde->dw_fde_switched_sections = 0;
|
||||
- fde->dw_fde_switched_cold_to_hot = 0;
|
||||
fde->dw_fde_end = NULL;
|
||||
+ fde->dw_fde_current_label = dup_label;
|
||||
+ fde->dw_fde_second_begin = NULL;
|
||||
+ fde->dw_fde_second_end = NULL;
|
||||
fde->dw_fde_vms_end_prologue = NULL;
|
||||
fde->dw_fde_vms_begin_epilogue = NULL;
|
||||
fde->dw_fde_cfi = NULL;
|
||||
@@ -4122,27 +4092,9 @@ dwarf2out_begin_prologue (unsigned int line ATTRIBUTE_UNUSED,
|
||||
fde->nothrow = crtl->nothrow;
|
||||
fde->drap_reg = INVALID_REGNUM;
|
||||
fde->vdrap_reg = INVALID_REGNUM;
|
||||
- if (flag_reorder_blocks_and_partition)
|
||||
- {
|
||||
- section *unlikelysec;
|
||||
- if (first_function_block_is_cold)
|
||||
- fde->in_std_section = 1;
|
||||
- else
|
||||
- fde->in_std_section
|
||||
- = (fnsec == text_section
|
||||
- || (cold_text_section && fnsec == cold_text_section));
|
||||
- unlikelysec = unlikely_text_section ();
|
||||
- fde->cold_in_std_section
|
||||
- = (unlikelysec == text_section
|
||||
- || (cold_text_section && unlikelysec == cold_text_section));
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- fde->in_std_section
|
||||
- = (fnsec == text_section
|
||||
- || (cold_text_section && fnsec == cold_text_section));
|
||||
- fde->cold_in_std_section = 0;
|
||||
- }
|
||||
+ fde->in_std_section = (fnsec == text_section
|
||||
+ || (cold_text_section && fnsec == cold_text_section));
|
||||
+ fde->second_in_std_section = 0;
|
||||
|
||||
args_size = old_args_size = 0;
|
||||
|
||||
@@ -4238,7 +4190,8 @@ dwarf2out_end_epilogue (unsigned int line ATTRIBUTE_UNUSED,
|
||||
ASM_OUTPUT_LABEL (asm_out_file, label);
|
||||
fde = current_fde ();
|
||||
gcc_assert (fde != NULL);
|
||||
- fde->dw_fde_end = xstrdup (label);
|
||||
+ if (fde->dw_fde_second_begin == NULL)
|
||||
+ fde->dw_fde_end = xstrdup (label);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -4285,20 +4238,29 @@ dwarf2out_note_section_used (void)
|
||||
cold_text_section_used = true;
|
||||
}
|
||||
|
||||
+static void var_location_switch_text_section (void);
|
||||
+
|
||||
void
|
||||
dwarf2out_switch_text_section (void)
|
||||
{
|
||||
+ section *sect;
|
||||
dw_fde_ref fde = current_fde ();
|
||||
+ dw_cfi_ref cfi;
|
||||
|
||||
- gcc_assert (cfun && fde && !fde->dw_fde_switched_sections);
|
||||
-
|
||||
- fde->dw_fde_switched_sections = 1;
|
||||
- fde->dw_fde_switched_cold_to_hot = !in_cold_section_p;
|
||||
+ gcc_assert (cfun && fde && fde->dw_fde_second_begin == NULL);
|
||||
|
||||
- fde->dw_fde_hot_section_label = crtl->subsections.hot_section_label;
|
||||
- fde->dw_fde_hot_section_end_label = crtl->subsections.hot_section_end_label;
|
||||
- fde->dw_fde_unlikely_section_label = crtl->subsections.cold_section_label;
|
||||
- fde->dw_fde_unlikely_section_end_label = crtl->subsections.cold_section_end_label;
|
||||
+ if (!in_cold_section_p)
|
||||
+ {
|
||||
+ fde->dw_fde_end = crtl->subsections.cold_section_end_label;
|
||||
+ fde->dw_fde_second_begin = crtl->subsections.hot_section_label;
|
||||
+ fde->dw_fde_second_end = crtl->subsections.hot_section_end_label;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fde->dw_fde_end = crtl->subsections.hot_section_end_label;
|
||||
+ fde->dw_fde_second_begin = crtl->subsections.cold_section_label;
|
||||
+ fde->dw_fde_second_end = crtl->subsections.cold_section_end_label;
|
||||
+ }
|
||||
have_multiple_function_sections = true;
|
||||
|
||||
/* Reset the current label on switching text sections, so that we
|
||||
@@ -4313,7 +4275,12 @@ dwarf2out_switch_text_section (void)
|
||||
fprintf (asm_out_file, "\t.cfi_endproc\n");
|
||||
|
||||
/* Now do the real section switch. */
|
||||
- switch_to_section (current_function_section ());
|
||||
+ sect = current_function_section ();
|
||||
+ switch_to_section (sect);
|
||||
+
|
||||
+ fde->second_in_std_section
|
||||
+ = (sect == text_section
|
||||
+ || (cold_text_section && sect == cold_text_section));
|
||||
|
||||
if (dwarf2out_do_cfi_asm ())
|
||||
{
|
||||
@@ -4322,16 +4289,12 @@ dwarf2out_switch_text_section (void)
|
||||
again. */
|
||||
output_cfis (fde->dw_fde_cfi, true, fde, true);
|
||||
}
|
||||
- else
|
||||
- {
|
||||
- dw_cfi_ref cfi = fde->dw_fde_cfi;
|
||||
-
|
||||
- cfi = fde->dw_fde_cfi;
|
||||
- if (cfi)
|
||||
- while (cfi->dw_cfi_next != NULL)
|
||||
- cfi = cfi->dw_cfi_next;
|
||||
- fde->dw_fde_switch_cfi = cfi;
|
||||
- }
|
||||
+ cfi = fde->dw_fde_cfi;
|
||||
+ if (cfi)
|
||||
+ while (cfi->dw_cfi_next != NULL)
|
||||
+ cfi = cfi->dw_cfi_next;
|
||||
+ fde->dw_fde_switch_cfi = cfi;
|
||||
+ var_location_switch_text_section ();
|
||||
}
|
||||
|
||||
/* And now, the subset of the debugging information support code necessary
|
||||
@@ -6110,6 +6073,11 @@ struct GTY (()) var_loc_list_def {
|
||||
Do not mark it for GC because it is marked through the chain. */
|
||||
struct var_loc_node * GTY ((skip ("%h"))) last;
|
||||
|
||||
+ /* Pointer to the last element before section switch,
|
||||
+ if NULL, either sections weren't switched or first
|
||||
+ is after section switch. */
|
||||
+ struct var_loc_node * GTY ((skip ("%h"))) last_before_switch;
|
||||
+
|
||||
/* DECL_UID of the variable decl. */
|
||||
unsigned int decl_id;
|
||||
};
|
||||
@@ -6177,19 +6145,6 @@ static GTY (()) VEC (pubname_entry, gc) * pubtype_table;
|
||||
defines/undefines (and file start/end markers). */
|
||||
static GTY (()) VEC (macinfo_entry, gc) * macinfo_table;
|
||||
|
||||
-/* Array of dies for which we should generate .debug_arange info. */
|
||||
-static GTY((length ("arange_table_allocated"))) dw_die_ref *arange_table;
|
||||
-
|
||||
-/* Number of elements currently allocated for arange_table. */
|
||||
-static GTY(()) unsigned arange_table_allocated;
|
||||
-
|
||||
-/* Number of elements in arange_table currently in use. */
|
||||
-static GTY(()) unsigned arange_table_in_use;
|
||||
-
|
||||
-/* Size (in elements) of increments by which we may expand the
|
||||
- arange_table. */
|
||||
-#define ARANGE_TABLE_INCREMENT 64
|
||||
-
|
||||
/* Array of dies for which we should generate .debug_ranges info. */
|
||||
static GTY ((length ("ranges_table_allocated"))) dw_ranges_ref ranges_table;
|
||||
|
||||
@@ -6433,8 +6388,7 @@ static void add_pubname (tree, dw_die_ref);
|
||||
static void add_pubname_string (const char *, dw_die_ref);
|
||||
static void add_pubtype (tree, dw_die_ref);
|
||||
static void output_pubnames (VEC (pubname_entry,gc) *);
|
||||
-static void add_arange (tree, dw_die_ref);
|
||||
-static void output_aranges (void);
|
||||
+static void output_aranges (unsigned long);
|
||||
static unsigned int add_ranges_num (int);
|
||||
static unsigned int add_ranges (const_tree);
|
||||
static void add_ranges_by_labels (dw_die_ref, const char *, const char *,
|
||||
@@ -10868,7 +10822,20 @@ size_of_aranges (void)
|
||||
size += 2 * DWARF2_ADDR_SIZE;
|
||||
if (cold_text_section_used)
|
||||
size += 2 * DWARF2_ADDR_SIZE;
|
||||
- size += 2 * DWARF2_ADDR_SIZE * arange_table_in_use;
|
||||
+ if (have_multiple_function_sections)
|
||||
+ {
|
||||
+ unsigned fde_idx = 0;
|
||||
+
|
||||
+ for (fde_idx = 0; fde_idx < fde_table_in_use; fde_idx++)
|
||||
+ {
|
||||
+ dw_fde_ref fde = &fde_table[fde_idx];
|
||||
+
|
||||
+ if (!fde->in_std_section)
|
||||
+ size += 2 * DWARF2_ADDR_SIZE;
|
||||
+ if (fde->dw_fde_second_begin && !fde->second_in_std_section)
|
||||
+ size += 2 * DWARF2_ADDR_SIZE;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/* Count the two zero words used to terminated the address range table. */
|
||||
size += 2 * DWARF2_ADDR_SIZE;
|
||||
@@ -11696,35 +11663,14 @@ output_pubnames (VEC (pubname_entry, gc) * names)
|
||||
dw2_asm_output_data (DWARF_OFFSET_SIZE, 0, NULL);
|
||||
}
|
||||
|
||||
-/* Add a new entry to .debug_aranges if appropriate. */
|
||||
-
|
||||
-static void
|
||||
-add_arange (tree decl, dw_die_ref die)
|
||||
-{
|
||||
- if (! DECL_SECTION_NAME (decl))
|
||||
- return;
|
||||
-
|
||||
- if (arange_table_in_use == arange_table_allocated)
|
||||
- {
|
||||
- arange_table_allocated += ARANGE_TABLE_INCREMENT;
|
||||
- arange_table = GGC_RESIZEVEC (dw_die_ref, arange_table,
|
||||
- arange_table_allocated);
|
||||
- memset (arange_table + arange_table_in_use, 0,
|
||||
- ARANGE_TABLE_INCREMENT * sizeof (dw_die_ref));
|
||||
- }
|
||||
-
|
||||
- arange_table[arange_table_in_use++] = die;
|
||||
-}
|
||||
-
|
||||
/* Output the information that goes into the .debug_aranges table.
|
||||
Namely, define the beginning and ending address range of the
|
||||
text section generated for this compilation unit. */
|
||||
|
||||
static void
|
||||
-output_aranges (void)
|
||||
+output_aranges (unsigned long aranges_length)
|
||||
{
|
||||
unsigned i;
|
||||
- unsigned long aranges_length = size_of_aranges ();
|
||||
|
||||
if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
|
||||
dw2_asm_output_data (4, 0xffffffff,
|
||||
@@ -11769,38 +11715,28 @@ output_aranges (void)
|
||||
cold_text_section_label, "Length");
|
||||
}
|
||||
|
||||
- for (i = 0; i < arange_table_in_use; i++)
|
||||
+ if (have_multiple_function_sections)
|
||||
{
|
||||
- dw_die_ref die = arange_table[i];
|
||||
-
|
||||
- /* We shouldn't see aranges for DIEs outside of the main CU. */
|
||||
- gcc_assert (die->die_mark);
|
||||
+ unsigned fde_idx = 0;
|
||||
|
||||
- if (die->die_tag == DW_TAG_subprogram)
|
||||
- {
|
||||
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, get_AT_low_pc (die),
|
||||
- "Address");
|
||||
- dw2_asm_output_delta (DWARF2_ADDR_SIZE, get_AT_hi_pc (die),
|
||||
- get_AT_low_pc (die), "Length");
|
||||
- }
|
||||
- else
|
||||
+ for (fde_idx = 0; fde_idx < fde_table_in_use; fde_idx++)
|
||||
{
|
||||
- /* A static variable; extract the symbol from DW_AT_location.
|
||||
- Note that this code isn't currently hit, as we only emit
|
||||
- aranges for functions (jason 9/23/99). */
|
||||
- dw_attr_ref a = get_AT (die, DW_AT_location);
|
||||
- dw_loc_descr_ref loc;
|
||||
-
|
||||
- gcc_assert (a && AT_class (a) == dw_val_class_loc);
|
||||
-
|
||||
- loc = AT_loc (a);
|
||||
- gcc_assert (loc->dw_loc_opc == DW_OP_addr);
|
||||
-
|
||||
- dw2_asm_output_addr_rtx (DWARF2_ADDR_SIZE,
|
||||
- loc->dw_loc_oprnd1.v.val_addr, "Address");
|
||||
- dw2_asm_output_data (DWARF2_ADDR_SIZE,
|
||||
- get_AT_unsigned (die, DW_AT_byte_size),
|
||||
- "Length");
|
||||
+ dw_fde_ref fde = &fde_table[fde_idx];
|
||||
+
|
||||
+ if (!fde->in_std_section)
|
||||
+ {
|
||||
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, fde->dw_fde_begin,
|
||||
+ "Address");
|
||||
+ dw2_asm_output_delta (DWARF2_ADDR_SIZE, fde->dw_fde_end,
|
||||
+ fde->dw_fde_begin, "Length");
|
||||
+ }
|
||||
+ if (fde->dw_fde_second_begin && !fde->second_in_std_section)
|
||||
+ {
|
||||
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, fde->dw_fde_second_begin,
|
||||
+ "Address");
|
||||
+ dw2_asm_output_delta (DWARF2_ADDR_SIZE, fde->dw_fde_second_end,
|
||||
+ fde->dw_fde_second_begin, "Length");
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15210,9 +15146,23 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
|
||||
}
|
||||
if (descr)
|
||||
{
|
||||
+ bool range_across_switch = false;
|
||||
+ /* If section switch happens in between node->label
|
||||
+ and node->next->label (or end of function) and
|
||||
+ we can't emit it as a single entry list,
|
||||
+ emit two ranges, first one ending at the end
|
||||
+ of first partition and second one starting at the
|
||||
+ beginning of second partition. */
|
||||
+ if (node == loc_list->last_before_switch
|
||||
+ && (node != loc_list->first || loc_list->first->next)
|
||||
+ && current_function_decl)
|
||||
+ {
|
||||
+ endname = current_fde ()->dw_fde_end;
|
||||
+ range_across_switch = true;
|
||||
+ }
|
||||
/* The variable has a location between NODE->LABEL and
|
||||
NODE->NEXT->LABEL. */
|
||||
- if (node->next)
|
||||
+ else if (node->next)
|
||||
endname = node->next->label;
|
||||
/* If the variable has a location at the last label
|
||||
it keeps its location until the end of function. */
|
||||
@@ -15227,6 +15177,30 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
|
||||
|
||||
*listp = new_loc_list (descr, node->label, endname, secname);
|
||||
listp = &(*listp)->dw_loc_next;
|
||||
+
|
||||
+ if (range_across_switch)
|
||||
+ {
|
||||
+ if (GET_CODE (node->loc) == EXPR_LIST)
|
||||
+ descr = dw_sra_loc_expr (decl, node->loc);
|
||||
+ else
|
||||
+ {
|
||||
+ initialized = NOTE_VAR_LOCATION_STATUS (node->loc);
|
||||
+ varloc = NOTE_VAR_LOCATION (node->loc);
|
||||
+ descr = dw_loc_list_1 (decl, varloc, want_address,
|
||||
+ initialized);
|
||||
+ }
|
||||
+ gcc_assert (descr);
|
||||
+ /* The variable has a location between NODE->LABEL and
|
||||
+ NODE->NEXT->LABEL. */
|
||||
+ if (node->next)
|
||||
+ endname = node->next->label;
|
||||
+ else
|
||||
+ endname = current_fde ()->dw_fde_second_end;
|
||||
+ *listp = new_loc_list (descr,
|
||||
+ current_fde ()->dw_fde_second_begin,
|
||||
+ endname, secname);
|
||||
+ listp = &(*listp)->dw_loc_next;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17305,33 +17279,61 @@ convert_cfa_to_fb_loc_list (HOST_WIDE_INT offset)
|
||||
last_cfa = next_cfa;
|
||||
last_label = start_label;
|
||||
|
||||
+ if (fde->dw_fde_second_begin && fde->dw_fde_switch_cfi == NULL)
|
||||
+ {
|
||||
+ /* If the first partition contained no CFI adjustments, the
|
||||
+ CIE opcodes apply to the whole first partition. */
|
||||
+ *list_tail = new_loc_list (build_cfa_loc (&last_cfa, offset),
|
||||
+ fde->dw_fde_begin, fde->dw_fde_end, section);
|
||||
+ list_tail =&(*list_tail)->dw_loc_next;
|
||||
+ start_label = last_label = fde->dw_fde_second_begin;
|
||||
+ }
|
||||
+
|
||||
for (cfi = fde->dw_fde_cfi; cfi; cfi = cfi->dw_cfi_next)
|
||||
- switch (cfi->dw_cfi_opc)
|
||||
- {
|
||||
- case DW_CFA_set_loc:
|
||||
- case DW_CFA_advance_loc1:
|
||||
- case DW_CFA_advance_loc2:
|
||||
- case DW_CFA_advance_loc4:
|
||||
- if (!cfa_equal_p (&last_cfa, &next_cfa))
|
||||
- {
|
||||
- *list_tail = new_loc_list (build_cfa_loc (&last_cfa, offset),
|
||||
- start_label, last_label, section);
|
||||
+ {
|
||||
+ switch (cfi->dw_cfi_opc)
|
||||
+ {
|
||||
+ case DW_CFA_set_loc:
|
||||
+ case DW_CFA_advance_loc1:
|
||||
+ case DW_CFA_advance_loc2:
|
||||
+ case DW_CFA_advance_loc4:
|
||||
+ if (!cfa_equal_p (&last_cfa, &next_cfa))
|
||||
+ {
|
||||
+ *list_tail = new_loc_list (build_cfa_loc (&last_cfa, offset),
|
||||
+ start_label, last_label, section);
|
||||
|
||||
- list_tail = &(*list_tail)->dw_loc_next;
|
||||
- last_cfa = next_cfa;
|
||||
- start_label = last_label;
|
||||
- }
|
||||
- last_label = cfi->dw_cfi_oprnd1.dw_cfi_addr;
|
||||
- break;
|
||||
+ list_tail = &(*list_tail)->dw_loc_next;
|
||||
+ last_cfa = next_cfa;
|
||||
+ start_label = last_label;
|
||||
+ }
|
||||
+ last_label = cfi->dw_cfi_oprnd1.dw_cfi_addr;
|
||||
+ break;
|
||||
|
||||
- case DW_CFA_advance_loc:
|
||||
- /* The encoding is complex enough that we should never emit this. */
|
||||
- gcc_unreachable ();
|
||||
+ case DW_CFA_advance_loc:
|
||||
+ /* The encoding is complex enough that we should never emit this. */
|
||||
+ gcc_unreachable ();
|
||||
|
||||
- default:
|
||||
- lookup_cfa_1 (cfi, &next_cfa, &remember);
|
||||
- break;
|
||||
- }
|
||||
+ default:
|
||||
+ lookup_cfa_1 (cfi, &next_cfa, &remember);
|
||||
+ break;
|
||||
+ }
|
||||
+ if (cfi == fde->dw_fde_switch_cfi)
|
||||
+ {
|
||||
+ if (!cfa_equal_p (&last_cfa, &next_cfa))
|
||||
+ {
|
||||
+ *list_tail = new_loc_list (build_cfa_loc (&last_cfa, offset),
|
||||
+ start_label, last_label, section);
|
||||
+
|
||||
+ list_tail = &(*list_tail)->dw_loc_next;
|
||||
+ last_cfa = next_cfa;
|
||||
+ start_label = last_label;
|
||||
+ }
|
||||
+ *list_tail = new_loc_list (build_cfa_loc (&last_cfa, offset),
|
||||
+ start_label, fde->dw_fde_end, section);
|
||||
+ list_tail = &(*list_tail)->dw_loc_next;
|
||||
+ start_label = last_label = fde->dw_fde_second_begin;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (!cfa_equal_p (&last_cfa, &next_cfa))
|
||||
{
|
||||
@@ -17342,7 +17344,10 @@ convert_cfa_to_fb_loc_list (HOST_WIDE_INT offset)
|
||||
}
|
||||
|
||||
*list_tail = new_loc_list (build_cfa_loc (&next_cfa, offset),
|
||||
- start_label, fde->dw_fde_end, section);
|
||||
+ start_label,
|
||||
+ fde->dw_fde_second_begin
|
||||
+ ? fde->dw_fde_second_end : fde->dw_fde_end,
|
||||
+ section);
|
||||
|
||||
if (list && list->dw_loc_next)
|
||||
gen_llsym (list);
|
||||
@@ -19213,14 +19218,13 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
||||
#endif
|
||||
|
||||
add_pubname (decl, subr_die);
|
||||
- add_arange (decl, subr_die);
|
||||
}
|
||||
else
|
||||
{ /* Generate pubnames entries for the split function code
|
||||
ranges. */
|
||||
dw_fde_ref fde = &fde_table[current_funcdef_fde];
|
||||
|
||||
- if (fde->dw_fde_switched_sections)
|
||||
+ if (fde->dw_fde_second_begin)
|
||||
{
|
||||
if (dwarf_version >= 3 || !dwarf_strict)
|
||||
{
|
||||
@@ -19229,28 +19233,11 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
||||
section, since the HOT/COLD labels might precede an
|
||||
alignment offset. */
|
||||
bool range_list_added = false;
|
||||
- if (fde->in_std_section)
|
||||
- {
|
||||
- add_ranges_by_labels (subr_die,
|
||||
- fde->dw_fde_begin,
|
||||
- fde->dw_fde_end,
|
||||
- &range_list_added);
|
||||
- add_ranges_by_labels (subr_die,
|
||||
- fde->dw_fde_unlikely_section_label,
|
||||
- fde->dw_fde_unlikely_section_end_label,
|
||||
- &range_list_added);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- add_ranges_by_labels (subr_die,
|
||||
- fde->dw_fde_begin,
|
||||
- fde->dw_fde_end,
|
||||
- &range_list_added);
|
||||
- add_ranges_by_labels (subr_die,
|
||||
- fde->dw_fde_hot_section_label,
|
||||
- fde->dw_fde_hot_section_end_label,
|
||||
- &range_list_added);
|
||||
- }
|
||||
+ add_ranges_by_labels (subr_die, fde->dw_fde_begin,
|
||||
+ fde->dw_fde_end, &range_list_added);
|
||||
+ add_ranges_by_labels (subr_die, fde->dw_fde_second_begin,
|
||||
+ fde->dw_fde_second_end,
|
||||
+ &range_list_added);
|
||||
add_pubname (decl, subr_die);
|
||||
if (range_list_added)
|
||||
add_ranges (NULL);
|
||||
@@ -19275,7 +19262,6 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
||||
fde->dw_fde_end);
|
||||
/* Add it. */
|
||||
add_pubname (decl, subr_die);
|
||||
- add_arange (decl, subr_die);
|
||||
|
||||
/* Build a minimal DIE for the secondary section. */
|
||||
seg_die = new_die (DW_TAG_subprogram,
|
||||
@@ -19293,30 +19279,18 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
||||
|
||||
add_linkage_name (seg_die, decl);
|
||||
}
|
||||
- gcc_assert (name!=NULL);
|
||||
+ gcc_assert (name != NULL);
|
||||
add_pure_or_virtual_attribute (seg_die, decl);
|
||||
if (DECL_ARTIFICIAL (decl))
|
||||
add_AT_flag (seg_die, DW_AT_artificial, 1);
|
||||
|
||||
- if (fde->in_std_section)
|
||||
- {
|
||||
- name = concat ("__cold_sect_of_", name, NULL);
|
||||
- add_AT_lbl_id (seg_die, DW_AT_low_pc,
|
||||
- fde->dw_fde_unlikely_section_label);
|
||||
- add_AT_lbl_id (seg_die, DW_AT_high_pc,
|
||||
- fde->dw_fde_unlikely_section_end_label);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- name = concat ("__hot_sect_of_", name, NULL);
|
||||
- add_AT_lbl_id (seg_die, DW_AT_low_pc,
|
||||
- fde->dw_fde_hot_section_label);
|
||||
- add_AT_lbl_id (seg_die, DW_AT_high_pc,
|
||||
- fde->dw_fde_hot_section_end_label);
|
||||
- }
|
||||
+ name = concat ("__second_sect_of_", name, NULL);
|
||||
+ add_AT_lbl_id (seg_die, DW_AT_low_pc,
|
||||
+ fde->dw_fde_second_begin);
|
||||
+ add_AT_lbl_id (seg_die, DW_AT_high_pc,
|
||||
+ fde->dw_fde_second_end);
|
||||
add_name_attribute (seg_die, name);
|
||||
add_pubname_string (name, seg_die);
|
||||
- add_arange (decl, seg_die);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -19324,7 +19298,6 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
||||
add_AT_lbl_id (subr_die, DW_AT_low_pc, fde->dw_fde_begin);
|
||||
add_AT_lbl_id (subr_die, DW_AT_high_pc, fde->dw_fde_end);
|
||||
add_pubname (decl, subr_die);
|
||||
- add_arange (decl, subr_die);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21975,6 +21948,29 @@ dwarf2out_var_location (rtx loc_note)
|
||||
last_in_cold_section_p = in_cold_section_p;
|
||||
}
|
||||
|
||||
+/* Note in one location list that text section has changed. */
|
||||
+
|
||||
+static int
|
||||
+var_location_switch_text_section_1 (void **slot, void *data ATTRIBUTE_UNUSED)
|
||||
+{
|
||||
+ var_loc_list *list = (var_loc_list *) *slot;
|
||||
+ if (list->first)
|
||||
+ list->last_before_switch
|
||||
+ = list->last->next ? list->last->next : list->last;
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+/* Note in all location lists that text section has changed. */
|
||||
+
|
||||
+static void
|
||||
+var_location_switch_text_section (void)
|
||||
+{
|
||||
+ if (decl_loc_table == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ htab_traverse (decl_loc_table, var_location_switch_text_section_1, NULL);
|
||||
+}
|
||||
+
|
||||
/* We need to reset the locations at the beginning of each
|
||||
function. We can't do this in the end_function hook, because the
|
||||
declarations that use the locations won't have been output when
|
||||
@@ -21985,7 +21981,7 @@ dwarf2out_begin_function (tree fun)
|
||||
{
|
||||
if (function_section (fun) != text_section)
|
||||
have_multiple_function_sections = true;
|
||||
- else if (flag_reorder_blocks_and_partition && !cold_text_section)
|
||||
+ if (flag_reorder_blocks_and_partition && !cold_text_section)
|
||||
{
|
||||
gcc_assert (current_function_decl == fun);
|
||||
cold_text_section = unlikely_text_section ();
|
||||
@@ -22702,11 +22698,9 @@ prune_unused_types (void)
|
||||
}
|
||||
|
||||
/* Also set the mark on nodes referenced from the
|
||||
- pubname_table or arange_table. */
|
||||
+ pubname_table. */
|
||||
FOR_EACH_VEC_ELT (pubname_entry, pubname_table, i, pub)
|
||||
prune_unused_types_mark (pub->die, 1);
|
||||
- for (i = 0; i < arange_table_in_use; i++)
|
||||
- prune_unused_types_mark (arange_table[i], 1);
|
||||
|
||||
/* Mark nodes referenced from the direct call table. */
|
||||
FOR_EACH_VEC_ELT (dcall_entry, dcall_table, i, dcall)
|
||||
@@ -23479,7 +23473,7 @@ dwarf2out_finish (const char *filename)
|
||||
if (text_section_used)
|
||||
add_ranges_by_labels (comp_unit_die (), text_section_label,
|
||||
text_end_label, &range_list_added);
|
||||
- if (flag_reorder_blocks_and_partition && cold_text_section_used)
|
||||
+ if (cold_text_section_used)
|
||||
add_ranges_by_labels (comp_unit_die (), cold_text_section_label,
|
||||
cold_end_label, &range_list_added);
|
||||
|
||||
@@ -23487,22 +23481,12 @@ dwarf2out_finish (const char *filename)
|
||||
{
|
||||
dw_fde_ref fde = &fde_table[fde_idx];
|
||||
|
||||
- if (fde->dw_fde_switched_sections)
|
||||
- {
|
||||
- if (!fde->in_std_section)
|
||||
- add_ranges_by_labels (comp_unit_die (),
|
||||
- fde->dw_fde_hot_section_label,
|
||||
- fde->dw_fde_hot_section_end_label,
|
||||
- &range_list_added);
|
||||
- if (!fde->cold_in_std_section)
|
||||
- add_ranges_by_labels (comp_unit_die (),
|
||||
- fde->dw_fde_unlikely_section_label,
|
||||
- fde->dw_fde_unlikely_section_end_label,
|
||||
- &range_list_added);
|
||||
- }
|
||||
- else if (!fde->in_std_section)
|
||||
+ if (!fde->in_std_section)
|
||||
add_ranges_by_labels (comp_unit_die (), fde->dw_fde_begin,
|
||||
fde->dw_fde_end, &range_list_added);
|
||||
+ if (fde->dw_fde_second_begin && !fde->second_in_std_section)
|
||||
+ add_ranges_by_labels (comp_unit_die (), fde->dw_fde_second_begin,
|
||||
+ fde->dw_fde_second_end, &range_list_added);
|
||||
}
|
||||
|
||||
if (range_list_added)
|
||||
@@ -23614,13 +23598,21 @@ dwarf2out_finish (const char *filename)
|
||||
output_vcall_table ();
|
||||
}
|
||||
|
||||
- /* Output the address range information. We only put functions in the arange
|
||||
- table, so don't write it out if we don't have any. */
|
||||
- if ((text_section_used || cold_text_section_used || arange_table_in_use)
|
||||
- && info_section_emitted)
|
||||
+ /* Output the address range information. We only put functions in the
|
||||
+ arange table, so don't write it out if we don't have any. */
|
||||
+ if (info_section_emitted)
|
||||
{
|
||||
- switch_to_section (debug_aranges_section);
|
||||
- output_aranges ();
|
||||
+ unsigned long aranges_length = size_of_aranges ();
|
||||
+
|
||||
+ /* Empty .debug_aranges would contain just header and
|
||||
+ terminating 0,0. */
|
||||
+ if (aranges_length
|
||||
+ != (unsigned long) (DWARF_ARANGES_HEADER_SIZE
|
||||
+ + 2 * DWARF2_ADDR_SIZE))
|
||||
+ {
|
||||
+ switch_to_section (debug_aranges_section);
|
||||
+ output_aranges (aranges_length);
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Output ranges section if necessary. */
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
From ec2d33835ee5855060878da89d4051fa06af9e97 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 30 Mar 2011 02:16:37 +0000
|
||||
Subject: [PATCH] PR c++/48265
|
||||
* pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
|
||||
the variable is constant before looking at its initializer.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171715 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index da9365f..e716ca6 100644
|
||||
--- a/gcc/cp/pt.c
|
||||
+++ b/gcc/cp/pt.c
|
||||
@@ -18085,10 +18085,10 @@ value_dependent_expression_p (tree expression)
|
||||
return value_dependent_expression_p (DECL_INITIAL (expression));
|
||||
|
||||
case VAR_DECL:
|
||||
- /* A constant with integral or enumeration type and is initialized
|
||||
+ /* A constant with literal type and is initialized
|
||||
with an expression that is value-dependent. */
|
||||
if (DECL_INITIAL (expression)
|
||||
- && INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (expression))
|
||||
+ && decl_constant_var_p (expression)
|
||||
&& value_dependent_expression_p (DECL_INITIAL (expression)))
|
||||
return true;
|
||||
return false;
|
||||
new file mode 100644
|
||||
index 0000000..112389d
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/value-dep1.C
|
||||
@@ -0,0 +1,7 @@
|
||||
+// PR c++/48265
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+template < int > struct S
|
||||
+{
|
||||
+ S () { const int i = i; i; };
|
||||
+};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 87c5c4ec5bee02725cb4bd4f81bb3c86a0277a81 Mon Sep 17 00:00:00 2001
|
||||
From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 30 Mar 2011 10:43:55 +0000
|
||||
Subject: [PATCH] Fix a typo in FLOAT_SSE_REGS.
|
||||
|
||||
2011-03-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
Backport from mainline
|
||||
2011-03-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/48349
|
||||
* config/i386/i386.h (REG_CLASS_CONTENTS): Fix a typo in
|
||||
FLOAT_SSE_REGS.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171719 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index f14a95d..981052f 100644
|
||||
--- a/gcc/config/i386/i386.h
|
||||
+++ b/gcc/config/i386/i386.h
|
||||
@@ -1272,7 +1272,7 @@ enum reg_class
|
||||
{ 0xe0000000, 0x1f }, /* MMX_REGS */ \
|
||||
{ 0x1fe00100,0x1fe000 }, /* FP_TOP_SSE_REG */ \
|
||||
{ 0x1fe00200,0x1fe000 }, /* FP_SECOND_SSE_REG */ \
|
||||
-{ 0x1fe0ff00,0x3fe000 }, /* FLOAT_SSE_REGS */ \
|
||||
+{ 0x1fe0ff00,0x1fe000 }, /* FLOAT_SSE_REGS */ \
|
||||
{ 0x1ffff, 0x1fe0 }, /* FLOAT_INT_REGS */ \
|
||||
{ 0x1fe100ff,0x1fffe0 }, /* INT_SSE_REGS */ \
|
||||
{ 0x1fe1ffff,0x1fffe0 }, /* FLOAT_INT_SSE_REGS */ \
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
From 541566b2d3b46207159abb1f59970bb11078e57e Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 30 Mar 2011 18:05:43 +0000
|
||||
Subject: [PATCH] PR c++/48281
|
||||
* semantics.c (finish_compound_literal): Do put static/constant
|
||||
arrays in static variables.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171738 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 9926d26..b88e190 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -2329,7 +2329,34 @@ finish_compound_literal (tree type, tree compound_literal)
|
||||
if (TREE_CODE (type) == ARRAY_TYPE)
|
||||
cp_complete_array_type (&type, compound_literal, false);
|
||||
compound_literal = digest_init (type, compound_literal);
|
||||
- return get_target_expr (compound_literal);
|
||||
+ /* Put static/constant array temporaries in static variables, but always
|
||||
+ represent class temporaries with TARGET_EXPR so we elide copies. */
|
||||
+ if ((!at_function_scope_p () || CP_TYPE_CONST_P (type))
|
||||
+ && TREE_CODE (type) == ARRAY_TYPE
|
||||
+ && initializer_constant_valid_p (compound_literal, type))
|
||||
+ {
|
||||
+ tree decl = create_temporary_var (type);
|
||||
+ DECL_INITIAL (decl) = compound_literal;
|
||||
+ TREE_STATIC (decl) = 1;
|
||||
+ if (literal_type_p (type) && CP_TYPE_CONST_NON_VOLATILE_P (type))
|
||||
+ {
|
||||
+ /* 5.19 says that a constant expression can include an
|
||||
+ lvalue-rvalue conversion applied to "a glvalue of literal type
|
||||
+ that refers to a non-volatile temporary object initialized
|
||||
+ with a constant expression". Rather than try to communicate
|
||||
+ that this VAR_DECL is a temporary, just mark it constexpr. */
|
||||
+ DECL_DECLARED_CONSTEXPR_P (decl) = true;
|
||||
+ DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = true;
|
||||
+ TREE_CONSTANT (decl) = true;
|
||||
+ }
|
||||
+ cp_apply_type_quals_to_decl (cp_type_quals (type), decl);
|
||||
+ decl = pushdecl_top_level (decl);
|
||||
+ DECL_NAME (decl) = make_anon_name ();
|
||||
+ SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
|
||||
+ return decl;
|
||||
+ }
|
||||
+ else
|
||||
+ return get_target_expr (compound_literal);
|
||||
}
|
||||
|
||||
/* Return the declaration for the function-name variable indicated by
|
||||
new file mode 100644
|
||||
index 0000000..2b9f07d
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist46.C
|
||||
@@ -0,0 +1,14 @@
|
||||
+// PR c++/48281
|
||||
+// { dg-options "-std=c++0x -O2" }
|
||||
+// { dg-do run }
|
||||
+
|
||||
+#include <initializer_list>
|
||||
+
|
||||
+typedef std::initializer_list<int> int1;
|
||||
+typedef std::initializer_list<int1> int2;
|
||||
+static int2 ib = {{42,2,3,4,5},{2,3,4,5,1},{3,4,5,2,1}};
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ return *(ib.begin()->begin()) != 42;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From 61759009408d9f43af89eaeaff769a656416e1af Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 30 Mar 2011 19:50:17 +0000
|
||||
Subject: [PATCH] PR c++/48369
|
||||
* semantics.c (potential_constant_expression_1): Handle
|
||||
UNORDERED_EXPR and ORDERED_EXPR.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171746 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index b88e190..48dd4ee 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -7741,6 +7741,8 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
|
||||
case BIT_XOR_EXPR:
|
||||
case BIT_AND_EXPR:
|
||||
case TRUTH_XOR_EXPR:
|
||||
+ case UNORDERED_EXPR:
|
||||
+ case ORDERED_EXPR:
|
||||
case UNLT_EXPR:
|
||||
case UNLE_EXPR:
|
||||
case UNGT_EXPR:
|
||||
new file mode 100644
|
||||
index 0000000..40d07e5
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/isnan.C
|
||||
@@ -0,0 +1,9 @@
|
||||
+// PR c++/48369
|
||||
+// { dg-options -std=gnu++0x }
|
||||
+
|
||||
+extern "C" int isnan (double);
|
||||
+
|
||||
+void f(double d)
|
||||
+{
|
||||
+ bool b = isnan(d);
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
From f23bf88450af23287387d878036f78042093d61b Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 30 Mar 2011 20:29:43 +0000
|
||||
Subject: [PATCH] PR c++/48212
|
||||
* semantics.c (non_const_var_error): Just return if DECL_INITIAL
|
||||
is error_mark_node.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171749 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 48dd4ee..c88b4bb 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -6759,6 +6759,9 @@ non_const_var_error (tree r)
|
||||
tree type = TREE_TYPE (r);
|
||||
error ("the value of %qD is not usable in a constant "
|
||||
"expression", r);
|
||||
+ /* Avoid error cascade. */
|
||||
+ if (DECL_INITIAL (r) == error_mark_node)
|
||||
+ return;
|
||||
if (DECL_DECLARED_CONSTEXPR_P (r))
|
||||
inform (DECL_SOURCE_LOCATION (r),
|
||||
"%qD used in its own initializer", r);
|
||||
new file mode 100644
|
||||
index 0000000..2094d3e
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C
|
||||
@@ -0,0 +1,9 @@
|
||||
+// PR c++/48212
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+template < bool > void
|
||||
+foo ()
|
||||
+{
|
||||
+ const bool b =; // { dg-error "" }
|
||||
+ foo < b > (); // { dg-error "constant expression" }
|
||||
+};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
From b3287343bd8870538aee70687286d78881ee8b81 Mon Sep 17 00:00:00 2001
|
||||
From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 31 Mar 2011 10:00:44 +0000
|
||||
Subject: [PATCH] 2011-03-31 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/48246
|
||||
* lto.c (lto_wpa_write_files): Disable assert for non-empty
|
||||
partitions when checking is not enabled.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171774 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 71c8cdb..4c832fb 100644
|
||||
--- a/gcc/lto/lto.c
|
||||
+++ b/gcc/lto/lto.c
|
||||
@@ -1514,8 +1514,8 @@ lto_wpa_write_files (void)
|
||||
fprintf (cgraph_dump_file, "varpool nodes:");
|
||||
dump_varpool_node_set (cgraph_dump_file, vset);
|
||||
}
|
||||
- gcc_assert (cgraph_node_set_nonempty_p (set)
|
||||
- || varpool_node_set_nonempty_p (vset) || !i);
|
||||
+ gcc_checking_assert (cgraph_node_set_nonempty_p (set)
|
||||
+ || varpool_node_set_nonempty_p (vset) || !i);
|
||||
|
||||
lto_set_current_out_file (file);
|
||||
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
From 18bc61fc490330f5dc59639626fa9bb5269e31d7 Mon Sep 17 00:00:00 2001
|
||||
From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 31 Mar 2011 11:14:41 +0000
|
||||
Subject: [PATCH] PR target/48142
|
||||
* config/i386/i386.c (ix86_adjust_stack_and_probe): Differentiate
|
||||
frame-related from frame-unrelated adjustments to the stack pointer.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171778 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 4fb654f..a524d77 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -9981,7 +9981,7 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
|
||||
probe that many bytes past the specified size to maintain a protection
|
||||
area at the botton of the stack. */
|
||||
const int dope = 4 * UNITS_PER_WORD;
|
||||
- rtx size_rtx = GEN_INT (size);
|
||||
+ rtx size_rtx = GEN_INT (size), last;
|
||||
|
||||
/* See if we have a constant small number of probes to generate. If so,
|
||||
that's the easy case. The run-time loop is made up of 11 insns in the
|
||||
@@ -10021,9 +10021,9 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
|
||||
emit_stack_probe (stack_pointer_rtx);
|
||||
|
||||
/* Adjust back to account for the additional first interval. */
|
||||
- emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
- plus_constant (stack_pointer_rtx,
|
||||
- PROBE_INTERVAL + dope)));
|
||||
+ last = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
+ plus_constant (stack_pointer_rtx,
|
||||
+ PROBE_INTERVAL + dope)));
|
||||
}
|
||||
|
||||
/* Otherwise, do the same as above, but in a loop. Note that we must be
|
||||
@@ -10084,15 +10084,33 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
|
||||
}
|
||||
|
||||
/* Adjust back to account for the additional first interval. */
|
||||
- emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
- plus_constant (stack_pointer_rtx,
|
||||
- PROBE_INTERVAL + dope)));
|
||||
+ last = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
+ plus_constant (stack_pointer_rtx,
|
||||
+ PROBE_INTERVAL + dope)));
|
||||
|
||||
release_scratch_register_on_entry (&sr);
|
||||
}
|
||||
|
||||
gcc_assert (cfun->machine->fs.cfa_reg != stack_pointer_rtx);
|
||||
- cfun->machine->fs.sp_offset += size;
|
||||
+
|
||||
+ /* Even if the stack pointer isn't the CFA register, we need to correctly
|
||||
+ describe the adjustments made to it, in particular differentiate the
|
||||
+ frame-related ones from the frame-unrelated ones. */
|
||||
+ if (size > 0)
|
||||
+ {
|
||||
+ rtx expr = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (2));
|
||||
+ XVECEXP (expr, 0, 0)
|
||||
+ = gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
+ plus_constant (stack_pointer_rtx, -size));
|
||||
+ XVECEXP (expr, 0, 1)
|
||||
+ = gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
+ plus_constant (stack_pointer_rtx,
|
||||
+ PROBE_INTERVAL + dope + size));
|
||||
+ add_reg_note (last, REG_FRAME_RELATED_EXPR, expr);
|
||||
+ RTX_FRAME_RELATED_P (last) = 1;
|
||||
+
|
||||
+ cfun->machine->fs.sp_offset += size;
|
||||
+ }
|
||||
|
||||
/* Make sure nothing is scheduled before we are done. */
|
||||
emit_insn (gen_blockage ());
|
||||
new file mode 100644
|
||||
index 0000000..7964057
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/other/i386-9.C
|
||||
@@ -0,0 +1,12 @@
|
||||
+// PR target/48142
|
||||
+// Testcase by Zdenek Sojka <zsojka@seznam.cz>
|
||||
+
|
||||
+// { dg-do run { target i?86-*-* x86_64-*-* } }
|
||||
+// { dg-options "-Os -mpreferred-stack-boundary=5 -fstack-check -fno-omit-frame-pointer" }
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ try { throw 0; }
|
||||
+ catch (...) {}
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
From e9265f24f30b22d79d2ea4013dd32a491a12d00c Mon Sep 17 00:00:00 2001
|
||||
From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 31 Mar 2011 15:05:47 +0000
|
||||
Subject: [PATCH] PR target/16292
|
||||
* gfortran.dg/g77/cabs.f: Only xfail execution on mips-sgi-irix6*
|
||||
with -O0.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171785 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index d409012..998327b 100644
|
||||
--- a/gcc/testsuite/gfortran.dg/g77/cabs.f
|
||||
+++ b/gcc/testsuite/gfortran.dg/g77/cabs.f
|
||||
@@ -1,4 +1,5 @@
|
||||
-c { dg-do run { xfail mips-sgi-irix6* } } PR 16292
|
||||
+c { dg-do run }
|
||||
+c { dg-xfail-run-if "PR target/16292" { mips-sgi-irix6* } { -O0 } }
|
||||
program cabs_1
|
||||
complex z0
|
||||
real r0
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From c965b9c986732377eb96e00f7266e281f345a00b Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 31 Mar 2011 20:33:07 +0000
|
||||
Subject: [PATCH] PR c++/48280
|
||||
* method.c (defaultable_fn_check): Templates are not defaultable.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171798 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index d70da95..e6f3c25 100644
|
||||
--- a/gcc/cp/method.c
|
||||
+++ b/gcc/cp/method.c
|
||||
@@ -1594,6 +1594,12 @@ defaultable_fn_check (tree fn)
|
||||
{
|
||||
special_function_kind kind = sfk_none;
|
||||
|
||||
+ if (template_parm_scope_p ())
|
||||
+ {
|
||||
+ error ("a template cannot be defaulted");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
if (DECL_CONSTRUCTOR_P (fn))
|
||||
{
|
||||
if (FUNCTION_FIRST_USER_PARMTYPE (fn) == void_list_node)
|
||||
new file mode 100644
|
||||
index 0000000..307bf94
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted24.C
|
||||
@@ -0,0 +1,6 @@
|
||||
+// PR c++/48280
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+struct S {
|
||||
+ template < typename > S (const S &) = default; // { dg-error "" }
|
||||
+};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
From 5e28e486dbc793184ca462b8b528f5eff3d4f2ef Mon Sep 17 00:00:00 2001
|
||||
From: jyasskin <jyasskin@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 1 Apr 2011 01:07:46 +0000
|
||||
Subject: [PATCH] Merge r171807 from trunk to the 4.6 release branch, to fix two C++
|
||||
conformance problems in libsupc++.
|
||||
|
||||
Tested: bootstrap + make check-c++ on x86_64
|
||||
|
||||
libstdc++-v3/ChangeLog:
|
||||
|
||||
2011-03-31 Jeffrey Yasskin <jyasskin@google.com>
|
||||
|
||||
* libsupc++/exception_ptr.h: Forward-declare std::type_info.
|
||||
* libsupc++/nested_exception.h (__throw_with_nested): Remove a
|
||||
redundant default argument from std::__throw_with_nested.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171815 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ef826f6..26117cd 100644
|
||||
--- a/libstdc++-v3/libsupc++/exception_ptr.h
|
||||
+++ b/libstdc++-v3/libsupc++/exception_ptr.h
|
||||
@@ -137,7 +137,7 @@ namespace std
|
||||
operator==(const exception_ptr&, const exception_ptr&) throw()
|
||||
__attribute__ ((__pure__));
|
||||
|
||||
- const type_info*
|
||||
+ const class type_info*
|
||||
__cxa_exception_type() const throw() __attribute__ ((__pure__));
|
||||
};
|
||||
|
||||
diff --git a/libstdc++-v3/libsupc++/nested_exception.h b/libstdc++-v3/libsupc++/nested_exception.h
|
||||
index 6a4f04e..d4804bb 100644
|
||||
--- a/libstdc++-v3/libsupc++/nested_exception.h
|
||||
+++ b/libstdc++-v3/libsupc++/nested_exception.h
|
||||
@@ -117,7 +117,7 @@ namespace std
|
||||
// with a type that has an accessible nested_exception base.
|
||||
template<typename _Ex>
|
||||
inline void
|
||||
- __throw_with_nested(_Ex&& __ex, const nested_exception* = 0)
|
||||
+ __throw_with_nested(_Ex&& __ex, const nested_exception*)
|
||||
{ throw __ex; }
|
||||
|
||||
template<typename _Ex>
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
From f8ae59386457b39085b086d04a8cd96e4450f167 Mon Sep 17 00:00:00 2001
|
||||
From: abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 1 Apr 2011 11:07:44 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-22 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
PR rtl-optimization/48143
|
||||
* config/i386/sse.md (*sse2_cvtpd2dq): Add athlon_decode attribute.
|
||||
(*sse2_cvttpd2dq, sse2_cvtss2sd, *sse2_cvtpd2ps,
|
||||
sse2_cvtps2pd): Likewise.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171825 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ba2bf24..f4bea64 100644
|
||||
--- a/gcc/config/i386/sse.md
|
||||
+++ b/gcc/config/i386/sse.md
|
||||
@@ -2715,6 +2715,7 @@
|
||||
(set_attr "prefix" "maybe_vex")
|
||||
(set_attr "mode" "TI")
|
||||
(set_attr "amdfam10_decode" "double")
|
||||
+ (set_attr "athlon_decode" "vector")
|
||||
(set_attr "bdver1_decode" "double")])
|
||||
|
||||
(define_insn "avx_cvttpd2dq256"
|
||||
@@ -2746,6 +2747,7 @@
|
||||
(set_attr "prefix" "maybe_vex")
|
||||
(set_attr "mode" "TI")
|
||||
(set_attr "amdfam10_decode" "double")
|
||||
+ (set_attr "athlon_decode" "vector")
|
||||
(set_attr "bdver1_decode" "double")])
|
||||
|
||||
(define_insn "*avx_cvtsd2ss"
|
||||
@@ -2806,6 +2808,7 @@
|
||||
"cvtss2sd\t{%2, %0|%0, %2}"
|
||||
[(set_attr "type" "ssecvt")
|
||||
(set_attr "amdfam10_decode" "vector,double")
|
||||
+ (set_attr "athlon_decode" "direct,direct")
|
||||
(set_attr "bdver1_decode" "direct,direct")
|
||||
(set_attr "mode" "DF")])
|
||||
|
||||
@@ -2842,6 +2845,7 @@
|
||||
(set_attr "prefix" "maybe_vex")
|
||||
(set_attr "mode" "V4SF")
|
||||
(set_attr "amdfam10_decode" "double")
|
||||
+ (set_attr "athlon_decode" "vector")
|
||||
(set_attr "bdver1_decode" "double")])
|
||||
|
||||
(define_insn "avx_cvtps2pd256"
|
||||
@@ -2879,6 +2883,7 @@
|
||||
(set_attr "mode" "V2DF")
|
||||
(set_attr "prefix_data16" "0")
|
||||
(set_attr "amdfam10_decode" "direct")
|
||||
+ (set_attr "athlon_decode" "double")
|
||||
(set_attr "bdver1_decode" "double")])
|
||||
|
||||
(define_expand "vec_unpacks_hi_v4sf"
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
From 5b6ffdded3fd04395f72852e2a201d011d10a060 Mon Sep 17 00:00:00 2001
|
||||
From: uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 1 Apr 2011 17:17:59 +0000
|
||||
Subject: [PATCH] * config/spu/t-spu-elf (dp-bit.c): Use > instead of >>.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171838 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index a131f64..5189f28 100644
|
||||
--- a/gcc/config/spu/t-spu-elf
|
||||
+++ b/gcc/config/spu/t-spu-elf
|
||||
@@ -1,4 +1,5 @@
|
||||
-# Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
|
||||
+# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
@@ -55,7 +56,7 @@ FPBIT = fp-bit.c
|
||||
DPBIT = dp-bit.c
|
||||
|
||||
dp-bit.c: $(srcdir)/config/fp-bit.c $(srcdir)/config/spu/t-spu-elf
|
||||
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
|
||||
+ cat $(srcdir)/config/fp-bit.c > dp-bit.c
|
||||
|
||||
fp-bit.c: $(srcdir)/config/fp-bit.c $(srcdir)/config/spu/t-spu-elf
|
||||
echo '#define FLOAT' > fp-bit.c
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
From 0d43ff3bbc445b0264f804cd6449069182045678 Mon Sep 17 00:00:00 2001
|
||||
From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 2 Apr 2011 15:34:01 +0000
|
||||
Subject: [PATCH] 2011-04-02 Jonathan Wakely <redi@gcc.gnu.org>
|
||||
|
||||
PR libstdc++/48398
|
||||
* include/bits/unique_ptr.h (__tuple_type): Store pointer type.
|
||||
* testsuite/20_util/unique_ptr/modifiers/48398.cc: New.
|
||||
* testsuite/20_util/unique_ptr/requirements/pointer_type.cc: Remove
|
||||
unused parameter name.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171889 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 5e8ab90..5df4325 100644
|
||||
--- a/libstdc++-v3/include/bits/unique_ptr.h
|
||||
+++ b/libstdc++-v3/include/bits/unique_ptr.h
|
||||
@@ -100,11 +100,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
typedef decltype( __test<_Del>(0)) type;
|
||||
};
|
||||
|
||||
- typedef std::tuple<_Tp*, _Dp> __tuple_type;
|
||||
- __tuple_type _M_t;
|
||||
+ typedef std::tuple<typename _Pointer::type, _Dp> __tuple_type;
|
||||
+ __tuple_type _M_t;
|
||||
|
||||
public:
|
||||
- typedef typename _Pointer::type pointer;
|
||||
+ typedef typename _Pointer::type pointer;
|
||||
typedef _Tp element_type;
|
||||
typedef _Dp deleter_type;
|
||||
|
||||
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
|
||||
new file mode 100644
|
||||
index 0000000..54948df
|
||||
--- /dev/null
|
||||
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
|
||||
@@ -0,0 +1,41 @@
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-std=gnu++0x" }
|
||||
+
|
||||
+// Copyright (C) 2011 Free Software Foundation
|
||||
+//
|
||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||
+// software; you can redistribute it and/or modify it under the
|
||||
+// terms of the GNU General Public License as published by the
|
||||
+// Free Software Foundation; either version 3, or (at your option)
|
||||
+// any later version.
|
||||
+
|
||||
+// This library is distributed in the hope that it will be useful,
|
||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+// GNU General Public License for more details.
|
||||
+
|
||||
+// You should have received a copy of the GNU General Public License along
|
||||
+// with this library; see the file COPYING3. If not see
|
||||
+// <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+// 20.7.1 Class template unique_ptr [unique.ptr]
|
||||
+
|
||||
+#include <memory>
|
||||
+
|
||||
+// PR libstdc++/48398
|
||||
+
|
||||
+struct my_deleter
|
||||
+{
|
||||
+ typedef int* pointer;
|
||||
+
|
||||
+ void operator()( pointer p ) { delete p; }
|
||||
+};
|
||||
+
|
||||
+void test01()
|
||||
+{
|
||||
+ std::unique_ptr<void, my_deleter> p( new int() );
|
||||
+
|
||||
+ p.get();
|
||||
+ p.reset();
|
||||
+
|
||||
+}
|
||||
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
|
||||
index 5074844..55f28ca 100644
|
||||
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
|
||||
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
|
||||
-// Copyright (C) 2010 Free Software Foundation
|
||||
+// Copyright (C) 2010, 2011 Free Software Foundation
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -25,13 +25,13 @@
|
||||
|
||||
struct A
|
||||
{
|
||||
- void operator()(void* p) const { }
|
||||
+ void operator()(void*) const { }
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
typedef char* pointer;
|
||||
- void operator()(pointer p) const { }
|
||||
+ void operator()(pointer) const { }
|
||||
};
|
||||
|
||||
int main()
|
||||
--
|
||||
1.7.0.4
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,30 +0,0 @@
|
|||
From e26756e1112552489e123c8ed7ed038beae89c5b Mon Sep 17 00:00:00 2001
|
||||
From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 4 Apr 2011 15:55:33 +0000
|
||||
Subject: [PATCH] * gfortran.dg/bessel_6.f90: Use dg-add-options ieee.
|
||||
* gfortran.dg/bessel_7.f90: Likewise.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171940 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index e760d4c..3c1a6f4 100644
|
||||
--- a/gcc/testsuite/gfortran.dg/bessel_6.f90
|
||||
+++ b/gcc/testsuite/gfortran.dg/bessel_6.f90
|
||||
@@ -1,4 +1,5 @@
|
||||
! { dg-do run { xfail spu-*-* } }
|
||||
+! { dg-add-options ieee }
|
||||
!
|
||||
! PR fortran/36158
|
||||
! PR fortran/33197
|
||||
diff --git a/gcc/testsuite/gfortran.dg/bessel_7.f90 b/gcc/testsuite/gfortran.dg/bessel_7.f90
|
||||
index 10a6e96..78f1ff2 100644
|
||||
--- a/gcc/testsuite/gfortran.dg/bessel_7.f90
|
||||
+++ b/gcc/testsuite/gfortran.dg/bessel_7.f90
|
||||
@@ -1,4 +1,5 @@
|
||||
! { dg-do run { xfail *-*-mingw* spu-*-* } }
|
||||
+! { dg-add-options ieee }
|
||||
!
|
||||
! PR fortran/36158
|
||||
! PR fortran/33197
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
From ca7759868733b4570e496b889e711523640fc582 Mon Sep 17 00:00:00 2001
|
||||
From: janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 4 Apr 2011 18:53:34 +0000
|
||||
Subject: [PATCH] 2011-04-04 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/48291
|
||||
* class.c (get_unique_hashed_string): Adjust maximum allowable length
|
||||
for unique type string.
|
||||
|
||||
2011-04-04 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/48291
|
||||
* gfortran.dg/class_42.f03: New.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171950 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 85da3cb..b99930a 100644
|
||||
--- a/gcc/fortran/class.c
|
||||
+++ b/gcc/fortran/class.c
|
||||
@@ -137,9 +137,9 @@ get_unique_hashed_string (char *string, gfc_symbol *derived)
|
||||
{
|
||||
char tmp[2*GFC_MAX_SYMBOL_LEN+2];
|
||||
get_unique_type_string (&tmp[0], derived);
|
||||
- /* If string is too long, use hash value in hex representation
|
||||
- (allow for extra decoration, cf. gfc_build_class_symbol)*/
|
||||
- if (strlen (tmp) > GFC_MAX_SYMBOL_LEN - 10)
|
||||
+ /* If string is too long, use hash value in hex representation (allow for
|
||||
+ extra decoration, cf. gfc_build_class_symbol & gfc_find_derived_vtab). */
|
||||
+ if (strlen (tmp) > GFC_MAX_SYMBOL_LEN - 11)
|
||||
{
|
||||
int h = gfc_hash_value (derived);
|
||||
sprintf (string, "%X", h);
|
||||
new file mode 100644
|
||||
index 0000000..dd59835
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gfortran.dg/class_42.f03
|
||||
@@ -0,0 +1,16 @@
|
||||
+! { dg-do compile }
|
||||
+!
|
||||
+! PR 48291: [4.6/4.7 Regression] [OOP] internal compiler error, new_symbol(): Symbol name too long
|
||||
+!
|
||||
+! Contributed by Adrian Prantl <adrian@llnl.gov>
|
||||
+
|
||||
+module Overload_AnException_Impl
|
||||
+ type :: Overload_AnException_impl_t
|
||||
+ end type
|
||||
+contains
|
||||
+ subroutine ctor_impl(self)
|
||||
+ class(Overload_AnException_impl_t) :: self
|
||||
+ end subroutine
|
||||
+end module
|
||||
+
|
||||
+! { dg-final { cleanup-modules "Overload_AnException_Impl" } }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,952 +0,0 @@
|
|||
From 0e497997f5e241721dece71b322621d24abd4a04 Mon Sep 17 00:00:00 2001
|
||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 4 Apr 2011 22:20:34 +0000
|
||||
Subject: [PATCH] * es.po: Update.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171957 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 2ceed68..84b3475 100644
|
||||
--- a/gcc/po/es.po
|
||||
+++ b/gcc/po/es.po
|
||||
@@ -1,16 +1,16 @@
|
||||
-# Mensajes en español para gcc-4.6-b20101218.
|
||||
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+# Mensajes en español para gcc-4.6.0.
|
||||
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the gcc package.
|
||||
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
#
|
||||
# Agradezco a Juan Cuquejo Mira por sus comentarios sobre esta traducción
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
-"Project-Id-Version: gcc 4.6-b20101218\n"
|
||||
+"Project-Id-Version: gcc 4.6.0\n"
|
||||
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
|
||||
"POT-Creation-Date: 2011-03-24 16:45+0000\n"
|
||||
-"PO-Revision-Date: 2010-12-21 07:58-0600\n"
|
||||
+"PO-Revision-Date: 2011-04-04 16:04-0500\n"
|
||||
"Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
|
||||
"Language-Team: Spanish <es@li.org>\n"
|
||||
"Language: es\n"
|
||||
@@ -1800,9 +1800,8 @@ msgid "The maximum amount of memory to be allocated by GCSE"
|
||||
msgstr "La cantidad máxima de memoria a ser asignada por GCSE"
|
||||
|
||||
#: params.def:222
|
||||
-#, fuzzy
|
||||
msgid "The maximum ratio of insertions to deletions of expressions in GCSE"
|
||||
-msgstr "El número máximo de instrucciones para considerar el desenrollo en un bucle"
|
||||
+msgstr "La tasa máxima de inserciones para borrados de expresiones en GCSE"
|
||||
|
||||
#: params.def:233
|
||||
msgid "The threshold ratio for performing partial redundancy elimination after reload"
|
||||
@@ -1978,9 +1977,8 @@ msgid "Bound on size of expressions used in the scalar evolutions analyzer"
|
||||
msgstr "Límite en el tamaño de expresiones usadas en el analizador escalar de evoluciones"
|
||||
|
||||
#: params.def:488
|
||||
-#, fuzzy
|
||||
msgid "Bound on the complexity of the expressions in the scalar evolutions analyzer"
|
||||
-msgstr "Límite en el tamaño de expresiones usadas en el analizador escalar de evoluciones"
|
||||
+msgstr "Límite en la complejidad de expresiones en el analizador escalar de evoluciones"
|
||||
|
||||
#: params.def:493
|
||||
msgid "Bound on the number of variables in Omega constraint systems"
|
||||
@@ -5541,9 +5539,8 @@ msgid "Return pointers in both a0 and d0"
|
||||
msgstr "Devuelve punteros tanto en a0 como en d0"
|
||||
|
||||
#: config/mn10300/mn10300.opt:56
|
||||
-#, fuzzy
|
||||
msgid "Allow gcc to generate LIW instructions"
|
||||
-msgstr "Permite a gcc usar las instrucciones repeat/erepeat"
|
||||
+msgstr "Permite a gcc generar instrucciones LIW"
|
||||
|
||||
#: config/s390/tpf.opt:23
|
||||
msgid "Enable TPF-OS tracing code"
|
||||
@@ -6307,7 +6304,7 @@ msgstr "Despacha al calendarizador si el procesador es bdver1 y la calendarizaci
|
||||
|
||||
#: config/i386/i386.opt:271
|
||||
msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer."
|
||||
-msgstr ""
|
||||
+msgstr "Usa instrucciones AVX de 128-bit en lugar de instrucciones AVX de 256-bit en el auto-vectorizador."
|
||||
|
||||
#: config/i386/i386.opt:277
|
||||
msgid "Generate 32bit i386 code"
|
||||
@@ -6358,9 +6355,8 @@ msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation"
|
||||
msgstr "No admite funciones internas y generación de código SSE4.1 y SSE4.2"
|
||||
|
||||
#: config/i386/i386.opt:328
|
||||
-#, fuzzy
|
||||
msgid "%<-msse5%> was removed"
|
||||
-msgstr "se eliminó '-msse5'"
|
||||
+msgstr "se eliminó %<-msse5%>"
|
||||
|
||||
#: config/i386/i386.opt:333
|
||||
msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation"
|
||||
@@ -8172,13 +8168,12 @@ msgid "Set the max size of data eligible for the TDA area"
|
||||
msgstr "Establece el tamaño máximo de datos elegibles para el área TDA"
|
||||
|
||||
#: config/v850/v850.opt:71
|
||||
-#, fuzzy
|
||||
msgid "Do not enforce strict alignment"
|
||||
-msgstr "Refuerza la alineación estricta"
|
||||
+msgstr "No refuerza la alineación estricta"
|
||||
|
||||
#: config/v850/v850.opt:75
|
||||
msgid "Put jump tables for switch statements into the .data section rather than the .code section"
|
||||
-msgstr ""
|
||||
+msgstr "Coloca las tablas de salto para las declaraciones switch en la sección .data en lugar de la sección .code"
|
||||
|
||||
#: config/v850/v850.opt:82
|
||||
msgid "Compile for the v850 processor"
|
||||
@@ -8193,9 +8188,8 @@ msgid "Compile for the v850e1 processor"
|
||||
msgstr "Compila para el procesador v850e1"
|
||||
|
||||
#: config/v850/v850.opt:94
|
||||
-#, fuzzy
|
||||
msgid "Compile for the v850es variant of the v850e1"
|
||||
-msgstr "Compila para el procesador v850e"
|
||||
+msgstr "Compila para la variante v850es del procesador v850e1"
|
||||
|
||||
#: config/v850/v850.opt:98
|
||||
msgid "Compile for the v850e2 processor"
|
||||
@@ -8719,7 +8713,6 @@ msgid "Use multiply high instructions for high part of 32x32 multiply"
|
||||
msgstr "Usa instrucciones high de multiplicación para la parte high de la multiplicación 32x32"
|
||||
|
||||
#: config/microblaze/microblaze.opt:92
|
||||
-#, fuzzy
|
||||
msgid "Use hardware floating point conversion instructions"
|
||||
msgstr "Usa instrucciones de conversión de coma flotante de hardware"
|
||||
|
||||
@@ -9385,7 +9378,7 @@ msgstr "Inyecta las funciones friend dentro de espacios de nombres cerrados"
|
||||
|
||||
#: c-family/c.opt:819
|
||||
msgid "Don't emit dllexported inline functions unless needed"
|
||||
-msgstr ""
|
||||
+msgstr "No emite funciones en línea exportadas en dll a menos que sea necesario"
|
||||
|
||||
#: c-family/c.opt:826
|
||||
msgid "Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types."
|
||||
@@ -9409,7 +9402,7 @@ msgstr "Trata una especificaci
|
||||
|
||||
#: c-family/c.opt:858
|
||||
msgid "Specify which ABI to use for Objective-C family code and meta-data generation."
|
||||
-msgstr ""
|
||||
+msgstr "Especifica cuál ABI usar para el código de la familia Objective-C y la generación de metadatos."
|
||||
|
||||
#: c-family/c.opt:864
|
||||
msgid "Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed"
|
||||
@@ -9429,7 +9422,7 @@ msgstr "Activa la recolecci
|
||||
|
||||
#: c-family/c.opt:882
|
||||
msgid "Enable inline checks for nil receivers with the NeXT runtime and ABI version 2."
|
||||
-msgstr ""
|
||||
+msgstr "Activa las revisiones en línea para los receptores nil con el tiempo de ejecución NeXT y la ABI versión 2."
|
||||
|
||||
#: c-family/c.opt:887
|
||||
msgid "Enable Objective-C setjmp exception handling runtime"
|
||||
@@ -10028,9 +10021,8 @@ msgid "Run only the second compilation of -fcompare-debug"
|
||||
msgstr "Ejecuta sólo la segunda compilación de -fcompare-debug"
|
||||
|
||||
#: common.opt:875
|
||||
-#, fuzzy
|
||||
msgid "Perform comparison elimination after register allocation has finished"
|
||||
-msgstr "Realiza la eliminación de subexpresiones comunes globales despúes del alojamiento de registros"
|
||||
+msgstr "Realiza la eliminación de comparaciones después de terminar el alojamiento de registros"
|
||||
|
||||
#: common.opt:879
|
||||
msgid "Do not perform optimizations increasing noticeably stack usage"
|
||||
@@ -10085,9 +10077,8 @@ msgid "Delete useless null pointer checks"
|
||||
msgstr "Borra las revisiones de punteros nulos sin uso"
|
||||
|
||||
#: common.opt:937
|
||||
-#, fuzzy
|
||||
msgid "Try to convert virtual calls to direct ones."
|
||||
-msgstr "Trata de permitir que el enlazador convierta las llamadas PIC a llamadas directas"
|
||||
+msgstr "Trata de convertir las llamadas virtuales a llamadas directas."
|
||||
|
||||
#: common.opt:941
|
||||
msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
|
||||
@@ -10217,7 +10208,7 @@ msgstr "Realiza la carga redundante despu
|
||||
|
||||
#: common.opt:1110
|
||||
msgid "Perform global common subexpression elimination after register allocation"
|
||||
-msgstr "Realiza la eliminación de subexpresiones comunes globales despúes del alojamiento de registros"
|
||||
+msgstr "Realiza la eliminación de subexpresiones comunes globales después del alojamiento de registros"
|
||||
|
||||
#: common.opt:1116
|
||||
msgid "Enable in and out of Graphite representation"
|
||||
@@ -10923,9 +10914,8 @@ msgid "Enable loop invariant motion on trees"
|
||||
msgstr "Permite el movimiento invariante de bucles en árboles"
|
||||
|
||||
#: common.opt:1924
|
||||
-#, fuzzy
|
||||
msgid "Enable loop interchange transforms. Same as -floop-interchange"
|
||||
-msgstr "Activa la transformación Loop Interchange"
|
||||
+msgstr "Activa las transformaciones de intercambio de bucle. Igual que -floop-interchange"
|
||||
|
||||
#: common.opt:1928
|
||||
msgid "Create canonical induction variables in loops"
|
||||
@@ -11291,14 +11281,12 @@ msgid "argument must have complex type"
|
||||
msgstr "el argumento debe tener tipo complejo"
|
||||
|
||||
#: go/gofrontend/expressions.cc:7578
|
||||
-#, fuzzy
|
||||
msgid "complex arguments must have identical types"
|
||||
-msgstr "los argumentos cmplx deben tener tipos idénticos"
|
||||
+msgstr "los argumentos complejos deben tener tipos idénticos"
|
||||
|
||||
#: go/gofrontend/expressions.cc:7580
|
||||
-#, fuzzy
|
||||
msgid "complex arguments must have floating-point type"
|
||||
-msgstr "los argumentos cmplx deben tener tipo de coma flotante"
|
||||
+msgstr "los argumentos complejos deben tener tipo de coma flotante"
|
||||
|
||||
#: go/gofrontend/expressions.cc:8560
|
||||
msgid "expected function"
|
||||
@@ -11914,9 +11902,9 @@ msgid "redefinition of typedef %q+D with different type"
|
||||
msgstr "redefinición de la definición de tipo %q+D con un tipo diferente"
|
||||
|
||||
#: c-decl.c:1818
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "redefinition of typedef %q+D with variably modified type"
|
||||
-msgstr "redefinición de la definición de tipo %q+D con un tipo diferente"
|
||||
+msgstr "redefinición de la definición de tipo %q+D con un tipo modificado variablemente"
|
||||
|
||||
#: c-decl.c:1825
|
||||
#, gcc-internal-format
|
||||
@@ -13293,9 +13281,9 @@ msgid "prefix attributes are ignored for implementations"
|
||||
msgstr "se descartan los atributos de prefijo para las implementaciones"
|
||||
|
||||
#: c-parser.c:1554
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unexpected attribute"
|
||||
-msgstr "Se esperaba un nombre de atributo de bit"
|
||||
+msgstr "atributo inesperado"
|
||||
|
||||
#: c-parser.c:1596
|
||||
#, gcc-internal-format
|
||||
@@ -13644,14 +13632,14 @@ msgid "unknown property attribute"
|
||||
msgstr "atributo de propiedad desconocido"
|
||||
|
||||
#: c-parser.c:7964 cp/parser.c:23157
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "missing %<=%> (after %<getter%> attribute)"
|
||||
-msgstr "falta un %<(%> después de %<#pragma pack%> - se descarta"
|
||||
+msgstr "falta un %<=%> (después del atributo %<getter%>)"
|
||||
|
||||
#: c-parser.c:7967 cp/parser.c:23160
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "missing %<=%> (after %<setter%> attribute)"
|
||||
-msgstr "falta un %<(%> después de %<#pragma pack%> - se descarta"
|
||||
+msgstr "falta un %<=%> (después del atributo %<setter%>)"
|
||||
|
||||
#: c-parser.c:7981 cp/parser.c:23174
|
||||
#, gcc-internal-format
|
||||
@@ -15393,7 +15381,7 @@ msgid "caller edge frequency is too large"
|
||||
msgstr "la frecuencia de borde llamador es demasiado grande"
|
||||
|
||||
#: cgraphunit.c:435
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "caller edge frequency %i does not match BB frequency %i"
|
||||
msgstr "la frecuencia de borde llamador %i no coincide con la frecuencia BB %i"
|
||||
|
||||
@@ -15520,7 +15508,7 @@ msgstr "puntos de borde para una declaraci
|
||||
#: cgraphunit.c:685
|
||||
#, gcc-internal-format
|
||||
msgid "a call to thunk improperly represented in the call graph:"
|
||||
-msgstr ""
|
||||
+msgstr "una llamada a thunk representada impropiamente en el grafo de llamada:"
|
||||
|
||||
#: cgraphunit.c:693
|
||||
#, gcc-internal-format
|
||||
@@ -15548,9 +15536,9 @@ msgid "verify_cgraph_node failed"
|
||||
msgstr "falló verify_cgraph_node"
|
||||
|
||||
#: cgraphunit.c:817
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute"
|
||||
-msgstr "el atributo %<assign%> genera un conflicto con el atributo %<retain%>"
|
||||
+msgstr "el atributo %<weakref%> se debe acompañar con un atributo %<alias%>"
|
||||
|
||||
#: cgraphunit.c:872 cgraphunit.c:909
|
||||
#, gcc-internal-format
|
||||
@@ -15558,14 +15546,14 @@ msgid "%<externally_visible%> attribute have effect only on public objects"
|
||||
msgstr "el atributo %<externally_visible%> sólo tiene efecto en objetos públicos"
|
||||
|
||||
#: cgraphunit.c:881
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<weakref%> attribute ignored because function is defined"
|
||||
-msgstr "se descarta el atributo %qE porque %qT ya está definido"
|
||||
+msgstr "se descarta el atributo %<weakref%> porque ya se definió la función"
|
||||
|
||||
#: cgraphunit.c:919
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<weakref%> attribute ignored because variable is initialized"
|
||||
-msgstr "se descarta el atributo %qE porque %qT ya está definido"
|
||||
+msgstr "se descarta el atributo %<weakref%> porque ya se inicializó la variable"
|
||||
|
||||
#: cgraphunit.c:1167 cgraphunit.c:1193
|
||||
#, gcc-internal-format
|
||||
@@ -17114,9 +17102,9 @@ msgid "-iplugindir <dir> option not passed from the gcc driver"
|
||||
msgstr "no se pasó la opción -iplugindir <dir> del controlador de gcc"
|
||||
|
||||
#: profile.c:417
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "corrupted profile info: edge count exceeds maximal count"
|
||||
-msgstr "información de análisis de perfil corrupta: el borde de %i a %i excede la cuenta maximal"
|
||||
+msgstr "información de análisis de perfil corrupta: la cuenta de borde excede la cuenta maximal"
|
||||
|
||||
#: profile.c:421
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -17598,7 +17586,7 @@ msgstr "este objetivo no admite %qs"
|
||||
#: toplev.c:1323
|
||||
#, gcc-internal-format
|
||||
msgid "Graphite loop optimizations cannot be used (-fgraphite, -fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine, -floop-parallelize-all, and -ftree-loop-linear)"
|
||||
-msgstr ""
|
||||
+msgstr "No se pueden usar las optimizaciones de bucle Graphite (-fgraphite, -fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine, -floop-parallelize-all, y -ftree-loop-linear)"
|
||||
|
||||
#: toplev.c:1352
|
||||
#, gcc-internal-format
|
||||
@@ -18835,9 +18823,9 @@ msgid "correcting inconsistent value profile: %s profiler overall count (%d) doe
|
||||
msgstr "se corrige el valor de perfil inconsistente: %s la cuenta general del perfilador (%d) no coincide con la cuenta BB (%d)"
|
||||
|
||||
#: value-prof.c:476
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "corrupted value profile: %s profile counter (%d out of %d) inconsistent with basic-block count (%d)"
|
||||
-msgstr "valor de perfil corrupto: %s la cuenta general del perfilador (%d) no coincide con la cuenta BB (%d)"
|
||||
+msgstr "valor de perfil corrupto: la cuenta del perfilador %s (%d de %d) es inconsistente con la cuenta bloque-básico (%d)"
|
||||
|
||||
#: var-tracking.c:6159
|
||||
#, gcc-internal-format
|
||||
@@ -19479,9 +19467,9 @@ msgid "alignment for %q+D must be at least %d"
|
||||
msgstr "la alineación para %q+D debe ser por lo menos %d"
|
||||
|
||||
#: c-family/c-common.c:6666
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "inline function %q+D declared weak"
|
||||
-msgstr "la función inline %q+D no se puede declarar weak"
|
||||
+msgstr "la función inline %q+D se declaró weak"
|
||||
|
||||
#: c-family/c-common.c:6671
|
||||
#, gcc-internal-format
|
||||
@@ -21039,7 +21027,7 @@ msgstr "no se puede entender kern.osversion %q.*s"
|
||||
#: config/darwin.c:1608
|
||||
#, gcc-internal-format
|
||||
msgid "the use of _OBJC_-prefixed variable names to select meta-data sections is deprecated at 4.6 and will be removed in 4.7"
|
||||
-msgstr ""
|
||||
+msgstr "el uso de nombre de variables con prefijo _OBJC_ para seleccionar secciones de metadatos es obsoleto en 4.6 y se eliminará en 4.7"
|
||||
|
||||
#: config/darwin.c:1782
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -21171,7 +21159,7 @@ msgstr "PIC s
|
||||
#: config/darwin.h:150
|
||||
#, gcc-internal-format
|
||||
msgid "%<-fobjc-abi-version%> >= 2 is only supported on %<-m64%> targets for %<-fnext-runtime%>"
|
||||
-msgstr ""
|
||||
+msgstr "%<-fobjc-abi-version%> >= 2 sólo se admite en objetivos %<-m64%> para %<-fnext-runtime%>"
|
||||
|
||||
#. Mach-O supports 'weak imports', and 'weak definitions' in coalesced
|
||||
#. sections. machopic_select_section ensures that weak variables go in
|
||||
@@ -21537,14 +21525,14 @@ msgid "static variable %q+D is marked dllimport"
|
||||
msgstr "la variable estática %q+D se marcó como dllimport"
|
||||
|
||||
#: config/avr/avr.c:249
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unrecognized argument to -mmcu= option: %qs"
|
||||
-msgstr "no se reconoce el argumento para la opción --help=: %q.*s"
|
||||
+msgstr "no se reconoce el argumento para la opción -mmcu=: %qs"
|
||||
|
||||
#: config/avr/avr.c:250
|
||||
#, gcc-internal-format
|
||||
msgid "See --target-help for supported MCUs"
|
||||
-msgstr ""
|
||||
+msgstr "Vea --target-help para MCUs permitidos"
|
||||
|
||||
#: config/avr/avr.c:497
|
||||
#, gcc-internal-format
|
||||
@@ -24116,14 +24104,14 @@ msgid "parameter list does not match a valid signature for %s()"
|
||||
msgstr "la lista de parámetros no ofrece una firma válida para %s()"
|
||||
|
||||
#: config/spu/spu.c:548
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "bad value (%s) for -march= switch"
|
||||
-msgstr "valor erróneo (%s) para el interruptor -masm="
|
||||
+msgstr "valor erróneo (%s) para la opción -march="
|
||||
|
||||
#: config/spu/spu.c:559
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "bad value (%s) for -mtune= switch"
|
||||
-msgstr "valor erróneo %qs para la opción -mtune"
|
||||
+msgstr "valor erróneo (%s) para la opción -mtune="
|
||||
|
||||
#: config/spu/spu.c:5388 config/spu/spu.c:5391
|
||||
#, gcc-internal-format
|
||||
@@ -27003,9 +26991,9 @@ msgid "const %qs cannot be declared %<mutable%>"
|
||||
msgstr "const %qs no se puede declarar %<mutable%>"
|
||||
|
||||
#: cp/decl.c:9226
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "reference %qs cannot be declared %<mutable%>"
|
||||
-msgstr "la función %qs no se puede declarar %<mutable%>"
|
||||
+msgstr "la referencia %qs no se puede declarar %<mutable%>"
|
||||
|
||||
#: cp/decl.c:9265
|
||||
#, gcc-internal-format
|
||||
@@ -28431,7 +28419,7 @@ msgstr "se omiti
|
||||
#: cp/mangle.c:2768
|
||||
#, gcc-internal-format
|
||||
msgid "string literal in function template signature"
|
||||
-msgstr ""
|
||||
+msgstr "literal de cadena en la firma de plantilla de función"
|
||||
|
||||
#: cp/mangle.c:3040
|
||||
#, gcc-internal-format
|
||||
@@ -29173,9 +29161,9 @@ msgid "non-scalar type"
|
||||
msgstr "tipo que no es escalar"
|
||||
|
||||
#: cp/parser.c:5957
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "ISO C++ does not allow %<alignof%> with a non-type"
|
||||
-msgstr "ISO C++ no permite inicializadores designados"
|
||||
+msgstr "ISO C++ no permite %<alignof%> con algo que no es tipo"
|
||||
|
||||
#: cp/parser.c:6016
|
||||
#, gcc-internal-format
|
||||
@@ -29283,9 +29271,9 @@ msgid "expected iteration-statement"
|
||||
msgstr "se esperaba una declaración de iteración"
|
||||
|
||||
#: cp/parser.c:9091
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "range-based-for loops are not allowed in C++98 mode"
|
||||
-msgstr "no se permiten las conversiones estándar en este contexto"
|
||||
+msgstr "no se permiten los bucles for basados en rango en el modo C++98"
|
||||
|
||||
#. Issue a warning about this use of a GNU extension.
|
||||
#: cp/parser.c:9213
|
||||
@@ -29679,9 +29667,9 @@ msgid "invalid use of %<auto%>"
|
||||
msgstr "uso inválido de %<auto%>"
|
||||
|
||||
#: cp/parser.c:15691
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "types may not be defined in template arguments"
|
||||
-msgstr "no se pueden definir tipos en tipos de parámetro"
|
||||
+msgstr "no se pueden definir tipos en argumentos de plantilla"
|
||||
|
||||
#: cp/parser.c:15772
|
||||
#, gcc-internal-format
|
||||
@@ -30573,9 +30561,9 @@ msgid "%qE is not a valid template argument for type %qT because string literals
|
||||
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque las literales de cadena nunca se pueden usar en este contexto"
|
||||
|
||||
#: cp/pt.c:5403
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "in template argument for type %qT "
|
||||
-msgstr "%qE no es un argumento de plantilla válido para el tipo %qT"
|
||||
+msgstr "en el argumento de plantilla para el tipo %qT "
|
||||
|
||||
#: cp/pt.c:5443
|
||||
#, gcc-internal-format
|
||||
@@ -31491,9 +31479,9 @@ msgid "the value of %qD is not usable in a constant expression"
|
||||
msgstr "el valor de %qD no se puede usar en una expresión constante"
|
||||
|
||||
#: cp/semantics.c:6722
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%qD used in its own initializer"
|
||||
-msgstr "se usó la variable %q#D con tipo %<auto%> en su propio inicializador"
|
||||
+msgstr "se usó %qD en su propio inicializador"
|
||||
|
||||
#: cp/semantics.c:6727
|
||||
#, gcc-internal-format
|
||||
@@ -31586,14 +31574,14 @@ msgid "pointer comparison expression is not a constant expression"
|
||||
msgstr "la expresión de comparación de punteros no es una expresión constante"
|
||||
|
||||
#: cp/semantics.c:7636
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "division by zero is not a constant-expression"
|
||||
-msgstr "la expresión %qE no es una expresión constante"
|
||||
+msgstr "la división entre cero no es una expresión constante"
|
||||
|
||||
#: cp/semantics.c:7739
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "non-constant array initialization"
|
||||
-msgstr "el índice de matriz no es una constante en el inicializador"
|
||||
+msgstr "inicialización de una matriz que no es constante"
|
||||
|
||||
#: cp/semantics.c:7745
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -33394,9 +33382,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL"
|
||||
msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser INTEGER o LOGICAL"
|
||||
|
||||
#: fortran/class.c:199
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Polymorphic array at %C not yet supported"
|
||||
-msgstr "Aún no se admite un parámetro de tipo diferido"
|
||||
+msgstr "Aún no se admite la matriz polimórfica en %C"
|
||||
|
||||
#. Since the extension field is 8 bit wide, we can only have
|
||||
#. up to 255 extension levels.
|
||||
@@ -33789,7 +33777,7 @@ msgstr "Extensi
|
||||
#: fortran/decl.c:2620
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Unlimited polymorphism at %C not yet supported"
|
||||
-msgstr ""
|
||||
+msgstr "Aún no se admite polimorfismo ilimitado en %C"
|
||||
|
||||
#: fortran/decl.c:2629
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -35105,9 +35093,9 @@ msgid "Fortran 2008: Rank remapping target is not rank 1 at %L"
|
||||
msgstr "Fortran 2008: El objetivo de remapeo de rango no es rango 1 en %L"
|
||||
|
||||
#: fortran/expr.c:3515
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Target expression in pointer assignment at %L must deliver a pointer result"
|
||||
-msgstr "La expresión de selección en una declaración GOTO computada en %L debe ser una expresión entera escalar"
|
||||
+msgstr "La expresión objetivo en la asignación de puntero en %L debe entregar un resultado puntero"
|
||||
|
||||
#: fortran/expr.c:3523
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -35150,9 +35138,9 @@ msgid "Pointer initialization target at %C must have the SAVE attribute"
|
||||
msgstr "El objetivo de inicialización de puntero en %C debe tener el atributo SAVE"
|
||||
|
||||
#: fortran/expr.c:3633
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Procedure pointer initialization target at %L may not be a procedure pointer"
|
||||
-msgstr "El objetivo de inicialización de puntero en %L no debe ser ALLOCATABLE"
|
||||
+msgstr "El objetivo de inicialización de puntero a procedimiento en %L tal vez no es un puntero a procedimiento"
|
||||
|
||||
#: fortran/expr.c:4383
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -35362,7 +35350,7 @@ msgstr "El procedimiento '%s' en %s en %L no es ni funci
|
||||
#: fortran/interface.c:1127
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
|
||||
-msgstr ""
|
||||
+msgstr "En %s en %L los procedimientos deben ser o todos SUBROUTINE o todos FUNCTION"
|
||||
|
||||
#: fortran/interface.c:1182 fortran/interface.c:1186
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -35455,19 +35443,19 @@ msgid "Dummy argument '%s' has to be a pointer or assumed-shape array without CO
|
||||
msgstr "El argumento dummy '%s' tiene que ser un puntero o una matriz de tamaño asumida sin atributo CONTIGUOUS - porque el argumento actual en %L no es simplemente contiguo y ambos son ASYNCHRONOUS o VOLATILE"
|
||||
|
||||
#: fortran/interface.c:1698
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Polymorphic scalar passed to array dummy argument '%s' at %L"
|
||||
-msgstr "Argumento dummy pasado como objeto no polimórfico de '%s' en %L"
|
||||
+msgstr "Se pasó un escalar polimórfico al argumento dummy de matriz '%s' en %L"
|
||||
|
||||
#: fortran/interface.c:1707
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Element of assumed-shaped or pointer array passed to array dummy argument '%s' at %L"
|
||||
-msgstr "Un elemento de la matriz de forma asumida se pasa al argumento dummy '%s' en %L"
|
||||
+msgstr "Se pasó un elemento de forma asumida o puntero a matriz al argumento dummy de matriz '%s' en %L"
|
||||
|
||||
#: fortran/interface.c:1719
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument '%s' at %L"
|
||||
-msgstr "Fortran 2003: Argumento actual CHARACTER escalar con argumento dummy de matriz '%s' en %L"
|
||||
+msgstr "Extensión: Argumento actual CHARACTER de género diferente a C_CHAR, sin género por defecto escalar con argumento dummy de matriz '%s' en %L"
|
||||
|
||||
#: fortran/interface.c:1727
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -35522,7 +35510,7 @@ msgstr "No coincide la longitud de car
|
||||
#: fortran/interface.c:2122
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Actual argument argument at %L to allocatable or pointer dummy argument '%s' must have a deferred length type parameter if and only if the dummy has one"
|
||||
-msgstr ""
|
||||
+msgstr "El argumento actual del argumento en %L para el argumento alojable o dummy puntero '%s' debe tener un parámetro de tipo de longitud diferido si y sólo si el dummy tiene uno"
|
||||
|
||||
#: fortran/interface.c:2136
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -35660,19 +35648,19 @@ msgid "Procedure '%s' called at %L is not explicitly declared"
|
||||
msgstr "El procedimiento '%s' que se llama en %L no tiene una interfaz explícita"
|
||||
|
||||
#: fortran/interface.c:2713
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "The pointer object '%s' at %L must have an explicit function interface or be declared as array"
|
||||
-msgstr "El procedimiento ELEMENTAL '%s' en %L debe tener una interfaz explícita"
|
||||
+msgstr "El objeto puntero '%s' en %L debe tener una interfaz de función explícita o declrararse como matriz"
|
||||
|
||||
#: fortran/interface.c:2721
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "The allocatable object '%s' at %L must have an explicit function interface or be declared as array"
|
||||
-msgstr "El procedimiento ELEMENTAL '%s' en %L debe tener una interfaz explícita"
|
||||
+msgstr "El objeto allocatable '%s' en %L debe tener una interfaz de función explícita o declararse como matriz"
|
||||
|
||||
#: fortran/interface.c:2729
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Allocatable function '%s' at %L must have an explicit function interface"
|
||||
-msgstr "La función de longitud de carácter automática '%s' que no es constante en %L debe una interfaz explícita"
|
||||
+msgstr "La función allocatable '%s' en %L debe tener una interfaz de función explícita"
|
||||
|
||||
#: fortran/interface.c:2739
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -36656,9 +36644,9 @@ msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
|
||||
msgstr "La etiqueta MOLD en %L tiene conflictos con la etiqueta SOURCE en %L"
|
||||
|
||||
#: fortran/match.c:3139
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag"
|
||||
-msgstr "El objeto de alojamiento en %L con un parámetro de tipo diferido requiere una especificación de tipo o una etiqueta SOURCE"
|
||||
+msgstr "El objeto de alojamiento en %L con un parámetro de tipo diferido requiere una especificación de tipo o una etiqueta SOURCE o una etiqueta MOLD"
|
||||
|
||||
#: fortran/match.c:3276
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -38146,24 +38134,24 @@ msgid "Unable to find a specific INTRINSIC procedure for the reference '%s' at %
|
||||
msgstr "No se puede encontrar un procedimiento INTRINSIC específico para la referencia '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:347
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Fortran 2008: Argument '%s' of pure function '%s' at %L with VALUE attribute but without INTENT(IN)"
|
||||
-msgstr "El argumento '%s' de la función pure '%s' en %L debe ser INTENT(IN)"
|
||||
+msgstr "Fortran 2008: El argumento '%s' de la función pure '%s' en %L debe tener el atributo VALUE pero sin INTENT(IN)"
|
||||
|
||||
#: fortran/resolve.c:352
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN) or VALUE"
|
||||
-msgstr "El argumento '%s' de la función pure '%s' en %L debe ser INTENT(IN)"
|
||||
+msgstr "El argumento '%s' de la función pure '%s' en %L debe ser INTENT(IN) o VALUE"
|
||||
|
||||
#: fortran/resolve.c:360
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Fortran 2008: Argument '%s' of pure subroutine '%s' at %L with VALUE attribute but without INTENT"
|
||||
-msgstr "El argumento '%s' de la función pure '%s' en %L debe tener especificado su INTENT"
|
||||
+msgstr "Fortran 2008: El argumento '%s' de la subrutina pure '%s' en %L debe tener atributo VALUE pero sin INTENT"
|
||||
|
||||
#: fortran/resolve.c:365
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Argument '%s' of pure subroutine '%s' at %L must have its INTENT specified or have the VALUE attribute"
|
||||
-msgstr "El argumento '%s' de la función pure '%s' en %L debe tener especificado su INTENT"
|
||||
+msgstr "El argumento '%s' de la subrutina pure '%s' en %L debe tener especificado su INTENT o tener el atributo VALUE"
|
||||
|
||||
#: fortran/resolve.c:386
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -38551,19 +38539,19 @@ msgid "Parameter '%s' to '%s' at %L must be either a TARGET or an associated poi
|
||||
msgstr "El parámetro '%s' para '%s' en %L debe ser un TARGET o un puntero asociado"
|
||||
|
||||
#: fortran/resolve.c:2736
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Coindexed argument not permitted in '%s' call at %L"
|
||||
-msgstr "no se permite usar punteros como valores case"
|
||||
+msgstr "No se permite un argumento coindizado en la llamada '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:2759
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Array section not permitted in '%s' call at %L"
|
||||
-msgstr "Más argumentos actuales que formales en la llamada '%s' en %L"
|
||||
+msgstr "No se permite una sección de matriz en la llamada '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:2770
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Array section in '%s' call at %L"
|
||||
-msgstr "No se permite el nombre de función '%s' en %C"
|
||||
+msgstr "Sección de matriz en la llamada '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:2789
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -39077,9 +39065,9 @@ msgid "Allocate-object at %L also appears at %L"
|
||||
msgstr "El objeto de alojamiento en %L también aparece en %L"
|
||||
|
||||
#: fortran/resolve.c:7064 fortran/resolve.c:7070
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Allocate-object at %L is subobject of object at %L"
|
||||
-msgstr "El objeto de alojamiento en %L también aparece en %L"
|
||||
+msgstr "El objeto de alojamiento en %L es un subobjeto del objeto en %L"
|
||||
|
||||
#. The cases overlap, or they are the same
|
||||
#. element in the list. Either way, we must
|
||||
@@ -39179,7 +39167,7 @@ msgstr "Bloque CLASS IS doble en la declaraci
|
||||
#: fortran/resolve.c:8077
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
|
||||
-msgstr "El elemento de transferencia de datos en %L no puede ser polimórfico a menso que se procese con un procedimiento de entrada/salida definido"
|
||||
+msgstr "El elemento de transferencia de datos en %L no puede ser polimórfico a menos que se procese con un procedimiento de entrada/salida definido"
|
||||
|
||||
#: fortran/resolve.c:8089
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -39187,9 +39175,9 @@ msgid "Data transfer element at %L cannot have POINTER components"
|
||||
msgstr "El elemento de transferencia de datos en %L no puede tener componentes POINTER"
|
||||
|
||||
#: fortran/resolve.c:8097
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Data transfer element at %L cannot have procedure pointer components"
|
||||
-msgstr "El elemento de transferencia de datos en %L no puede tener componentes POINTER"
|
||||
+msgstr "El elemento de transferencia de datos en %L no puede tener componentes de puntero a procedimiento"
|
||||
|
||||
#: fortran/resolve.c:8104
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -39522,9 +39510,9 @@ msgid "ELEMENTAL function '%s' at %L must have a scalar result"
|
||||
msgstr "La función ELEMENTAL '%s' en %L debe tener un resultado escalar"
|
||||
|
||||
#: fortran/resolve.c:10258
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
|
||||
-msgstr "La función de declaración '%s' en %L no se permite como un argumento actual"
|
||||
+msgstr "La función de declaración '%s' en %L no debe tener atributo puntero o alojable"
|
||||
|
||||
#: fortran/resolve.c:10277
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -39880,7 +39868,7 @@ msgstr "La longitud de car
|
||||
#: fortran/resolve.c:11655
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
|
||||
-msgstr ""
|
||||
+msgstr "El componente de carácter '%s' de '%s' en %L con longitud diferida debe ser POINTER o ALLOCATABLE"
|
||||
|
||||
#: fortran/resolve.c:11667
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -39908,41 +39896,41 @@ msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
|
||||
msgstr "El componente '%s' con CLASS en %L debe ser allocatable o pointer"
|
||||
|
||||
#: fortran/resolve.c:11771
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
|
||||
-msgstr "No se permite la matriz de tamaño asumido '%s' en la lista de nombres '%s' en %C"
|
||||
+msgstr "No se permite la matriz de tamaño asumido '%s' en la lista de nombres '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:11777
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
|
||||
-msgstr "El objeto de matriz NAMELIST '%s' no debe tener forma asumida en la lista de nombres '%s' en %L"
|
||||
+msgstr "Fortran 2003: Objeto de matriz NAMELIST '%s' con forma asumida en la lista de nombres '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:11784
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
|
||||
-msgstr "El objeto de matriz NAMELIST '%s' debe tener forma constante en la lista de nombres '%s' en %L"
|
||||
+msgstr "Fortran 2003: El objeto de matriz NAMELIST '%s' con forma que no es constante en la lista de nombres '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:11793
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
|
||||
-msgstr "El objeto de matriz NAMELIST '%s' debe tener forma constante en la lista de nombres '%s' en %L"
|
||||
+msgstr "Fortran 2003: El objeto de matriz NAMELIST '%s' con longitud de carácter que no es constante en la lista de nombres '%s' en %L"
|
||||
|
||||
#: fortran/resolve.c:11803
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
|
||||
-msgstr "El elemento de transferencia de datos en %L no puede ser polimórfico a menso que se procese con un procedimiento de entrada/salida definido"
|
||||
+msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L es polimórfico y requiere un procedimiento de entrada/salida definido"
|
||||
|
||||
#: fortran/resolve.c:11813
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
|
||||
-msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L no puede tener componentes ALLOCATABLE"
|
||||
+msgstr "Fortran 2003: El objeto NAMELIST '%s' en la lista de nombres '%s' en %L con componentes ALLOCATABLE o POINTER"
|
||||
|
||||
#. FIXME: Once UDDTIO is implemented, the following can be
|
||||
#. removed.
|
||||
#: fortran/resolve.c:11821
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
|
||||
-msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L no puede tener componentes ALLOCATABLE"
|
||||
+msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L tiene componentes ALLOCATABLE o POINTER y por lo tanto requere un procedimiento de entrada/salida definido"
|
||||
|
||||
#: fortran/resolve.c:11838
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -41617,7 +41605,7 @@ msgstr "las extensiones de clase no est
|
||||
#: objc/objc-act.c:632
|
||||
#, gcc-internal-format
|
||||
msgid "class extension for class %qE declared after its %<@implementation%>"
|
||||
-msgstr ""
|
||||
+msgstr "la extensión de clase para la clase %qE se declaró después de su %<@implementation%>"
|
||||
|
||||
#: objc/objc-act.c:647
|
||||
#, gcc-internal-format
|
||||
@@ -41640,24 +41628,24 @@ msgid "%<@package%> presently has the same effect as %<@public%>"
|
||||
msgstr "%<@package%> en este momento tiene el mismo efecto que %<@public%>"
|
||||
|
||||
#: objc/objc-act.c:734
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<@optional%> is not available in Objective-C 1.0"
|
||||
-msgstr "%<@property%> no está disponible en Objective-C 1.0"
|
||||
+msgstr "%<@optional%> no está disponible en Objective-C 1.0"
|
||||
|
||||
#: objc/objc-act.c:736
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<@required%> is not available in Objective-C 1.0"
|
||||
-msgstr "%<@property%> no está disponible en Objective-C 1.0"
|
||||
+msgstr "%<@required%> no está disponible en Objective-C 1.0"
|
||||
|
||||
#: objc/objc-act.c:744
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<@optional%> is allowed in @protocol context only"
|
||||
-msgstr "@optional/@required sólo se permiten en el contexto de @protocol"
|
||||
+msgstr "%<@optional%> sólo se permite en el contexto de @protocol"
|
||||
|
||||
#: objc/objc-act.c:746
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<@required%> is allowed in @protocol context only"
|
||||
-msgstr "@optional/@required sólo se permiten en el contexto de @protocol"
|
||||
+msgstr "%<@required%> sólo se permite en el contexto de @protocol"
|
||||
|
||||
#: objc/objc-act.c:853
|
||||
#, gcc-internal-format
|
||||
@@ -42013,14 +42001,14 @@ msgid "%<@throw%> argument is not an object"
|
||||
msgstr "el argumento %<@throw%> no es un objeto"
|
||||
|
||||
#: objc/objc-act.c:4138
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<@synchronized%> argument is not an object"
|
||||
-msgstr "el argumento %<@throw%> no es un objeto"
|
||||
+msgstr "el argumento %<@synchronized%> no es un objeto"
|
||||
|
||||
#: objc/objc-act.c:4273
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "type %qT does not have a known size"
|
||||
-msgstr "el tipo %q+D no tiene un tamaño conocido"
|
||||
+msgstr "el tipo %qT no tiene un tamaño conocido"
|
||||
|
||||
#: objc/objc-act.c:4450
|
||||
#, gcc-internal-format
|
||||
@@ -42134,27 +42122,27 @@ msgstr "la variable de instancia %qE se accedi
|
||||
#: objc/objc-act.c:5764 objc/objc-act.c:5784
|
||||
#, gcc-internal-format
|
||||
msgid "method %<%c%E%> declared %<@optional%> and %<@required%> at the same time"
|
||||
-msgstr ""
|
||||
+msgstr "se declaró el método %<%c%E%> como %<@optional%> y %<@required%> al mismo tiempo"
|
||||
|
||||
#: objc/objc-act.c:5768
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "previous declaration of %<%c%E%> as %<@required%>"
|
||||
-msgstr "declaración previa de %<%c%s%>"
|
||||
+msgstr "declaración previa de %<%c%E%> como %<@required%>"
|
||||
|
||||
#: objc/objc-act.c:5788
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "previous declaration of %<%c%E%> as %<@optional%>"
|
||||
-msgstr "declaración previa de %<%c%s%>"
|
||||
+msgstr "declaración previa de %<%c%E%> como %<@optional%>"
|
||||
|
||||
#: objc/objc-act.c:5848
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "duplicate declaration of method %<%c%E%> with conflicting types"
|
||||
-msgstr "declaración duplicada del método %<%c%E%>"
|
||||
+msgstr "declaración duplicada del método %<%c%E%> con tipos en conflicto"
|
||||
|
||||
#: objc/objc-act.c:5852
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "previous declaration of %<%c%E%>"
|
||||
-msgstr "declaración previa de %<%c%s%>"
|
||||
+msgstr "declaración previa de %<%c%E%>"
|
||||
|
||||
#: objc/objc-act.c:5914
|
||||
#, gcc-internal-format
|
||||
@@ -42172,9 +42160,9 @@ msgid "instance variable %qs has unknown size"
|
||||
msgstr "la variable de instancia %qs es de tamaño desconocido"
|
||||
|
||||
#: objc/objc-act.c:6025
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "instance variable %qs uses flexible array member"
|
||||
-msgstr "uso inválido de un miembro de matriz flexible"
|
||||
+msgstr "la variable de instancia %qs usa un miembro de matriz flexible"
|
||||
|
||||
#: objc/objc-act.c:6051
|
||||
#, gcc-internal-format
|
||||
@@ -42373,9 +42361,9 @@ msgid "%<@dynamic%> requires the @interface of the class to be available"
|
||||
msgstr "%<@dynamic%> requiere que @interface de la clase esté disponible"
|
||||
|
||||
#: objc/objc-act.c:7807
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "definition of protocol %qE not found"
|
||||
-msgstr "no se encontró la definición de método para %<%c%E%>"
|
||||
+msgstr "no se encontró la definición del protocolo %qE"
|
||||
|
||||
#. It would be nice to use warn_deprecated_use() here, but
|
||||
#. we are using TREE_CHAIN (which is supposed to be the
|
||||
@@ -42465,25 +42453,25 @@ msgid "%<-fobjc-gc%> is ignored for %<-fgnu-runtime%>"
|
||||
msgstr "se descarta %<-fobjc-gc%> por %<-fgnu-runtime%>"
|
||||
|
||||
#: objc/objc-gnu-runtime-abi-01.c:137
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fgnu-runtime%>"
|
||||
-msgstr "se descarta %<-fobjc-gc%> por %<-fgnu-runtime%>"
|
||||
+msgstr "se descarta %<-fobjc-sjlj-exceptions%> por %<-fgnu-runtime%>"
|
||||
|
||||
#: objc/objc-gnu-runtime-abi-01.c:2168 objc/objc-next-runtime-abi-01.c:2848
|
||||
#: objc/objc-next-runtime-abi-02.c:3636
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "non-objective-c type '%T' cannot be caught"
|
||||
-msgstr "el miembro que no es objeto %qs no se puede declarar %<mutable%>"
|
||||
+msgstr "no se puede atrapar el tipo '%T' que no es de objective-c"
|
||||
|
||||
#: objc/objc-next-runtime-abi-01.c:150
|
||||
#, gcc-internal-format
|
||||
msgid "%<-fobjc-sjlj-exceptions%> is the only supported exceptions system for %<-fnext-runtime%> with %<-fobjc-abi-version%> < 2"
|
||||
-msgstr ""
|
||||
+msgstr "%<-fobjc-sjlj-exceptions%> es la única excepción a sistema admitida para %<-fnext-runtime%> con %<-fobjc-abi-version%> < 2"
|
||||
|
||||
#: objc/objc-next-runtime-abi-02.c:247
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fnext-runtime%> when %<-fobjc-abi-version%> >= 2"
|
||||
-msgstr "se descarta %<-fobjc-gc%> por %<-fgnu-runtime%>"
|
||||
+msgstr "se descarta %<-fobjc-sjlj-exceptions%> por %<-fnext-runtime%> cuando %<-fobjc-abi-version%> >= 2"
|
||||
|
||||
#: objc/objc-runtime-shared-support.c:431
|
||||
#, gcc-internal-format
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
From 7a43b3a2e2c0d9cf557ac45577cc42c6d72e0065 Mon Sep 17 00:00:00 2001
|
||||
From: baldrick <baldrick@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 5 Apr 2011 08:13:16 +0000
|
||||
Subject: [PATCH] The parameters for functions from the frexp family were the wrong way
|
||||
round. Swap them.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171972 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 3340dc4..728b631 100644
|
||||
--- a/gcc/fortran/f95-lang.c
|
||||
+++ b/gcc/fortran/f95-lang.c
|
||||
@@ -695,10 +695,9 @@ build_builtin_fntypes (tree *fntype, tree type)
|
||||
type, integer_type_node, NULL_TREE);
|
||||
/* type (*) (void) */
|
||||
fntype[3] = build_function_type_list (type, NULL_TREE);
|
||||
- /* type (*) (&int, type) */
|
||||
- fntype[4] = build_function_type_list (type,
|
||||
+ /* type (*) (type, &int) */
|
||||
+ fntype[4] = build_function_type_list (type, type,
|
||||
build_pointer_type (integer_type_node),
|
||||
- type,
|
||||
NULL_TREE);
|
||||
/* type (*) (int, type) */
|
||||
fntype[5] = build_function_type_list (type,
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 56a8ff0c197b4b0f917e3b50ac0dd3ed26f300c3 Mon Sep 17 00:00:00 2001
|
||||
From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 5 Apr 2011 12:13:27 +0000
|
||||
Subject: [PATCH] 2011-04-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR bootstrap/48431
|
||||
* lto-plugin.c (claim_file_handler): Do not declare vars in code.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171983 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 64a0164..661f10c 100644
|
||||
--- a/lto-plugin/lto-plugin.c
|
||||
+++ b/lto-plugin/lto-plugin.c
|
||||
@@ -851,11 +851,11 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
|
||||
/* We pass the offset of the actual file, not the archive header.
|
||||
Can't use PRIx64, because that's C99, so we have to print the
|
||||
64-bit hex int as two 32-bit ones. */
|
||||
- int lo, hi;
|
||||
+ int lo, hi, t;
|
||||
lo = file->offset & 0xffffffff;
|
||||
hi = ((int64_t)file->offset >> 32) & 0xffffffff;
|
||||
- int t = hi ? asprintf (&objname, "%s@0x%x%08x", file->name, lo, hi)
|
||||
- : asprintf (&objname, "%s@0x%x", file->name, lo);
|
||||
+ t = hi ? asprintf (&objname, "%s@0x%x%08x", file->name, lo, hi)
|
||||
+ : asprintf (&objname, "%s@0x%x", file->name, lo);
|
||||
check (t >= 0, LDPL_FATAL, "asprintf failed");
|
||||
lto_file.name = objname;
|
||||
}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
From 6d713959cbb05f7cd030d776bb52113eac8af075 Mon Sep 17 00:00:00 2001
|
||||
From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 5 Apr 2011 14:34:51 +0000
|
||||
Subject: [PATCH] * stor-layout.c (self_referential_size): Fix 2010-07-13 commit.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171989 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ed36c5b..a225dbf 100644
|
||||
--- a/gcc/stor-layout.c
|
||||
+++ b/gcc/stor-layout.c
|
||||
@@ -367,7 +367,7 @@ self_referential_size (tree size)
|
||||
VEC_safe_push (tree, gc, size_functions, fndecl);
|
||||
|
||||
/* Replace the original expression with a call to the size function. */
|
||||
- return build_call_expr_loc_vec (input_location, fndecl, args);
|
||||
+ return build_call_expr_loc_vec (UNKNOWN_LOCATION, fndecl, args);
|
||||
}
|
||||
|
||||
/* Take, queue and compile all the size functions. It is essential that
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,690 +0,0 @@
|
|||
From 66ebb4822dae1fd3c97ee62f9126615818150966 Mon Sep 17 00:00:00 2001
|
||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 5 Apr 2011 23:08:59 +0000
|
||||
Subject: [PATCH] * de.po: Update.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172010 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 8db4ba1..8f3af8f 100644
|
||||
--- a/gcc/po/de.po
|
||||
+++ b/gcc/po/de.po
|
||||
@@ -6,10 +6,10 @@
|
||||
# Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
-"Project-Id-Version: gcc 4.6-b20101218\n"
|
||||
+"Project-Id-Version: gcc 4.6.0\n"
|
||||
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
|
||||
"POT-Creation-Date: 2011-03-24 16:45+0000\n"
|
||||
-"PO-Revision-Date: 2011-03-05 19:50+0100\n"
|
||||
+"PO-Revision-Date: 2011-04-05 19:50+0100\n"
|
||||
"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||
"Language: de\n"
|
||||
@@ -1815,9 +1815,8 @@ msgid "The maximum amount of memory to be allocated by GCSE"
|
||||
msgstr "Maximalbetrag des von GCSE zu belegenden Speichers"
|
||||
|
||||
#: params.def:222
|
||||
-#, fuzzy
|
||||
msgid "The maximum ratio of insertions to deletions of expressions in GCSE"
|
||||
-msgstr "Die Höchstzahl der zum Abrollen von Schleifen zu betrachtenden Anweisungen"
|
||||
+msgstr "Das größte Verhältnis von Einfügungen zu Löschungen von Ausdrücken in GCSE"
|
||||
|
||||
#: params.def:233
|
||||
msgid "The threshold ratio for performing partial redundancy elimination after reload"
|
||||
@@ -1992,9 +1991,8 @@ msgid "Bound on size of expressions used in the scalar evolutions analyzer"
|
||||
msgstr "Schranke für Größe von Ausdrücken im skalaren Evolutions-Analysierer verwendet"
|
||||
|
||||
#: params.def:488
|
||||
-#, fuzzy
|
||||
msgid "Bound on the complexity of the expressions in the scalar evolutions analyzer"
|
||||
-msgstr "Schranke für Größe von Ausdrücken im skalaren Evolutions-Analysierer verwendet"
|
||||
+msgstr "Schranke für die Komplexität von Ausdrücken im skalaren Evolutions-Analysierer"
|
||||
|
||||
#: params.def:493
|
||||
msgid "Bound on the number of variables in Omega constraint systems"
|
||||
@@ -3442,7 +3440,7 @@ msgstr "AltiVec-Argument an Funktion ohne Prototyp übergeben"
|
||||
#: config/s390/s390.c:5206
|
||||
#, c-format
|
||||
msgid "symbolic memory references are only supported on z10 or later"
|
||||
-msgstr ""
|
||||
+msgstr "symbolische Speicherreferenzen werden nur auf z10 oder neuer unterstützt"
|
||||
|
||||
#: config/s390/s390.c:5217
|
||||
#, c-format
|
||||
@@ -3450,74 +3448,74 @@ msgid "cannot decompose address"
|
||||
msgstr "Adresse kann nicht zerlegt werden"
|
||||
|
||||
#: config/s390/s390.c:5276
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid comparison operator for 'E' output modifier"
|
||||
-msgstr "ungültiger Operand für Modifizierer »b«"
|
||||
+msgstr "ungültiger Vergleichsoperator für Ausgabemodifizierer »E«"
|
||||
|
||||
#: config/s390/s390.c:5297
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid reference for 'J' output modifier"
|
||||
-msgstr "ungültiger Operand für Modifizierer »b«"
|
||||
+msgstr "ungültige Referenz für Ausgabemodifizierer »J«"
|
||||
|
||||
#: config/s390/s390.c:5311
|
||||
#, c-format
|
||||
msgid "memory reference expected for 'O' output modifier"
|
||||
-msgstr ""
|
||||
+msgstr "Speicherreferenz für Ausgabemodifizierer »O« erwartet"
|
||||
|
||||
#: config/s390/s390.c:5322
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid address for 'O' output modifier"
|
||||
-msgstr "ungültiger Operand für Modifizierer »O«"
|
||||
+msgstr "ungültige Adresse für Ausgabemodifizierer »O«"
|
||||
|
||||
#: config/s390/s390.c:5340
|
||||
#, c-format
|
||||
msgid "memory reference expected for 'R' output modifier"
|
||||
-msgstr ""
|
||||
+msgstr "Speicherreferenz für Ausgabemodifizierer »R« erwartet"
|
||||
|
||||
#: config/s390/s390.c:5351
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid address for 'R' output modifier"
|
||||
-msgstr "ungültiger Operand für Modifizierer »b«"
|
||||
+msgstr "ungültige Adresse für Ausgabemodifizierer »R«"
|
||||
|
||||
#: config/s390/s390.c:5369
|
||||
#, c-format
|
||||
msgid "memory reference expected for 'S' output modifier"
|
||||
-msgstr ""
|
||||
+msgstr "Speicherreferenz für Ausgabemodifizierer »S« erwartet"
|
||||
|
||||
#: config/s390/s390.c:5379
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid address for 'S' output modifier"
|
||||
-msgstr "ungültiger Operand für Modifizierer »b«"
|
||||
+msgstr "ungültige Adresse für Ausgabemodifizierer »S«"
|
||||
|
||||
#: config/s390/s390.c:5399
|
||||
#, c-format
|
||||
msgid "register or memory expression expected for 'N' output modifier"
|
||||
-msgstr ""
|
||||
+msgstr "Register oder Speicherausdruck für Ausgabemodifizierer »N« erwartet"
|
||||
|
||||
#: config/s390/s390.c:5409
|
||||
#, c-format
|
||||
msgid "register or memory expression expected for 'M' output modifier"
|
||||
-msgstr ""
|
||||
+msgstr "Register oder Speicherausdruck für Ausgabemodifizierer »M« erwartet"
|
||||
|
||||
#: config/s390/s390.c:5474
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid constant - try using an output modifier"
|
||||
-msgstr "Ungültiger Operanden-Ausgabecode"
|
||||
+msgstr "Ungültige Konstante - anderen Ausgabemodifizierer probieren"
|
||||
|
||||
#: config/s390/s390.c:5477
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid constant for output modifier '%c'"
|
||||
-msgstr "ungültiger Operand für Modifizierer »o«"
|
||||
+msgstr "ungültige Konstante für Ausgabemodifizierer »%c«"
|
||||
|
||||
#: config/s390/s390.c:5484
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid expression - try using an output modifier"
|
||||
-msgstr "ungültiger Ausdruck für Min-L-Wert"
|
||||
+msgstr "ungültiger Ausdruck - anderen Ausgabemodifizierer probieren"
|
||||
|
||||
#: config/s390/s390.c:5487
|
||||
-#, fuzzy, c-format
|
||||
+#, c-format
|
||||
msgid "invalid expression for output modifier '%c'"
|
||||
-msgstr "ungültiger Operand für Modifizierer »o«"
|
||||
+msgstr "ungültiger Ausdruck für Ausgabemodifizierer »%c«"
|
||||
|
||||
#: config/score/score7.c:1207
|
||||
#, c-format
|
||||
@@ -5556,9 +5554,8 @@ msgid "Return pointers in both a0 and d0"
|
||||
msgstr "Zeiger sowohl in a0 als auch in d0 zurück geben"
|
||||
|
||||
#: config/mn10300/mn10300.opt:56
|
||||
-#, fuzzy
|
||||
msgid "Allow gcc to generate LIW instructions"
|
||||
-msgstr "GCC erlauben, den repeat/erepeat-Befehl zu verwenden"
|
||||
+msgstr "GCC erlauben, LIW-Befehle zu verwenden"
|
||||
|
||||
#: config/s390/tpf.opt:23
|
||||
msgid "Enable TPF-OS tracing code"
|
||||
@@ -6372,9 +6369,8 @@ msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation"
|
||||
msgstr "Eingebaute SSE4.1- und SSE4.2-Funktionen und Codeerzeugung nicht unterstützen"
|
||||
|
||||
#: config/i386/i386.opt:328
|
||||
-#, fuzzy
|
||||
msgid "%<-msse5%> was removed"
|
||||
-msgstr "»-msse5« wurde entfernt"
|
||||
+msgstr "%<-msse5%> wurde entfernt"
|
||||
|
||||
#: config/i386/i386.opt:333
|
||||
msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation"
|
||||
@@ -8180,13 +8176,12 @@ msgid "Set the max size of data eligible for the TDA area"
|
||||
msgstr "Maximalgröße der für den TDA-Bereich geeigneten Daten setzen"
|
||||
|
||||
#: config/v850/v850.opt:71
|
||||
-#, fuzzy
|
||||
msgid "Do not enforce strict alignment"
|
||||
-msgstr "Genaue Ausrichtung erzwingen"
|
||||
+msgstr "Genaue Ausrichtung nicht erzwingen"
|
||||
|
||||
#: config/v850/v850.opt:75
|
||||
msgid "Put jump tables for switch statements into the .data section rather than the .code section"
|
||||
-msgstr ""
|
||||
+msgstr "Sprungtabellen für »switch«-Anweisungen in den .data-Abschnitt statt in den .code-Abschnitt einfügen"
|
||||
|
||||
#: config/v850/v850.opt:82
|
||||
msgid "Compile for the v850 processor"
|
||||
@@ -8201,9 +8196,8 @@ msgid "Compile for the v850e1 processor"
|
||||
msgstr "Für v850e1-Prozessor übersetzen"
|
||||
|
||||
#: config/v850/v850.opt:94
|
||||
-#, fuzzy
|
||||
msgid "Compile for the v850es variant of the v850e1"
|
||||
-msgstr "Für v850e-Prozessor übersetzen"
|
||||
+msgstr "Für die v850es-Variante des v850e1 übersetzen"
|
||||
|
||||
#: config/v850/v850.opt:98
|
||||
msgid "Compile for the v850e2 processor"
|
||||
@@ -8726,13 +8720,12 @@ msgid "Use multiply high instructions for high part of 32x32 multiply"
|
||||
msgstr "Verwendet »multiply high«-Befehle für den oberen Teil einer 32x32 Multiplikation"
|
||||
|
||||
#: config/microblaze/microblaze.opt:92
|
||||
-#, fuzzy
|
||||
msgid "Use hardware floating point conversion instructions"
|
||||
-msgstr "Hardware-Fließkommakonvertierungbefehle verwenden"
|
||||
+msgstr "Hardware-Gleitkommakonvertierungbefehle verwenden"
|
||||
|
||||
#: config/microblaze/microblaze.opt:96
|
||||
msgid "Use hardware floating point square root instruction"
|
||||
-msgstr "Verwendet Hardware Fließkomma Wurzel-Instruktion"
|
||||
+msgstr "Verwendet Hardware-Gleitkomma-Wurzel-Instruktion"
|
||||
|
||||
#: config/microblaze/microblaze.opt:100
|
||||
msgid "Description for mxl-mode-executable"
|
||||
@@ -22953,17 +22946,17 @@ msgstr "inkonsistente Aufrufe von %qs können nicht behandelt werden"
|
||||
#: config/mips/mips.c:9227
|
||||
#, gcc-internal-format
|
||||
msgid "the %<interrupt%> attribute requires a MIPS32r2 processor"
|
||||
-msgstr ""
|
||||
+msgstr "das %<interrupt%>-Attribut erfordert einen MIPS32r2-Prozessor"
|
||||
|
||||
#: config/mips/mips.c:9229
|
||||
#, gcc-internal-format
|
||||
msgid "the %<interrupt%> attribute requires %<-msoft-float%>"
|
||||
-msgstr ""
|
||||
+msgstr "das %<interrupt%>-Attribut erfordert %<-msoft-float%>"
|
||||
|
||||
#: config/mips/mips.c:9231
|
||||
#, gcc-internal-format
|
||||
msgid "interrupt handlers cannot be MIPS16 functions"
|
||||
-msgstr ""
|
||||
+msgstr "Interrupthandler können keine MIPS16-Funktionen sein"
|
||||
|
||||
#: config/mips/mips.c:13214
|
||||
#, gcc-internal-format
|
||||
@@ -22971,24 +22964,24 @@ msgid "invalid argument to built-in function"
|
||||
msgstr "ungültiges Argument für eingebaute Funktion"
|
||||
|
||||
#: config/mips/mips.c:13455
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "built-in function %qE not supported for MIPS16"
|
||||
-msgstr "eingebaute Funktion %qs nicht für MIPS16 unterstützt"
|
||||
+msgstr "eingebaute Funktion %qE nicht für MIPS16 unterstützt"
|
||||
|
||||
#: config/mips/mips.c:14045
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%qs does not support MIPS16 code"
|
||||
-msgstr "%s unterstützt nicht %s"
|
||||
+msgstr "%qs unterstützt keinen MIPS16-Code"
|
||||
|
||||
#: config/mips/mips.c:15266
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "MIPS16 PIC for ABIs other than o32 and o64"
|
||||
-msgstr "Hardware-Fließkommacode für MIPS16 für ABIs außer o32 und o64"
|
||||
+msgstr "MIPS16 PIC für ABIs außer o32 und o64"
|
||||
|
||||
#: config/mips/mips.c:15269
|
||||
#, gcc-internal-format
|
||||
msgid "MIPS16 -mxgot code"
|
||||
-msgstr ""
|
||||
+msgstr "MIPS16 -mxgot Code"
|
||||
|
||||
#: config/mips/mips.c:15272
|
||||
#, gcc-internal-format
|
||||
@@ -23073,17 +23066,17 @@ msgstr "die Architektur %qs unterstützt keine paarweisen Einzel-Befehle"
|
||||
#: config/mips/mips.c:15762
|
||||
#, gcc-internal-format
|
||||
msgid "%qs requires a target that provides the %qs instruction"
|
||||
-msgstr ""
|
||||
+msgstr "%qs erfordert ein Ziel, das den %qs-Befehl unterstützt"
|
||||
|
||||
#: config/mips/mips.c:15867
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%qs requires branch-likely instructions"
|
||||
-msgstr "die Architektur %qs unterstützt keine Befehle mit Sprungwahrscheinlichkeit"
|
||||
+msgstr "%qs erfordert sprungwahrscheinliche Befehle"
|
||||
|
||||
#: config/mips/mips.c:15871
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "the %qs architecture does not support the synci instruction"
|
||||
-msgstr "die Architektur %qs unterstützt keine Befehle mit Sprungwahrscheinlichkeit"
|
||||
+msgstr "die Architektur %qs unterstützt nicht den synci-Befehl"
|
||||
|
||||
#: config/mips/mips.c:16343
|
||||
#, gcc-internal-format
|
||||
@@ -23177,100 +23170,100 @@ msgid "-munix=98 option required for C89 Amendment 1 features.\n"
|
||||
msgstr "Option -munix=98 für Eigenschaften des C89 Amendment 1 erforderlich.\n"
|
||||
|
||||
#: config/picochip/picochip.c:438
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "invalid AE type specified (%s)"
|
||||
-msgstr "falsches Typ-Argument von %qs"
|
||||
+msgstr "ungültiger AE-Typ angegeben (%s)"
|
||||
|
||||
#: config/picochip/picochip.c:461
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "invalid mul type specified (%s) - expected mac, mul or none"
|
||||
-msgstr ""
|
||||
+msgstr "ungültiger mul-Typ angegeben (%s) - mac, mul oder none erwartet"
|
||||
|
||||
#: config/picochip/picochip.c:756
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "unexpected mode %s encountered in picochip_emit_save_register"
|
||||
-msgstr ""
|
||||
+msgstr "unerwarteter Modus %s in picochip_emit_save_register gefunden"
|
||||
|
||||
#: config/picochip/picochip.c:923
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "defaulting to stack for %s register creation"
|
||||
-msgstr ""
|
||||
+msgstr "Erzeugung von Register %s erfolgt auf Stack"
|
||||
|
||||
#: config/picochip/picochip.c:1607
|
||||
#, gcc-internal-format
|
||||
msgid "LCFI labels have already been deferred"
|
||||
-msgstr ""
|
||||
+msgstr " LCFI-Marken wurden bereits zurückgestellt"
|
||||
|
||||
#: config/picochip/picochip.c:1670
|
||||
#, gcc-internal-format
|
||||
msgid "LM label has already been deferred"
|
||||
-msgstr ""
|
||||
+msgstr "LM-Marke wurde bereits zurückgestellt"
|
||||
|
||||
#: config/picochip/picochip.c:1680
|
||||
#, gcc-internal-format
|
||||
msgid "LCFI labels have already been deferred."
|
||||
-msgstr ""
|
||||
+msgstr "LCFI-Marken wurden bereits zurückgestellt."
|
||||
|
||||
#: config/picochip/picochip.c:1962
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "picochip_asm_output_opcode - Found multiple lines in VLIW packet %s"
|
||||
-msgstr ""
|
||||
+msgstr "picochip_asm_output_opcode - Mehrere Zeilen in VLIW-Paket %s gefunden"
|
||||
|
||||
#: config/picochip/picochip.c:2065
|
||||
#, gcc-internal-format
|
||||
msgid "picochip_asm_output_opcode - can%'t output unknown operator %c"
|
||||
-msgstr ""
|
||||
+msgstr "picochip_asm_output_opcode - unbekannter Operator %c kann nicht ausgegeben werden"
|
||||
|
||||
#: config/picochip/picochip.c:2316 config/picochip/picochip.c:2376
|
||||
#, gcc-internal-format
|
||||
msgid "%s: at least one operand can%'t be handled"
|
||||
-msgstr ""
|
||||
+msgstr "%s: mindestens ein Operand kann nicht behandelt werden"
|
||||
|
||||
#: config/picochip/picochip.c:2457
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "unknown short branch in %s (type %d)"
|
||||
-msgstr "Unbekanntes Zeichenketten-Token %s\n"
|
||||
+msgstr "unbekannter kurzer Sprung in %s (Typ %d)"
|
||||
|
||||
#: config/picochip/picochip.c:2494
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "unknown long branch in %s (type %d)"
|
||||
-msgstr ""
|
||||
+msgstr "unbekannter weiter Sprung in %s (Typ %d)"
|
||||
|
||||
#: config/picochip/picochip.c:2534 config/picochip/picochip.c:2602
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "PUT uses port array index %d, which is out of range [%d..%d)"
|
||||
-msgstr ""
|
||||
+msgstr "PUT verwendet Port-Feldindex %d, was außerhalb des Wertebereiches [%d..%d) liegt"
|
||||
|
||||
#: config/picochip/picochip.c:2568
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "GET uses port array index %d, which is out of range [%d..%d)"
|
||||
-msgstr ""
|
||||
+msgstr "GET verwendet Port-Feldindex %d, was außerhalb des Wertebereiches [%d..%d) liegt"
|
||||
|
||||
#: config/picochip/picochip.c:3439
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "too many ALU instructions emitted (%d)"
|
||||
-msgstr ""
|
||||
+msgstr "zu viele ALU-Befehle ausgegeben (%d)"
|
||||
|
||||
#: config/picochip/picochip.c:4071 config/picochip/picochip.c:4164
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: Second source operand is not a constant"
|
||||
-msgstr "»o«-Operand ist nicht konstant"
|
||||
+msgstr "%s: Zweiter Quelloperand ist keine Konstante"
|
||||
|
||||
#: config/picochip/picochip.c:4074 config/picochip/picochip.c:4125
|
||||
#: config/picochip/picochip.c:4167
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: Third source operand is not a constant"
|
||||
-msgstr "»o«-Operand ist nicht konstant"
|
||||
+msgstr "%s: Dritter Quelloperand ist keine Konstante"
|
||||
|
||||
#: config/picochip/picochip.c:4128
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: Fourth source operand is not a constant"
|
||||
-msgstr "»o«-Operand ist nicht konstant"
|
||||
+msgstr "%s: Vierter Quelloperand ist keine Konstante"
|
||||
|
||||
#: config/picochip/picochip.c:4423
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s (disable warning using -mno-inefficient-warnings)"
|
||||
-msgstr ""
|
||||
+msgstr "%s (Warnung kann mit -mno-inefficient-warnings ausgeschaltet werden)"
|
||||
|
||||
#: config/rs6000/host-darwin.c:60
|
||||
#, gcc-internal-format
|
||||
@@ -23332,29 +23325,29 @@ msgid "junk at end of #pragma longcall"
|
||||
msgstr "Ausschuss am Ende von #pragma longcall"
|
||||
|
||||
#: config/rs6000/rs6000-c.c:3473
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s only accepts %d arguments"
|
||||
-msgstr "unpassende Argumente"
|
||||
+msgstr "%s akzeptiert nur %d Argumente"
|
||||
|
||||
#: config/rs6000/rs6000-c.c:3478
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s only accepts 1 argument"
|
||||
-msgstr "-split hat kein Argument."
|
||||
+msgstr "%s akzeptiert nur 1 Argument"
|
||||
|
||||
#: config/rs6000/rs6000-c.c:3483
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s only accepts 2 arguments"
|
||||
-msgstr "%q+D benötigt entweder null oder zwei Argumente"
|
||||
+msgstr "%s akzeptiert nur 2 Argumente"
|
||||
|
||||
#: config/rs6000/rs6000-c.c:3548
|
||||
#, gcc-internal-format
|
||||
msgid "vec_extract only accepts 2 arguments"
|
||||
-msgstr ""
|
||||
+msgstr "vec_extract akzeptiert nur 2 Argumente"
|
||||
|
||||
#: config/rs6000/rs6000-c.c:3624
|
||||
#, gcc-internal-format
|
||||
msgid "vec_insert only accepts 3 arguments"
|
||||
-msgstr ""
|
||||
+msgstr "vec_insert akzeptiert nur 3 Argumente"
|
||||
|
||||
#: config/rs6000/rs6000-c.c:3727
|
||||
#, gcc-internal-format
|
||||
@@ -23369,17 +23362,17 @@ msgstr "ungültige Parameterkombination für intrinsisches AltiVec"
|
||||
#: config/rs6000/rs6000.c:2524
|
||||
#, gcc-internal-format
|
||||
msgid "-mrecip requires -ffinite-math or -ffast-math"
|
||||
-msgstr ""
|
||||
+msgstr "-mrecip erfordert -ffinite-math oder -ffast-math"
|
||||
|
||||
#: config/rs6000/rs6000.c:2526
|
||||
#, gcc-internal-format
|
||||
msgid "-mrecip requires -fno-trapping-math or -ffast-math"
|
||||
-msgstr ""
|
||||
+msgstr "-mrecip erfordert -fno-trapping-math oder -ffast-math"
|
||||
|
||||
#: config/rs6000/rs6000.c:2528
|
||||
#, gcc-internal-format
|
||||
msgid "-mrecip requires -freciprocal-math or -ffast-math"
|
||||
-msgstr ""
|
||||
+msgstr "-mrecip erfordert -freciprocal-math oder -ffast-math"
|
||||
|
||||
#: config/rs6000/rs6000.c:2622
|
||||
#, gcc-internal-format
|
||||
@@ -23387,14 +23380,14 @@ msgid "-m64 requires PowerPC64 architecture, enabling"
|
||||
msgstr "-m64 erfordert PowerPC64-Architektur voraus, eingeschaltet"
|
||||
|
||||
#: config/rs6000/rs6000.c:2747
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "AltiVec not supported in this target"
|
||||
-msgstr "Kellergrenzen nicht für dieses Ziel unterstützt"
|
||||
+msgstr "AltiVec wird für dieses Ziel nicht unterstützt"
|
||||
|
||||
#: config/rs6000/rs6000.c:2749
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "SPE not supported in this target"
|
||||
-msgstr "Kellergrenzen nicht für dieses Ziel unterstützt"
|
||||
+msgstr "SPE wird für dieses Ziel nicht unterstützt"
|
||||
|
||||
#: config/rs6000/rs6000.c:2776
|
||||
#, gcc-internal-format
|
||||
@@ -23414,37 +23407,37 @@ msgstr "unbekannte ABI-Typ (%s) für Vektorisierungsbibliothek bei Schalter -mve
|
||||
#: config/rs6000/rs6000.c:2901
|
||||
#, gcc-internal-format
|
||||
msgid "target attribute or pragma changes long double size"
|
||||
-msgstr ""
|
||||
+msgstr "Ziel-Attribut oder Pragma ändert Größe von long double"
|
||||
|
||||
#: config/rs6000/rs6000.c:2922 config/rs6000/rs6000.c:2937
|
||||
#, gcc-internal-format
|
||||
msgid "target attribute or pragma changes AltiVec ABI"
|
||||
-msgstr ""
|
||||
+msgstr "Ziel-Attribut oder Pragma ändert AltiVec ABI"
|
||||
|
||||
#: config/rs6000/rs6000.c:2954
|
||||
#, gcc-internal-format
|
||||
msgid "target attribute or pragma changes darwin64 ABI"
|
||||
-msgstr ""
|
||||
+msgstr "Ziel-Attribut oder Pragma ändert darwin64 ABI"
|
||||
|
||||
#: config/rs6000/rs6000.c:2995
|
||||
#, gcc-internal-format
|
||||
msgid "target attribute or pragma changes SPE ABI"
|
||||
-msgstr ""
|
||||
+msgstr "Ziel-Attribut oder Pragma ändert SPE ABI"
|
||||
|
||||
#: config/rs6000/rs6000.c:3317
|
||||
#, gcc-internal-format
|
||||
msgid "target attribute or pragma changes single precision floating point"
|
||||
-msgstr ""
|
||||
+msgstr "Ziel-Attribut oder Pragma ändert Gleitkomma mit einfacher Genauigkeit"
|
||||
|
||||
#: config/rs6000/rs6000.c:3320
|
||||
#, gcc-internal-format
|
||||
msgid "target attribute or pragma changes double precision floating point"
|
||||
-msgstr ""
|
||||
+msgstr "Ziel-Attribut oder Pragma ändert Gleitkomma mit doppelter Genauigkeit"
|
||||
|
||||
#: config/rs6000/rs6000.c:3367
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "unknown option for -mrecip=%s"
|
||||
-msgstr "Unbekannte CPU: -mcpu=%s"
|
||||
+msgstr "unbekannte Option für -mrecip=%s"
|
||||
|
||||
#: config/rs6000/rs6000.c:3834
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -23452,14 +23445,14 @@ msgid "unknown -m%s= option specified: '%s'"
|
||||
msgstr "unbekannte Option für -m%s= angegeben: »%s«"
|
||||
|
||||
#: config/rs6000/rs6000.c:3869
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "unknown value %s for -mfpu"
|
||||
-msgstr "Falscher Wert %qs für Schalter -mcpu"
|
||||
+msgstr "unbekannter Wert %s für -mfpu"
|
||||
|
||||
#: config/rs6000/rs6000.c:4256
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "invalid option for -mcmodel: '%s'"
|
||||
-msgstr "ungültige Option für -mfloat-gprs: »%s«"
|
||||
+msgstr "ungültige Option für -mcmodel: »%s«"
|
||||
|
||||
#: config/rs6000/rs6000.c:4386
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -23472,24 +23465,24 @@ msgid "not configured for ABI: '%s'"
|
||||
msgstr "nicht für ABI konfiguriert: »%s«"
|
||||
|
||||
#: config/rs6000/rs6000.c:4472
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "using darwin64 ABI"
|
||||
msgstr "darwin64-ABI wird verwendet"
|
||||
|
||||
#: config/rs6000/rs6000.c:4477
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "using old darwin ABI"
|
||||
msgstr "Altes darwin-ABI wird verwendet"
|
||||
|
||||
#: config/rs6000/rs6000.c:4484
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "using IBM extended precision long double"
|
||||
-msgstr "IBM long doubles mit erweiterter Genauigkeit werden verwendet"
|
||||
+msgstr "IBM long double mit erweiterter Genauigkeit wird verwendet"
|
||||
|
||||
#: config/rs6000/rs6000.c:4490
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "using IEEE extended precision long double"
|
||||
-msgstr "IEEE long doubles mit erweiterter Genauigkeit werden verwendet"
|
||||
+msgstr "IEEE long double mit erweiterter Genauigkeit wird verwendet"
|
||||
|
||||
#: config/rs6000/rs6000.c:4495
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -23497,14 +23490,14 @@ msgid "unknown ABI specified: '%s'"
|
||||
msgstr "unbekanntes ABI angegeben: »%s«"
|
||||
|
||||
#: config/rs6000/rs6000.c:4504
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "bad value (%s) for -mcpu"
|
||||
-msgstr "Falscher Wert (%s) für Schalter -mcpu"
|
||||
+msgstr "falscher Wert (%s) für -mcpu"
|
||||
|
||||
#: config/rs6000/rs6000.c:4511
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "bad value (%s) for -mtune"
|
||||
-msgstr "Falscher Wert (%s) für Schalter -mtune="
|
||||
+msgstr "falscher Wert (%s) für -mtune"
|
||||
|
||||
#: config/rs6000/rs6000.c:4522
|
||||
#, gcc-internal-format
|
||||
@@ -23517,9 +23510,9 @@ msgid "invalid option for -mfloat-gprs: '%s'"
|
||||
msgstr "ungültige Option für -mfloat-gprs: »%s«"
|
||||
|
||||
#: config/rs6000/rs6000.c:4546
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "unknown switch -mlong-double-%s"
|
||||
-msgstr "Unbekannter Schalter -mlong-double-%s"
|
||||
+msgstr "unbekannter Schalter -mlong-double-%s"
|
||||
|
||||
#: config/rs6000/rs6000.c:4567
|
||||
#, gcc-internal-format
|
||||
@@ -23534,12 +23527,12 @@ msgstr "unbekannte Option -malign-XXXXX angegeben: »%s«"
|
||||
#: config/rs6000/rs6000.c:4582
|
||||
#, gcc-internal-format
|
||||
msgid "-msingle-float option equivalent to -mhard-float"
|
||||
-msgstr ""
|
||||
+msgstr "Option -msingle-float ist äquivalent zu -mhard-float"
|
||||
|
||||
#: config/rs6000/rs6000.c:4598
|
||||
#, gcc-internal-format
|
||||
msgid "-msimple-fpu option ignored"
|
||||
-msgstr ""
|
||||
+msgstr "Option -msimple-fpu ignoriert"
|
||||
|
||||
#: config/rs6000/rs6000.c:7966
|
||||
#, gcc-internal-format
|
||||
@@ -23562,9 +23555,9 @@ msgid "GCC vector passed by reference: non-standard ABI extension with no compat
|
||||
msgstr "GCC-Vektor per Referenz übergegeben: Nicht-Standard-ABI-Erweiterung ohne Kompatibilitätsgarantie"
|
||||
|
||||
#: config/rs6000/rs6000.c:10003
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "internal error: builtin function to %s already processed"
|
||||
-msgstr "Die Eingabedatei als bereits vorverarbeitet behandeln"
|
||||
+msgstr "interner Fehler: Eingebaute Funktion auf %s bereits verarbeitet"
|
||||
|
||||
#: config/rs6000/rs6000.c:10950
|
||||
#, gcc-internal-format
|
||||
@@ -23592,14 +23585,14 @@ msgid "argument 3 must be a 4-bit unsigned literal"
|
||||
msgstr "Argument 3 muss ein vorzeichenloses 4-Bit-Symbol sein"
|
||||
|
||||
#: config/rs6000/rs6000.c:11419
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "argument 3 must be a 2-bit unsigned literal"
|
||||
-msgstr "Argument 3 muss ein vorzeichenloses 4-Bit-Symbol sein"
|
||||
+msgstr "Argument 3 muss ein vorzeichenloses 2-Bit-Symbol sein"
|
||||
|
||||
#: config/rs6000/rs6000.c:11431
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "argument 3 must be a 1-bit unsigned literal"
|
||||
-msgstr "Argument 3 muss ein vorzeichenloses 4-Bit-Symbol sein"
|
||||
+msgstr "Argument 3 muss ein vorzeichenloses 1-Bit-Symbol sein"
|
||||
|
||||
#: config/rs6000/rs6000.c:11614
|
||||
#, gcc-internal-format
|
||||
@@ -23637,14 +23630,14 @@ msgid "argument 1 of __builtin_spe_predicate is out of range"
|
||||
msgstr "Argument 1 von __builtin_spe_predicate ist außerhalb des Wertebereiches"
|
||||
|
||||
#: config/rs6000/rs6000.c:13716
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "internal error: builtin function %s had no type"
|
||||
-msgstr "interner Fehler - zu viele Schnittstellentypen"
|
||||
+msgstr "interner Fehler: eingebaute Funktion %s hatte keinen Typ"
|
||||
|
||||
#: config/rs6000/rs6000.c:13723
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "internal error: builtin function %s had an unexpected return type %s"
|
||||
-msgstr ""
|
||||
+msgstr "interner Fehler: eingebaute Funktion %s hatte unerwarteten Rückgabetyp %s"
|
||||
|
||||
#: config/rs6000/rs6000.c:13736
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
From 578ce9461ebac7a6ec001c0025e0b854385ec39c Mon Sep 17 00:00:00 2001
|
||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 6 Apr 2011 16:05:18 +0000
|
||||
Subject: [PATCH] * gcov-io.c: Use GCC Runtime Library Exception.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172054 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 6d371cd..37c1c3e 100644
|
||||
--- a/gcc/gcov-io.c
|
||||
+++ b/gcc/gcov-io.c
|
||||
@@ -16,8 +16,13 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
-You should have received a copy of the GNU General Public License
|
||||
-along with GCC; see the file COPYING3. If not see
|
||||
+Under Section 7 of GPL version 3, you are granted additional
|
||||
+permissions described in the GCC Runtime Library Exception, version
|
||||
+3.1, as published by the Free Software Foundation.
|
||||
+
|
||||
+You should have received a copy of the GNU General Public License and
|
||||
+a copy of the GCC Runtime Library Exception along with this program;
|
||||
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Routines declared in gcov-io.h. This file should be #included by
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,658 +0,0 @@
|
|||
From e86c60e8bb9da37bfbef63315f38d5154035392d Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 6 Apr 2011 20:39:20 +0000
|
||||
Subject: [PATCH] Backported from mainline
|
||||
2011-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/48335
|
||||
* expr.c (expand_assignment): Handle all possibilities
|
||||
if TO_RTX is CONCAT.
|
||||
* expmed.c (store_bit_field_1): Avoid trying to create
|
||||
invalid SUBREGs.
|
||||
(store_split_bit_field): If SUBREG_REG (op0) or
|
||||
op0 itself has smaller mode than word, return it
|
||||
for offset 0 and const0_rtx for out-of-bounds stores.
|
||||
If word is const0_rtx, skip it.
|
||||
|
||||
* gcc.c-torture/compile/pr48335-1.c: New test.
|
||||
* gcc.dg/pr48335-1.c: New test.
|
||||
* gcc.dg/pr48335-2.c: New test.
|
||||
* gcc.dg/pr48335-3.c: New test.
|
||||
* gcc.dg/pr48335-4.c: New test.
|
||||
* gcc.dg/pr48335-5.c: New test.
|
||||
* gcc.dg/pr48335-6.c: New test.
|
||||
* gcc.dg/pr48335-7.c: New test.
|
||||
* gcc.dg/pr48335-8.c: New test.
|
||||
* gcc.target/i386/pr48335-1.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172063 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index b0c1e23..6c35f8e 100644
|
||||
--- a/gcc/expmed.c
|
||||
+++ b/gcc/expmed.c
|
||||
@@ -457,8 +457,10 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
||||
&& bitsize == GET_MODE_BITSIZE (fieldmode)
|
||||
&& (!MEM_P (op0)
|
||||
? ((GET_MODE_SIZE (fieldmode) >= UNITS_PER_WORD
|
||||
- || GET_MODE_SIZE (GET_MODE (op0)) == GET_MODE_SIZE (fieldmode))
|
||||
- && byte_offset % GET_MODE_SIZE (fieldmode) == 0)
|
||||
+ || GET_MODE_SIZE (GET_MODE (op0)) == GET_MODE_SIZE (fieldmode))
|
||||
+ && ((GET_MODE (op0) == fieldmode && byte_offset == 0)
|
||||
+ || validate_subreg (fieldmode, GET_MODE (op0), op0,
|
||||
+ byte_offset)))
|
||||
: (! SLOW_UNALIGNED_ACCESS (fieldmode, MEM_ALIGN (op0))
|
||||
|| (offset * BITS_PER_UNIT % bitsize == 0
|
||||
&& MEM_ALIGN (op0) % GET_MODE_BITSIZE (fieldmode) == 0))))
|
||||
@@ -519,6 +521,7 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
||||
rtx insn;
|
||||
rtx start = get_last_insn ();
|
||||
rtx arg0 = op0;
|
||||
+ unsigned HOST_WIDE_INT subreg_off;
|
||||
|
||||
/* Get appropriate low part of the value being stored. */
|
||||
if (CONST_INT_P (value) || REG_P (value))
|
||||
@@ -542,15 +545,17 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
||||
arg0 = SUBREG_REG (op0);
|
||||
}
|
||||
|
||||
- insn = (GEN_FCN (icode)
|
||||
- (gen_rtx_SUBREG (fieldmode, arg0,
|
||||
- (bitnum % BITS_PER_WORD) / BITS_PER_UNIT
|
||||
- + (offset * UNITS_PER_WORD)),
|
||||
- value));
|
||||
- if (insn)
|
||||
+ subreg_off = (bitnum % BITS_PER_WORD) / BITS_PER_UNIT
|
||||
+ + (offset * UNITS_PER_WORD);
|
||||
+ if (validate_subreg (fieldmode, GET_MODE (arg0), arg0, subreg_off))
|
||||
{
|
||||
- emit_insn (insn);
|
||||
- return true;
|
||||
+ insn = (GEN_FCN (icode) (gen_rtx_SUBREG (fieldmode, arg0,
|
||||
+ subreg_off), value));
|
||||
+ if (insn)
|
||||
+ {
|
||||
+ emit_insn (insn);
|
||||
+ return true;
|
||||
+ }
|
||||
}
|
||||
delete_insns_since (start);
|
||||
}
|
||||
@@ -1106,22 +1111,32 @@ store_split_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize,
|
||||
if (GET_CODE (op0) == SUBREG)
|
||||
{
|
||||
int word_offset = (SUBREG_BYTE (op0) / UNITS_PER_WORD) + offset;
|
||||
- word = operand_subword_force (SUBREG_REG (op0), word_offset,
|
||||
- GET_MODE (SUBREG_REG (op0)));
|
||||
+ enum machine_mode sub_mode = GET_MODE (SUBREG_REG (op0));
|
||||
+ if (sub_mode != BLKmode && GET_MODE_SIZE (sub_mode) < UNITS_PER_WORD)
|
||||
+ word = word_offset ? const0_rtx : op0;
|
||||
+ else
|
||||
+ word = operand_subword_force (SUBREG_REG (op0), word_offset,
|
||||
+ GET_MODE (SUBREG_REG (op0)));
|
||||
offset = 0;
|
||||
}
|
||||
else if (REG_P (op0))
|
||||
{
|
||||
- word = operand_subword_force (op0, offset, GET_MODE (op0));
|
||||
+ enum machine_mode op0_mode = GET_MODE (op0);
|
||||
+ if (op0_mode != BLKmode && GET_MODE_SIZE (op0_mode) < UNITS_PER_WORD)
|
||||
+ word = offset ? const0_rtx : op0;
|
||||
+ else
|
||||
+ word = operand_subword_force (op0, offset, GET_MODE (op0));
|
||||
offset = 0;
|
||||
}
|
||||
else
|
||||
word = op0;
|
||||
|
||||
/* OFFSET is in UNITs, and UNIT is in bits.
|
||||
- store_fixed_bit_field wants offset in bytes. */
|
||||
- store_fixed_bit_field (word, offset * unit / BITS_PER_UNIT, thissize,
|
||||
- thispos, part);
|
||||
+ store_fixed_bit_field wants offset in bytes. If WORD is const0_rtx,
|
||||
+ it is just an out-of-bounds access. Ignore it. */
|
||||
+ if (word != const0_rtx)
|
||||
+ store_fixed_bit_field (word, offset * unit / BITS_PER_UNIT, thissize,
|
||||
+ thispos, part);
|
||||
bitsdone += thissize;
|
||||
}
|
||||
}
|
||||
diff --git a/gcc/expr.c b/gcc/expr.c
|
||||
index 3295156..1de0ce4 100644
|
||||
--- a/gcc/expr.c
|
||||
+++ b/gcc/expr.c
|
||||
@@ -4292,16 +4292,47 @@ expand_assignment (tree to, tree from, bool nontemporal)
|
||||
/* Handle expand_expr of a complex value returning a CONCAT. */
|
||||
else if (GET_CODE (to_rtx) == CONCAT)
|
||||
{
|
||||
- if (COMPLEX_MODE_P (TYPE_MODE (TREE_TYPE (from))))
|
||||
+ unsigned short mode_bitsize = GET_MODE_BITSIZE (GET_MODE (to_rtx));
|
||||
+ if (COMPLEX_MODE_P (TYPE_MODE (TREE_TYPE (from)))
|
||||
+ && bitpos == 0
|
||||
+ && bitsize == mode_bitsize)
|
||||
+ result = store_expr (from, to_rtx, false, nontemporal);
|
||||
+ else if (bitsize == mode_bitsize / 2
|
||||
+ && (bitpos == 0 || bitpos == mode_bitsize / 2))
|
||||
+ result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
|
||||
+ nontemporal);
|
||||
+ else if (bitpos + bitsize <= mode_bitsize / 2)
|
||||
+ result = store_field (XEXP (to_rtx, 0), bitsize, bitpos,
|
||||
+ mode1, from, TREE_TYPE (tem),
|
||||
+ get_alias_set (to), nontemporal);
|
||||
+ else if (bitpos >= mode_bitsize / 2)
|
||||
+ result = store_field (XEXP (to_rtx, 1), bitsize,
|
||||
+ bitpos - mode_bitsize / 2, mode1, from,
|
||||
+ TREE_TYPE (tem), get_alias_set (to),
|
||||
+ nontemporal);
|
||||
+ else if (bitpos == 0 && bitsize == mode_bitsize)
|
||||
{
|
||||
- gcc_assert (bitpos == 0);
|
||||
- result = store_expr (from, to_rtx, false, nontemporal);
|
||||
+ rtx from_rtx;
|
||||
+ result = expand_normal (from);
|
||||
+ from_rtx = simplify_gen_subreg (GET_MODE (to_rtx), result,
|
||||
+ TYPE_MODE (TREE_TYPE (from)), 0);
|
||||
+ emit_move_insn (XEXP (to_rtx, 0),
|
||||
+ read_complex_part (from_rtx, false));
|
||||
+ emit_move_insn (XEXP (to_rtx, 1),
|
||||
+ read_complex_part (from_rtx, true));
|
||||
}
|
||||
else
|
||||
{
|
||||
- gcc_assert (bitpos == 0 || bitpos == GET_MODE_BITSIZE (mode1));
|
||||
- result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
|
||||
- nontemporal);
|
||||
+ rtx temp = assign_stack_temp (GET_MODE (to_rtx),
|
||||
+ GET_MODE_SIZE (GET_MODE (to_rtx)),
|
||||
+ 0);
|
||||
+ write_complex_part (temp, XEXP (to_rtx, 0), false);
|
||||
+ write_complex_part (temp, XEXP (to_rtx, 1), true);
|
||||
+ result = store_field (temp, bitsize, bitpos, mode1, from,
|
||||
+ TREE_TYPE (tem), get_alias_set (to),
|
||||
+ nontemporal);
|
||||
+ emit_move_insn (XEXP (to_rtx, 0), read_complex_part (temp, false));
|
||||
+ emit_move_insn (XEXP (to_rtx, 1), read_complex_part (temp, true));
|
||||
}
|
||||
}
|
||||
else
|
||||
new file mode 100644
|
||||
index 0000000..6f81338
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48335-1.c
|
||||
@@ -0,0 +1,41 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+
|
||||
+struct S { float d; };
|
||||
+
|
||||
+void bar (struct S);
|
||||
+
|
||||
+void
|
||||
+f0 (int x)
|
||||
+{
|
||||
+ struct S s = {.d = 0.0f };
|
||||
+ ((char *) &s.d)[0] = x;
|
||||
+ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f1 (int x)
|
||||
+{
|
||||
+ struct S s = {.d = 0.0f };
|
||||
+ ((char *) &s.d)[1] = x;
|
||||
+ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f2 (int x)
|
||||
+{
|
||||
+ struct S s = {.d = 0.0f };
|
||||
+ ((char *) &s.d)[2] = x;
|
||||
+ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f3 (int x)
|
||||
+{
|
||||
+ struct S s = {.d = 0.0f };
|
||||
+ ((char *) &s.d)[3] = x;
|
||||
+ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-1.c b/gcc/testsuite/gcc.dg/pr48335-1.c
|
||||
new file mode 100644
|
||||
index 0000000..7a022ea
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-1.c
|
||||
@@ -0,0 +1,48 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef long long T __attribute__((may_alias));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ _Complex float d __attribute__((aligned (8)));
|
||||
+};
|
||||
+
|
||||
+void bar (struct S);
|
||||
+
|
||||
+void
|
||||
+f1 (T x)
|
||||
+{
|
||||
+ struct S s;
|
||||
+ *(T *) &s.d = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f2 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ *(char *) &s.d = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f3 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ ((char *) &s.d)[2] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f4 (int x, int y)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ ((char *) &s.d)[y] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-2.c b/gcc/testsuite/gcc.dg/pr48335-2.c
|
||||
new file mode 100644
|
||||
index 0000000..a37c079
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-2.c
|
||||
@@ -0,0 +1,58 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef long long T __attribute__((may_alias, aligned (1)));
|
||||
+typedef short U __attribute__((may_alias, aligned (1)));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ _Complex float d __attribute__((aligned (8)));
|
||||
+};
|
||||
+
|
||||
+void bar (struct S);
|
||||
+
|
||||
+void
|
||||
+f1 (T x)
|
||||
+{
|
||||
+ struct S s;
|
||||
+ *(T *) ((char *) &s.d + 1) = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f2 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ ((U *)((char *) &s.d + 1))[0] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f3 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ ((U *)((char *) &s.d + 1))[1] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f4 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ ((U *)((char *) &s.d + 1))[2] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f5 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0f };
|
||||
+ ((U *)((char *) &s.d + 1))[3] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-3.c b/gcc/testsuite/gcc.dg/pr48335-3.c
|
||||
new file mode 100644
|
||||
index 0000000..9041f59
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-3.c
|
||||
@@ -0,0 +1,48 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef short U __attribute__((may_alias, aligned (1)));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ double d;
|
||||
+};
|
||||
+
|
||||
+void bar (struct S);
|
||||
+
|
||||
+void
|
||||
+f1 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[0] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f2 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[1] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f3 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[2] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f4 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[3] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-4.c b/gcc/testsuite/gcc.dg/pr48335-4.c
|
||||
new file mode 100644
|
||||
index 0000000..98e9e1e
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-4.c
|
||||
@@ -0,0 +1,39 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef short U __attribute__((may_alias, aligned (1)));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ double d;
|
||||
+};
|
||||
+
|
||||
+void bar (struct S);
|
||||
+
|
||||
+void
|
||||
+f1 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[-1] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f2 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[-2] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f3 (int x)
|
||||
+{
|
||||
+ struct S s = { .d = 0.0 };
|
||||
+ ((U *)((char *) &s.d + 1))[5] = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-5.c b/gcc/testsuite/gcc.dg/pr48335-5.c
|
||||
new file mode 100644
|
||||
index 0000000..b189548
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-5.c
|
||||
@@ -0,0 +1,38 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef long long T __attribute__((may_alias));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ _Complex float d __attribute__((aligned (8)));
|
||||
+};
|
||||
+
|
||||
+int
|
||||
+f1 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return *(T *) &s.d;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f2 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return *(char *) &s.d;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f3 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((char *) &s.d)[2];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f4 (struct S x, int y)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((char *) &s.d)[y];
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-6.c b/gcc/testsuite/gcc.dg/pr48335-6.c
|
||||
new file mode 100644
|
||||
index 0000000..769130c
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-6.c
|
||||
@@ -0,0 +1,46 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef long long T __attribute__((may_alias, aligned (1)));
|
||||
+typedef short U __attribute__((may_alias, aligned (1)));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ _Complex float d __attribute__((aligned (8)));
|
||||
+};
|
||||
+
|
||||
+T
|
||||
+f1 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return *(T *) ((char *) &s.d + 1);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f2 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[0];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f3 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[1];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f4 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[2];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f5 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[3];
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-7.c b/gcc/testsuite/gcc.dg/pr48335-7.c
|
||||
new file mode 100644
|
||||
index 0000000..ddb15ee
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-7.c
|
||||
@@ -0,0 +1,38 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef short U __attribute__((may_alias, aligned (1)));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ double d;
|
||||
+};
|
||||
+
|
||||
+int
|
||||
+f1 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[0];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f2 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[1];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f3 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[2];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f4 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[3];
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr48335-8.c b/gcc/testsuite/gcc.dg/pr48335-8.c
|
||||
new file mode 100644
|
||||
index 0000000..bb06c15
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48335-8.c
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra" } */
|
||||
+
|
||||
+typedef short U __attribute__((may_alias, aligned (1)));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ double d;
|
||||
+};
|
||||
+
|
||||
+int
|
||||
+f1 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[-1];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f2 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[-2];
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+f3 (struct S x)
|
||||
+{
|
||||
+ struct S s = x;
|
||||
+ return ((U *)((char *) &s.d + 1))[5];
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/pr48335-1.c b/gcc/testsuite/gcc.target/i386/pr48335-1.c
|
||||
new file mode 100644
|
||||
index 0000000..08c5284
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr48335-1.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* PR middle-end/48335 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fno-tree-sra -msse2" } */
|
||||
+
|
||||
+#include <emmintrin.h>
|
||||
+
|
||||
+typedef __float128 T __attribute__((may_alias));
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ _Complex double d __attribute__((aligned (16)));
|
||||
+};
|
||||
+
|
||||
+void bar (struct S);
|
||||
+
|
||||
+void
|
||||
+f1 (T x)
|
||||
+{
|
||||
+ struct S s;
|
||||
+ *(T *) &s.d = x;
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+f2 (__m128d x)
|
||||
+{
|
||||
+ struct S s;
|
||||
+ _mm_store_pd ((double *) &s.d, x);
|
||||
+ __real__ s.d *= 7.0;
|
||||
+ bar (s);
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
From da3ed31e2090c6b8236bbc3be69433aca0d445f1 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 6 Apr 2011 20:40:24 +0000
|
||||
Subject: [PATCH] PR debug/48466
|
||||
* dwarf2out.c (based_loc_descr): If drap_reg is INVALID_REGNUM, use
|
||||
as base_reg whatever register reg has been eliminated to, instead
|
||||
of hardcoding STACK_POINTER_REGNUM.
|
||||
|
||||
* gcc.dg/guality/pr36977.c: New test.
|
||||
* gcc.dg/guality/pr48466.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172064 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 1e5917c..68d56b0 100644
|
||||
--- a/gcc/dwarf2out.c
|
||||
+++ b/gcc/dwarf2out.c
|
||||
@@ -13545,7 +13545,7 @@ based_loc_descr (rtx reg, HOST_WIDE_INT offset,
|
||||
int base_reg
|
||||
= DWARF_FRAME_REGNUM ((fde && fde->drap_reg != INVALID_REGNUM)
|
||||
? HARD_FRAME_POINTER_REGNUM
|
||||
- : STACK_POINTER_REGNUM);
|
||||
+ : REGNO (elim));
|
||||
return new_reg_loc_descr (base_reg, offset);
|
||||
}
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..3689fae
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/guality/pr36977.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* PR debug/36977 */
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-g" } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
|
||||
+
|
||||
+void
|
||||
+foo ()
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ struct { char c[100]; } cbig;
|
||||
+ struct { int i[800]; } ibig;
|
||||
+ struct { long l[900]; } lbig;
|
||||
+ struct { float f[200]; } fbig;
|
||||
+ struct { double d[300]; } dbig;
|
||||
+ struct { short s[400]; } sbig;
|
||||
+
|
||||
+ ibig.i[0] = 55; /* { dg-final { gdb-test 30 "ibig.i\[0\]" "55" } } */
|
||||
+ ibig.i[100] = 5; /* { dg-final { gdb-test 30 "ibig.i\[100\]" "5" } } */
|
||||
+ cbig.c[0] = '\0'; /* { dg-final { gdb-test 30 "cbig.c\[0\]" "'\\0'" } } */
|
||||
+ cbig.c[99] = 'A'; /* { dg-final { gdb-test 30 "cbig.c\[99\]" "'A'" } } */
|
||||
+ fbig.f[100] = 11.0; /* { dg-final { gdb-test 30 "fbig.f\[100\]" "11" } } */
|
||||
+ dbig.d[202] = 9.0; /* { dg-final { gdb-test 30 "dbig.d\[202\]" "9" } } */
|
||||
+ sbig.s[90] = 255; /* { dg-final { gdb-test 30 "sbig.s\[90\]" "255" } } */
|
||||
+ lbig.l[333] = 999; /* { dg-final { gdb-test 30 "lbig.l\[333\]" "999" } } */
|
||||
+
|
||||
+ foo ();
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/guality/pr48466.c b/gcc/testsuite/gcc.dg/guality/pr48466.c
|
||||
new file mode 100644
|
||||
index 0000000..8d5426a
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/guality/pr48466.c
|
||||
@@ -0,0 +1,41 @@
|
||||
+/* PR debug/48466 */
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-g" } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
|
||||
+
|
||||
+struct S { unsigned int a; unsigned int *b; };
|
||||
+struct T { struct S a; struct S b; };
|
||||
+struct U { const char *u; };
|
||||
+int n[10];
|
||||
+volatile int v;
|
||||
+
|
||||
+struct U
|
||||
+foo (const char *s)
|
||||
+{
|
||||
+ struct U r;
|
||||
+ r.u = s;
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+bar (struct T *s, int a, int b)
|
||||
+{
|
||||
+ s->a.a = a;
|
||||
+ s->a.b = &s->a.a;
|
||||
+ s->b.a = b;
|
||||
+ s->b.b = &s->b.a;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ struct T t;
|
||||
+ struct U x = foo ("this is x");
|
||||
+ struct S y, z;
|
||||
+ y.b = n; /* { dg-final { gdb-test 38 "t.a.a" "17" } } */
|
||||
+ y.a = 0; /* { dg-final { gdb-test 38 "*t.a.b" "17" } } */
|
||||
+ bar (&t, 17, 21); /* { dg-final { gdb-test 38 "t.b.a" "21" } } */
|
||||
+ v++; /* { dg-final { gdb-test 38 "*t.b.b" "21" } } */
|
||||
+ z = y;
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
From 3329b7447ab817bb0374a689f3b381a5781ed8aa Mon Sep 17 00:00:00 2001
|
||||
From: jyasskin <jyasskin@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 04:50:23 +0000
|
||||
Subject: [PATCH] Merge r172073 from trunk to the 4.6 release branch, to fix two
|
||||
ambiguities between extensions and new C++0x functions.
|
||||
|
||||
Tested: bootstrap + make check-c++ on x86_64
|
||||
|
||||
libstdc++-v3/ChangeLog:
|
||||
|
||||
2011-04-06 Jeffrey Yasskin <jyasskin@google.com>
|
||||
|
||||
* include/ext/algorithm (is_sorted): In C++0x mode import from
|
||||
namespace std.
|
||||
* include/ext/numeric (iota): In C++0x mode import from
|
||||
namespace std.
|
||||
* testsuite/ext/is_sorted/cxx0x.cc: New.
|
||||
* testsuite/ext/iota/cxx0x.cc: New.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172074 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 368b591..417a03a 100644
|
||||
--- a/libstdc++-v3/include/ext/algorithm
|
||||
+++ b/libstdc++-v3/include/ext/algorithm
|
||||
@@ -471,6 +471,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||
+ using std::is_sorted;
|
||||
+#else
|
||||
// is_sorted, a predicated testing whether a range is sorted in
|
||||
// nondescending order. This is an extension, not part of the C++
|
||||
// standard.
|
||||
@@ -526,6 +529,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
+#endif // __GXX_EXPERIMENTAL_CXX0X__
|
||||
|
||||
/**
|
||||
* @brief Find the median of three values.
|
||||
diff --git a/libstdc++-v3/include/ext/numeric b/libstdc++-v3/include/ext/numeric
|
||||
index d4a367f..b389177 100644
|
||||
--- a/libstdc++-v3/include/ext/numeric
|
||||
+++ b/libstdc++-v3/include/ext/numeric
|
||||
@@ -123,6 +123,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
power(_Tp __x, _Integer __n)
|
||||
{ return __power(__x, __n); }
|
||||
|
||||
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||
+ using std::iota;
|
||||
+#else
|
||||
/**
|
||||
* This is an SGI extension.
|
||||
* @ingroup SGIextensions
|
||||
@@ -141,9 +144,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
while (__first != __last)
|
||||
*__first++ = __value++;
|
||||
}
|
||||
+#endif // __GXX_EXPERIMENTAL_CXX0X__
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace
|
||||
|
||||
#endif
|
||||
-
|
||||
diff --git a/libstdc++-v3/testsuite/ext/iota/cxx0x.cc b/libstdc++-v3/testsuite/ext/iota/cxx0x.cc
|
||||
new file mode 100644
|
||||
index 0000000..84917ad
|
||||
--- /dev/null
|
||||
+++ b/libstdc++-v3/testsuite/ext/iota/cxx0x.cc
|
||||
@@ -0,0 +1,28 @@
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-std=gnu++0x" }
|
||||
+
|
||||
+// Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+//
|
||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||
+// software; you can redistribute it and/or modify it under the
|
||||
+// terms of the GNU General Public License as published by the
|
||||
+// Free Software Foundation; either version 3, or (at your option)
|
||||
+// any later version.
|
||||
+
|
||||
+// This library is distributed in the hope that it will be useful,
|
||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+// GNU General Public License for more details.
|
||||
+
|
||||
+// You should have received a copy of the GNU General Public License along
|
||||
+// with this library; see the file COPYING3. If not see
|
||||
+// <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+#include <ext/numeric>
|
||||
+#include <vector>
|
||||
+
|
||||
+void foo()
|
||||
+{
|
||||
+ std::vector<int> v;
|
||||
+ iota(v.begin(), v.end(), 0);
|
||||
+}
|
||||
diff --git a/libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc b/libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
|
||||
new file mode 100644
|
||||
index 0000000..518716c
|
||||
--- /dev/null
|
||||
+++ b/libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
|
||||
@@ -0,0 +1,28 @@
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-std=gnu++0x" }
|
||||
+
|
||||
+// Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+//
|
||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||
+// software; you can redistribute it and/or modify it under the
|
||||
+// terms of the GNU General Public License as published by the
|
||||
+// Free Software Foundation; either version 3, or (at your option)
|
||||
+// any later version.
|
||||
+
|
||||
+// This library is distributed in the hope that it will be useful,
|
||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+// GNU General Public License for more details.
|
||||
+
|
||||
+// You should have received a copy of the GNU General Public License along
|
||||
+// with this library; see the file COPYING3. If not see
|
||||
+// <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+#include <ext/algorithm>
|
||||
+#include <vector>
|
||||
+
|
||||
+void foo()
|
||||
+{
|
||||
+ std::vector<int> v;
|
||||
+ is_sorted(v.begin(), v.end());
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
From 354f280d6446d87730bacabf798f88a7aedd1af1 Mon Sep 17 00:00:00 2001
|
||||
From: abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 12:07:24 +0000
|
||||
Subject: [PATCH] Backport from mainline
|
||||
2011-03-26 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
PR rtl-optimization/48144
|
||||
* sel-sched-ir.c (merge_history_vect): Factor out from ...
|
||||
(merge_expr_data): ... here.
|
||||
(av_set_intersect): Rename to av_set_code_motion_filter.
|
||||
Update all callers. Call merge_history_vect when an
|
||||
expression is found in both sets.
|
||||
* sel-sched-ir.h (av_set_code_motion_filter): Add prototype.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172097 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index b88dad1..61f3ffb 100644
|
||||
--- a/gcc/sel-sched-ir.c
|
||||
+++ b/gcc/sel-sched-ir.c
|
||||
@@ -1564,6 +1564,20 @@ free_history_vect (VEC (expr_history_def, heap) **pvect)
|
||||
*pvect = NULL;
|
||||
}
|
||||
|
||||
+/* Merge vector FROM to PVECT. */
|
||||
+static void
|
||||
+merge_history_vect (VEC (expr_history_def, heap) **pvect,
|
||||
+ VEC (expr_history_def, heap) *from)
|
||||
+{
|
||||
+ expr_history_def *phist;
|
||||
+ int i;
|
||||
+
|
||||
+ /* We keep this vector sorted. */
|
||||
+ for (i = 0; VEC_iterate (expr_history_def, from, i, phist); i++)
|
||||
+ insert_in_history_vect (pvect, phist->uid, phist->type,
|
||||
+ phist->old_expr_vinsn, phist->new_expr_vinsn,
|
||||
+ phist->spec_ds);
|
||||
+}
|
||||
|
||||
/* Compare two vinsns as rhses if possible and as vinsns otherwise. */
|
||||
bool
|
||||
@@ -1796,9 +1810,6 @@ update_speculative_bits (expr_t to, expr_t from, insn_t split_point)
|
||||
void
|
||||
merge_expr_data (expr_t to, expr_t from, insn_t split_point)
|
||||
{
|
||||
- int i;
|
||||
- expr_history_def *phist;
|
||||
-
|
||||
/* For now, we just set the spec of resulting expr to be minimum of the specs
|
||||
of merged exprs. */
|
||||
if (EXPR_SPEC (to) > EXPR_SPEC (from))
|
||||
@@ -1822,20 +1833,12 @@ merge_expr_data (expr_t to, expr_t from, insn_t split_point)
|
||||
EXPR_ORIG_SCHED_CYCLE (to) = MIN (EXPR_ORIG_SCHED_CYCLE (to),
|
||||
EXPR_ORIG_SCHED_CYCLE (from));
|
||||
|
||||
- /* We keep this vector sorted. */
|
||||
- for (i = 0;
|
||||
- VEC_iterate (expr_history_def, EXPR_HISTORY_OF_CHANGES (from),
|
||||
- i, phist);
|
||||
- i++)
|
||||
- insert_in_history_vect (&EXPR_HISTORY_OF_CHANGES (to),
|
||||
- phist->uid, phist->type,
|
||||
- phist->old_expr_vinsn, phist->new_expr_vinsn,
|
||||
- phist->spec_ds);
|
||||
-
|
||||
EXPR_WAS_SUBSTITUTED (to) |= EXPR_WAS_SUBSTITUTED (from);
|
||||
EXPR_WAS_RENAMED (to) |= EXPR_WAS_RENAMED (from);
|
||||
EXPR_CANT_MOVE (to) |= EXPR_CANT_MOVE (from);
|
||||
|
||||
+ merge_history_vect (&EXPR_HISTORY_OF_CHANGES (to),
|
||||
+ EXPR_HISTORY_OF_CHANGES (from));
|
||||
update_target_availability (to, from, split_point);
|
||||
update_speculative_bits (to, from, split_point);
|
||||
}
|
||||
@@ -2328,16 +2331,24 @@ av_set_split_usefulness (av_set_t av, int prob, int all_prob)
|
||||
}
|
||||
|
||||
/* Leave in AVP only those expressions, which are present in AV,
|
||||
- and return it. */
|
||||
+ and return it, merging history expressions. */
|
||||
void
|
||||
-av_set_intersect (av_set_t *avp, av_set_t av)
|
||||
+av_set_code_motion_filter (av_set_t *avp, av_set_t av)
|
||||
{
|
||||
av_set_iterator i;
|
||||
- expr_t expr;
|
||||
+ expr_t expr, expr2;
|
||||
|
||||
FOR_EACH_EXPR_1 (expr, i, avp)
|
||||
- if (av_set_lookup (av, EXPR_VINSN (expr)) == NULL)
|
||||
+ if ((expr2 = av_set_lookup (av, EXPR_VINSN (expr))) == NULL)
|
||||
av_set_iter_remove (&i);
|
||||
+ else
|
||||
+ /* When updating av sets in bookkeeping blocks, we can add more insns
|
||||
+ there which will be transformed but the upper av sets will not
|
||||
+ reflect those transformations. We then fail to undo those
|
||||
+ when searching for such insns. So merge the history saved
|
||||
+ in the av set of the block we are processing. */
|
||||
+ merge_history_vect (&EXPR_HISTORY_OF_CHANGES (expr),
|
||||
+ EXPR_HISTORY_OF_CHANGES (expr2));
|
||||
}
|
||||
|
||||
|
||||
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
|
||||
index 1f3dec4..5516da9 100644
|
||||
--- a/gcc/sel-sched-ir.h
|
||||
+++ b/gcc/sel-sched-ir.h
|
||||
@@ -1565,7 +1565,7 @@ extern void av_set_leave_one_nonspec (av_set_t *);
|
||||
extern expr_t av_set_element (av_set_t, int);
|
||||
extern void av_set_substract_cond_branches (av_set_t *);
|
||||
extern void av_set_split_usefulness (av_set_t, int, int);
|
||||
-extern void av_set_intersect (av_set_t *, av_set_t);
|
||||
+extern void av_set_code_motion_filter (av_set_t *, av_set_t);
|
||||
|
||||
extern void sel_save_haifa_priorities (void);
|
||||
|
||||
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
|
||||
index e26ddac..9179249 100644
|
||||
--- a/gcc/sel-sched.c
|
||||
+++ b/gcc/sel-sched.c
|
||||
@@ -6481,7 +6481,7 @@ code_motion_path_driver (insn_t insn, av_set_t orig_ops, ilist_t path,
|
||||
|
||||
/* Filter the orig_ops set. */
|
||||
if (AV_SET_VALID_P (insn))
|
||||
- av_set_intersect (&orig_ops, AV_SET (insn));
|
||||
+ av_set_code_motion_filter (&orig_ops, AV_SET (insn));
|
||||
|
||||
/* If no more original ops, return immediately. */
|
||||
if (!orig_ops)
|
||||
new file mode 100644
|
||||
index 0000000..030202d
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr48144.c
|
||||
@@ -0,0 +1,16 @@
|
||||
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
|
||||
+/* { dg-options "-O -frerun-cse-after-loop -fschedule-insns2 -fselective-scheduling2 -fno-tree-ch -funroll-loops --param=max-sched-extend-regions-iters=2 --param=max-sched-region-blocks=15" } */
|
||||
+extern void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n);
|
||||
+
|
||||
+void bar (void *, void *, void *);
|
||||
+
|
||||
+void foo
|
||||
+ (void *p, char *data, unsigned data_len)
|
||||
+{
|
||||
+ int buffer[8];
|
||||
+ int buf2[8];
|
||||
+ unsigned i;
|
||||
+ for (i = 0; i + 8 <= data_len; i += 8)
|
||||
+ bar (p, buffer, data + i);
|
||||
+ memcpy (buf2, data + i, data_len);
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,960 +0,0 @@
|
|||
From cd0f7d2692283fbf5dfce422da2896a07fc3ea3f Mon Sep 17 00:00:00 2001
|
||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 16:31:06 +0000
|
||||
Subject: [PATCH] * de.po: Update.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172104 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 8f3af8f..a1d1617 100644
|
||||
--- a/gcc/po/de.po
|
||||
+++ b/gcc/po/de.po
|
||||
@@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: gcc 4.6.0\n"
|
||||
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
|
||||
"POT-Creation-Date: 2011-03-24 16:45+0000\n"
|
||||
-"PO-Revision-Date: 2011-04-05 19:50+0100\n"
|
||||
+"PO-Revision-Date: 2011-04-06 19:50+0100\n"
|
||||
"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||
"Language: de\n"
|
||||
@@ -10028,9 +10028,8 @@ msgid "Run only the second compilation of -fcompare-debug"
|
||||
msgstr "Nur die zweite Kompilierung von -fcompare-debug laufen lassen"
|
||||
|
||||
#: common.opt:875
|
||||
-#, fuzzy
|
||||
msgid "Perform comparison elimination after register allocation has finished"
|
||||
-msgstr "Beseitigung globaler gemeinsamer Teilausdrücke nach Registerreservierung durchführen"
|
||||
+msgstr "Beseitigung von Vergleichen nach Registerreservierung durchführen"
|
||||
|
||||
#: common.opt:879
|
||||
msgid "Do not perform optimizations increasing noticeably stack usage"
|
||||
@@ -10085,9 +10084,8 @@ msgid "Delete useless null pointer checks"
|
||||
msgstr "Unnötige Nullzeigerprügungen löschen"
|
||||
|
||||
#: common.opt:937
|
||||
-#, fuzzy
|
||||
msgid "Try to convert virtual calls to direct ones."
|
||||
-msgstr "Dem Linker erlauben, PIC-Aufrufe in direkte Aufrufe umzuwandeln"
|
||||
+msgstr "Versuchen, virtuelle Sprünge in direkte umzuwandeln."
|
||||
|
||||
#: common.opt:941
|
||||
msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
|
||||
@@ -10923,9 +10921,8 @@ msgid "Enable loop invariant motion on trees"
|
||||
msgstr "Bewegung der Schleifeninvariante auf Bäumen einschalten"
|
||||
|
||||
#: common.opt:1924
|
||||
-#, fuzzy
|
||||
msgid "Enable loop interchange transforms. Same as -floop-interchange"
|
||||
-msgstr "Transformation des Loop Interchange einschalten"
|
||||
+msgstr "Umwandlungen mit Schleifenaustausch einschalten. Das Gleiche wie -floop-interchange"
|
||||
|
||||
#: common.opt:1928
|
||||
msgid "Create canonical induction variables in loops"
|
||||
@@ -11290,14 +11287,12 @@ msgid "argument must have complex type"
|
||||
msgstr "Argument muss komplexen Typen haben"
|
||||
|
||||
#: go/gofrontend/expressions.cc:7578
|
||||
-#, fuzzy
|
||||
msgid "complex arguments must have identical types"
|
||||
-msgstr "cmplx-Argumente müssen identische Typen haben"
|
||||
+msgstr "komplexe Argumente müssen identische Typen haben"
|
||||
|
||||
#: go/gofrontend/expressions.cc:7580
|
||||
-#, fuzzy
|
||||
msgid "complex arguments must have floating-point type"
|
||||
-msgstr "cmplx-Argumente müssen Gleitkommatypen haben"
|
||||
+msgstr "komplexe Argumente müssen Gleitkommatyp haben"
|
||||
|
||||
#: go/gofrontend/expressions.cc:8560
|
||||
msgid "expected function"
|
||||
@@ -11913,9 +11908,9 @@ msgid "redefinition of typedef %q+D with different type"
|
||||
msgstr "Redefinition des typedef %q+D mit anderem Typ"
|
||||
|
||||
#: c-decl.c:1818
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "redefinition of typedef %q+D with variably modified type"
|
||||
-msgstr "Redefinition des typedef %q+D mit anderem Typ"
|
||||
+msgstr "Redefinition des typedef %q+D mit variabel modifiziertem Typ"
|
||||
|
||||
#: c-decl.c:1825
|
||||
#, gcc-internal-format
|
||||
@@ -13292,9 +13287,9 @@ msgid "prefix attributes are ignored for implementations"
|
||||
msgstr "Präfixattribute werden für Implementierungen ignoriert"
|
||||
|
||||
#: c-parser.c:1554
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unexpected attribute"
|
||||
-msgstr "Attributbitname erwartet"
|
||||
+msgstr "unerwartetes Attribut"
|
||||
|
||||
#: c-parser.c:1596
|
||||
#, gcc-internal-format
|
||||
@@ -13643,14 +13638,14 @@ msgid "unknown property attribute"
|
||||
msgstr "unbekanntes Eigenschaftsattribut"
|
||||
|
||||
#: c-parser.c:7964 cp/parser.c:23157
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "missing %<=%> (after %<getter%> attribute)"
|
||||
-msgstr "fehlendes %<(%> hinter %<#pragma pack%> - ignoriert"
|
||||
+msgstr "fehlendes %<=%> (hinter Attribut %<getter%>)"
|
||||
|
||||
#: c-parser.c:7967 cp/parser.c:23160
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "missing %<=%> (after %<setter%> attribute)"
|
||||
-msgstr "fehlendes %<(%> hinter %<#pragma pack%> - ignoriert"
|
||||
+msgstr "fehlendes %<=%> (hinter Attribut %<setter%>)"
|
||||
|
||||
#: c-parser.c:7981 cp/parser.c:23174
|
||||
#, gcc-internal-format
|
||||
@@ -13698,9 +13693,9 @@ msgid "too many %qs clauses"
|
||||
msgstr "zu viele %qs-Klauseln"
|
||||
|
||||
#: c-parser.c:8481 cp/parser.c:23550
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "collapse argument needs positive constant integer expression"
|
||||
-msgstr "Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken"
|
||||
+msgstr "Collapse-Argument erfordert positiven konstanten Ganzzahlausdruck"
|
||||
|
||||
#: c-parser.c:8547 cp/parser.c:23601
|
||||
#, gcc-internal-format
|
||||
@@ -13713,9 +13708,9 @@ msgid "expected integer expression"
|
||||
msgstr "Ganzzahlausdruck erwartet"
|
||||
|
||||
#: c-parser.c:8650
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<num_threads%> value must be positive"
|
||||
-msgstr "%HWert %<num_threads%> muss positiv sein"
|
||||
+msgstr "Wert von %<num_threads%> muss positiv sein"
|
||||
|
||||
#: c-parser.c:8733 cp/parser.c:23753
|
||||
#, gcc-internal-format
|
||||
@@ -13728,9 +13723,9 @@ msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
|
||||
msgstr "Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>"
|
||||
|
||||
#: c-parser.c:8825 cp/parser.c:23841
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
|
||||
-msgstr "Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>"
|
||||
+msgstr "Ablauf %<auto%> akzeptiert keinen Parameter %<chunk_size%>"
|
||||
|
||||
#: c-parser.c:8843 cp/parser.c:23857
|
||||
#, gcc-internal-format
|
||||
@@ -13770,22 +13765,22 @@ msgstr "Schleifendeklaration oder Initialisierung erwartet"
|
||||
#: c-parser.c:9363
|
||||
#, gcc-internal-format
|
||||
msgid "not enough perfectly nested loops"
|
||||
-msgstr ""
|
||||
+msgstr "nicht genügend perfekt geschachtelte Schleifen"
|
||||
|
||||
#: c-parser.c:9416 cp/parser.c:24720
|
||||
#, gcc-internal-format
|
||||
msgid "collapsed loops not perfectly nested"
|
||||
-msgstr ""
|
||||
+msgstr "zusammengelegte Schleifen sind nicht perfekt geschachtelt"
|
||||
|
||||
#: c-parser.c:9454 cp/parser.c:24564 cp/parser.c:24602 cp/pt.c:11892
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "iteration variable %qD should not be firstprivate"
|
||||
-msgstr "Schleifenvariable %qs sollte nicht »firstprivate« sein"
|
||||
+msgstr "Schleifenvariable %qD sollte nicht »firstprivate« sein"
|
||||
|
||||
#: c-parser.c:9899
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%qD is not a variable"
|
||||
-msgstr "»%s« bei %C ist keine Variable"
|
||||
+msgstr "%qD ist keine Variable"
|
||||
|
||||
#: c-parser.c:9901 cp/semantics.c:4002
|
||||
#, gcc-internal-format
|
||||
@@ -13836,7 +13831,7 @@ msgstr "falsche Benutzung des unvollständigen typedef %qD"
|
||||
#: c-typeck.c:319
|
||||
#, gcc-internal-format
|
||||
msgid "%qT and %qT are in disjoint named address spaces"
|
||||
-msgstr ""
|
||||
+msgstr "%qT und %qT sind in disjunkt benannten Adressräumen"
|
||||
|
||||
#: c-typeck.c:561 c-typeck.c:586
|
||||
#, gcc-internal-format
|
||||
@@ -13864,9 +13859,9 @@ msgid "types are not quite compatible"
|
||||
msgstr "Typen nicht ganz kompatibel"
|
||||
|
||||
#: c-typeck.c:1220
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "pointer target types incompatible in C++"
|
||||
-msgstr "Zeiger auf Elementtyp %qT mit Objekttyp %qT inkompatibel"
|
||||
+msgstr "Zeiger-Zieltypen sind in C++ inkompatibel"
|
||||
|
||||
#: c-typeck.c:1552
|
||||
#, gcc-internal-format
|
||||
@@ -13899,9 +13894,9 @@ msgid "dereferencing %<void *%> pointer"
|
||||
msgstr "Dereferenzierung eines %<void *%>-Zeigers"
|
||||
|
||||
#: c-typeck.c:2307
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "subscripted value is neither array nor pointer nor vector"
|
||||
-msgstr "indizierter Wert ist weder ein Feld noch ein Zeiger"
|
||||
+msgstr "indizierter Wert ist weder Feld noch Zeiger noch Vektor"
|
||||
|
||||
#: c-typeck.c:2319 cp/typeck.c:2854 cp/typeck.c:2948
|
||||
#, gcc-internal-format
|
||||
@@ -13914,9 +13909,9 @@ msgid "subscripted value is pointer to function"
|
||||
msgstr "indizierter Wert ist Zeiger auf Funktion"
|
||||
|
||||
#: c-typeck.c:2350
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "index value is out of bound"
|
||||
-msgstr "Index in Dimension %d ist außerhalb der Grenzen bei %L"
|
||||
+msgstr "Indexwert ist außerhalb der Grenzen"
|
||||
|
||||
#: c-typeck.c:2394
|
||||
#, gcc-internal-format
|
||||
@@ -13931,7 +13926,7 @@ msgstr "ISO-C90 verbietet, ein Nicht-L-Wert-Feld zu indizieren"
|
||||
#: c-typeck.c:2505
|
||||
#, gcc-internal-format
|
||||
msgid "enum constant defined here"
|
||||
-msgstr ""
|
||||
+msgstr "enum-Konstante hier definiert"
|
||||
|
||||
#: c-typeck.c:2736
|
||||
#, gcc-internal-format
|
||||
@@ -13947,14 +13942,14 @@ msgid "function called through a non-compatible type"
|
||||
msgstr "Funktion über nicht kompatiblen Typen aufgerufen"
|
||||
|
||||
#: c-typeck.c:2786 c-typeck.c:2840
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "function with qualified void return type called"
|
||||
-msgstr "Funktionsdefinition hat qualifizierten void-Rückgabetypen"
|
||||
+msgstr "Funktion mit qualifiziertem void-Rückgabetypen aufgerufen"
|
||||
|
||||
#: c-typeck.c:2930
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "too many arguments to method %qE"
|
||||
-msgstr "zu viele Argumente für Funktion %qE"
|
||||
+msgstr "zu viele Argumente für Methode %qE"
|
||||
|
||||
#: c-typeck.c:2933 c-family/c-common.c:8039
|
||||
#, gcc-internal-format
|
||||
@@ -13962,9 +13957,9 @@ msgid "too many arguments to function %qE"
|
||||
msgstr "zu viele Argumente für Funktion %qE"
|
||||
|
||||
#: c-typeck.c:2936 c-typeck.c:3170 cp/decl2.c:4169 cp/typeck.c:3304
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "declared here"
|
||||
-msgstr "%q+D hier deklariert"
|
||||
+msgstr "hier deklariert"
|
||||
|
||||
#: c-typeck.c:2971
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -14027,9 +14022,9 @@ msgid "passing argument %d of %qE as signed due to prototype"
|
||||
msgstr "Übergabe des Arguments %d von %qE als vorzeichenbehaftet aufgrund des Prototyps"
|
||||
|
||||
#: c-typeck.c:3135 cp/call.c:5666
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "implicit conversion from %qT to %qT when passing argument to function"
|
||||
-msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
|
||||
+msgstr "implizite Umwandlung von %qT in %qT bei Übergabe von Argument an Funktion"
|
||||
|
||||
#: c-typeck.c:3168 c-family/c-common.c:8877 c-family/c-common.c:8926
|
||||
#, gcc-internal-format
|
||||
@@ -14042,9 +14037,9 @@ msgid "comparison with string literal results in unspecified behavior"
|
||||
msgstr "Vergleich mit Zeichenkettenliteral führt zu unspezifiziertem Verhalten"
|
||||
|
||||
#: c-typeck.c:3269
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "comparison between %qT and %qT"
|
||||
-msgstr "Vergleich zwischen %q#T und %q#T"
|
||||
+msgstr "Vergleich zwischen %qT und %qT"
|
||||
|
||||
#: c-typeck.c:3321
|
||||
#, gcc-internal-format
|
||||
@@ -14069,12 +14064,12 @@ msgstr "Argument falschen Typs für unäres Ausrufungszeichen"
|
||||
#: c-typeck.c:3578
|
||||
#, gcc-internal-format
|
||||
msgid "increment of enumeration value is invalid in C++"
|
||||
-msgstr ""
|
||||
+msgstr "Schrittweite von Aufzählungswerten (enum) ist in C++ ungültig"
|
||||
|
||||
#: c-typeck.c:3581
|
||||
#, gcc-internal-format
|
||||
msgid "decrement of enumeration value is invalid in C++"
|
||||
-msgstr ""
|
||||
+msgstr "Verringerung von Aufzählungswerten (enum) ist in C++ ungültig"
|
||||
|
||||
#: c-typeck.c:3594
|
||||
#, gcc-internal-format
|
||||
@@ -14102,9 +14097,9 @@ msgid "decrement of pointer to unknown structure"
|
||||
msgstr "Verminderung eines Zeigers auf unbekannte Struktur"
|
||||
|
||||
#: c-typeck.c:3722
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "taking address of expression of type %<void%>"
|
||||
-msgstr "statischer Zugriff auf Objekt des Typs %<id%>"
|
||||
+msgstr "Adresse des Ausdrucks des Typs %<void%> wird genommen"
|
||||
|
||||
#: c-typeck.c:3892 c-family/c-common.c:8633
|
||||
#, gcc-internal-format
|
||||
@@ -14152,9 +14147,9 @@ msgid "non-lvalue array in conditional expression"
|
||||
msgstr "Nicht-L-Wert-Feld in bedingtem Ausdruck"
|
||||
|
||||
#: c-typeck.c:4127 cp/call.c:4337
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "implicit conversion from %qT to %qT to match other result of conditional"
|
||||
-msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
|
||||
+msgstr "implizite Umwandlung von %qT in %qT um an anderes Ergebnis von Bedingung anzupassen"
|
||||
|
||||
#: c-typeck.c:4201
|
||||
#, gcc-internal-format
|
||||
@@ -14162,9 +14157,9 @@ msgid "ISO C forbids conditional expr with only one void side"
|
||||
msgstr "ISO-C verbietet bedingten Ausdruck mit nur einer void-Seite"
|
||||
|
||||
#: c-typeck.c:4218
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "pointers to disjoint address spaces used in conditional expression"
|
||||
-msgstr "Zeigertyp passt nicht in bedingtem Ausdruck"
|
||||
+msgstr "Zeiger auf disjunkte Adressräume in bedingtem Ausdruck verwendet"
|
||||
|
||||
#: c-typeck.c:4226 c-typeck.c:4235
|
||||
#, gcc-internal-format
|
||||
@@ -14192,19 +14187,17 @@ msgid "left-hand operand of comma expression has no effect"
|
||||
msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt"
|
||||
|
||||
#: c-typeck.c:4446
|
||||
-#, fuzzy
|
||||
msgid "cast adds %q#v qualifier to function type"
|
||||
-msgstr "Typkonvertierung fügt neue Typqualifizierer zu Funktionstyp hinzu"
|
||||
+msgstr "Typumwandlung fügt Qualifizierer %q#v zu Funktionstyp hinzu"
|
||||
|
||||
#: c-typeck.c:4452
|
||||
-#, fuzzy
|
||||
msgid "cast discards %q#v qualifier from pointer target type"
|
||||
-msgstr "Typkonvertierung streicht Qualifizierer von Zeiger-Zieltyp"
|
||||
+msgstr "Typumwandlung streicht Qualifizierer %q#v von Zeiger-Zieltyp"
|
||||
|
||||
#: c-typeck.c:4487
|
||||
#, gcc-internal-format
|
||||
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
|
||||
-msgstr ""
|
||||
+msgstr "zur Sicherheit müssen alle vorübergehenden Zeiger in Umwandlung von %qT in %qT mit %<const%> qualifiziert sein"
|
||||
|
||||
#: c-typeck.c:4524
|
||||
#, gcc-internal-format
|
||||
@@ -14279,12 +14272,12 @@ msgstr "ISO-C verbietet Konvertierung von Objektzeigertypen in Funktionszeigerty
|
||||
#: c-typeck.c:4769
|
||||
#, gcc-internal-format
|
||||
msgid "defining a type in a cast is invalid in C++"
|
||||
-msgstr ""
|
||||
+msgstr "Definition eines Typs in einer Umwandlung ist in C++ ungültig"
|
||||
|
||||
#: c-typeck.c:4908 c-typeck.c:5205
|
||||
#, gcc-internal-format
|
||||
msgid "enum conversion in assignment is invalid in C++"
|
||||
-msgstr ""
|
||||
+msgstr "enum-Umwandlung in Zuweisung ist in C++ ungültig"
|
||||
|
||||
#. This macro is used to emit diagnostics to ensure that all format
|
||||
#. strings are complete sentences, visible to gettext and checked at
|
||||
@@ -14294,24 +14287,24 @@ msgstr ""
|
||||
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
|
||||
#. extra parameter to enumerate qualifiers.
|
||||
#: c-typeck.c:5113 c-typeck.c:5143 c-typeck.c:5670
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "expected %qT but argument is of type %qT"
|
||||
-msgstr "format %q.*s erwartet Typ %<%T%s%>, aber Argument %d hat Typ %qT"
|
||||
+msgstr "%qT erwartet, aber Argument hat Typ %qT"
|
||||
|
||||
#: c-typeck.c:5203
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
|
||||
-msgstr "Zeigerziele bei Übergabe des Arguments %d von %qE unterscheiden sich im Vorzeichenbesitz"
|
||||
+msgstr "Enum-Umwandlung bei Übergabe des Arguments %d von %qE ist in C++ ungültig"
|
||||
|
||||
#: c-typeck.c:5207 c-typeck.c:7762
|
||||
#, gcc-internal-format
|
||||
msgid "enum conversion in initialization is invalid in C++"
|
||||
-msgstr ""
|
||||
+msgstr "enum-Umwandlung in Initialisierung ist in C++ ungültig"
|
||||
|
||||
#: c-typeck.c:5209
|
||||
#, gcc-internal-format
|
||||
msgid "enum conversion in return is invalid in C++"
|
||||
-msgstr ""
|
||||
+msgstr "enum-Umwandlung in Rückgabe ist in C++ ungültig"
|
||||
|
||||
#: c-typeck.c:5238
|
||||
#, gcc-internal-format
|
||||
@@ -14319,44 +14312,36 @@ msgid "cannot pass rvalue to reference parameter"
|
||||
msgstr "R-Wert kann nicht an Referenzparameter übergeben werden"
|
||||
|
||||
#: c-typeck.c:5368 c-typeck.c:5591
|
||||
-#, fuzzy
|
||||
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
|
||||
-msgstr "Übergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
|
||||
+msgstr "Übergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
|
||||
|
||||
#: c-typeck.c:5371 c-typeck.c:5594
|
||||
-#, fuzzy
|
||||
msgid "assignment makes %q#v qualified function pointer from unqualified"
|
||||
-msgstr "Zuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
|
||||
+msgstr "Zuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
|
||||
|
||||
#: c-typeck.c:5374 c-typeck.c:5596
|
||||
-#, fuzzy
|
||||
msgid "initialization makes %q#v qualified function pointer from unqualified"
|
||||
-msgstr "Initialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
|
||||
+msgstr "Initialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
|
||||
|
||||
#: c-typeck.c:5377 c-typeck.c:5598
|
||||
-#, fuzzy
|
||||
msgid "return makes %q#v qualified function pointer from unqualified"
|
||||
-msgstr "return erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
|
||||
+msgstr "return erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
|
||||
|
||||
#: c-typeck.c:5384 c-typeck.c:5554
|
||||
-#, fuzzy
|
||||
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
|
||||
-msgstr "Übergabe des Arguments %d von %qE entfernt Kennzeichner von Zeiger-Ziel-Typ"
|
||||
+msgstr "Übergabe des Arguments %d von %qE entfernt Kennzeichner %qv von Zeiger-Ziel-Typ"
|
||||
|
||||
#: c-typeck.c:5386 c-typeck.c:5556
|
||||
-#, fuzzy
|
||||
msgid "assignment discards %qv qualifier from pointer target type"
|
||||
-msgstr "Zuweisung streicht Qualifizierer von Zeiger-Zieltyp"
|
||||
+msgstr "Zuweisung streicht Qualifizierer %qv von Zeiger-Zieltyp"
|
||||
|
||||
#: c-typeck.c:5388 c-typeck.c:5558
|
||||
-#, fuzzy
|
||||
msgid "initialization discards %qv qualifier from pointer target type"
|
||||
-msgstr "Initialisierung streicht Qualifizierer von Zeiger-Zieltyp"
|
||||
+msgstr "Initialisierung streicht Qualifizierer %qv von Zeiger-Zieltyp"
|
||||
|
||||
#: c-typeck.c:5390 c-typeck.c:5560
|
||||
-#, fuzzy
|
||||
msgid "return discards %qv qualifier from pointer target type"
|
||||
-msgstr "return streicht Qualifizierer von Zeiger-Zieltyp"
|
||||
+msgstr "return streicht Qualifizierer %qv von Zeiger-Zieltyp"
|
||||
|
||||
#: c-typeck.c:5399
|
||||
#, gcc-internal-format
|
||||
@@ -14369,24 +14354,24 @@ msgid "request for implicit conversion from %qT to %qT not permitted in C++"
|
||||
msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
|
||||
|
||||
#: c-typeck.c:5466
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
|
||||
-msgstr "Übergabe des Arguments %d von %qE von inkompatiblem Zeigertyp"
|
||||
+msgstr "Übergabe des Arguments %d von %qE von Zeiger auf nicht eingeschlossenen Adressbereich"
|
||||
|
||||
#: c-typeck.c:5470
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "assignment from pointer to non-enclosed address space"
|
||||
-msgstr "Typkonvertierung von Zeiger auf Ganzzahl anderer Breite"
|
||||
+msgstr "Zuweisung von Zeiger auf nicht eingeschlossenen Adressbereich"
|
||||
|
||||
#: c-typeck.c:5474
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "initialization from pointer to non-enclosed address space"
|
||||
-msgstr "Initialisierung von inkompatiblem Zeigertyp"
|
||||
+msgstr "Initialisierung von Zeiger auf nicht enthaltenen Adressraum"
|
||||
|
||||
#: c-typeck.c:5478
|
||||
#, gcc-internal-format
|
||||
msgid "return from pointer to non-enclosed address space"
|
||||
-msgstr ""
|
||||
+msgstr "Rückgabe von Pointer auf nicht enthaltenen Adressraum"
|
||||
|
||||
#: c-typeck.c:5496
|
||||
#, gcc-internal-format
|
||||
@@ -14521,19 +14506,19 @@ msgid "incompatible type for argument %d of %qE"
|
||||
msgstr "Inkompatibler Typ für Argument %d von %qE"
|
||||
|
||||
#: c-typeck.c:5673
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "incompatible types when assigning to type %qT from type %qT"
|
||||
-msgstr "unverträgliche Typen in Zuweisung von %qT an %qT"
|
||||
+msgstr "unverträgliche Typen bei Zuweisung an Typ %qT von Typ %qT"
|
||||
|
||||
#: c-typeck.c:5678
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "incompatible types when initializing type %qT using type %qT"
|
||||
-msgstr "inkompatible Typen in Initialisierung"
|
||||
+msgstr "inkompatible Typen bei Initialisierung von Typ %qT mit Typ %qT"
|
||||
|
||||
#: c-typeck.c:5683
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "incompatible types when returning type %qT but %qT was expected"
|
||||
-msgstr "unverträgliche Typen in Zuweisung von %qT an %qT"
|
||||
+msgstr "unverträgliche Typen bei Rückgabe von Typ %qT, aber %qT wurde erwartet"
|
||||
|
||||
#: c-typeck.c:5747
|
||||
#, gcc-internal-format
|
||||
@@ -14561,14 +14546,14 @@ msgid "char-array initialized from wide string"
|
||||
msgstr "char-Feld mit wide-Zeichenkette initialisiert"
|
||||
|
||||
#: c-typeck.c:6062
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "wide character array initialized from non-wide string"
|
||||
-msgstr "wchar_t-Feld mit Nicht-wide-Zeichenkette initialisiert"
|
||||
+msgstr "Feld von wide character mit Nicht-wide-Zeichenkette initialisiert"
|
||||
|
||||
#: c-typeck.c:6068
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "wide character array initialized from incompatible wide string"
|
||||
-msgstr "wchar_t-Feld mit Nicht-wide-Zeichenkette initialisiert"
|
||||
+msgstr "Feld von wide character mit unverträglicher wide-Zeichenkette initialisiert"
|
||||
|
||||
#: c-typeck.c:6102
|
||||
#, gcc-internal-format
|
||||
@@ -14587,7 +14572,7 @@ msgid "initializer element is not constant"
|
||||
msgstr "Initialisierungselement ist nicht konstant"
|
||||
|
||||
#: c-typeck.c:6226 c-typeck.c:6272 c-typeck.c:7745
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "initializer element is not a constant expression"
|
||||
msgstr "Initialisierungselement ist nicht konstant"
|
||||
|
||||
@@ -14657,9 +14642,9 @@ msgid "array index in initializer not of integer type"
|
||||
msgstr "Feldindex in Initialisierung hat nicht Ganzzahltyp"
|
||||
|
||||
#: c-typeck.c:7148 c-typeck.c:7157
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "array index in initializer is not an integer constant expression"
|
||||
-msgstr "Feldindex in Initialisierung hat nicht Ganzzahltyp"
|
||||
+msgstr "Feldindex in Initialisierung ist kein konstanter Ganzzahlausdruck"
|
||||
|
||||
#: c-typeck.c:7162 c-typeck.c:7164
|
||||
#, gcc-internal-format
|
||||
@@ -14777,9 +14762,9 @@ msgid "%<long%> switch expression not converted to %<int%> in ISO C"
|
||||
msgstr "%<long%> switch-Ausdruck nicht nach »int« konvertiert in ISO C"
|
||||
|
||||
#: c-typeck.c:8817 c-typeck.c:8825
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "case label is not an integer constant expression"
|
||||
-msgstr "Größe des Feldes ist kein konstanter Ganzzahlausdruck"
|
||||
+msgstr "»case«-Marke ist kein konstanter Ganzzahlausdruck"
|
||||
|
||||
#: c-typeck.c:8831 cp/parser.c:8261
|
||||
#, gcc-internal-format
|
||||
@@ -14792,9 +14777,9 @@ msgid "%<default%> label not within a switch statement"
|
||||
msgstr "%<default%>-Marke nicht innerhalb einer switch-Anweisung"
|
||||
|
||||
#: c-typeck.c:8916 cp/parser.c:8557
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "suggest explicit braces to avoid ambiguous %<else%>"
|
||||
-msgstr "%Hes wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeiden"
|
||||
+msgstr "es wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeiden"
|
||||
|
||||
#: c-typeck.c:9025 cp/cp-gimplify.c:91 cp/parser.c:9149
|
||||
#, gcc-internal-format
|
||||
@@ -14857,9 +14842,9 @@ msgid "the comparison will always evaluate as %<true%> for the address of %qD wi
|
||||
msgstr ""
|
||||
|
||||
#: c-typeck.c:9830 c-typeck.c:9905
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "comparison of pointers to disjoint address spaces"
|
||||
-msgstr "in Vergleich verschiedener Zeigertypen fehlt Typkonvertierung"
|
||||
+msgstr "Vergleich von Zeigern auf disjunkte Adressräume"
|
||||
|
||||
#: c-typeck.c:9837 c-typeck.c:9843
|
||||
#, gcc-internal-format
|
||||
@@ -14887,9 +14872,9 @@ msgid "ISO C forbids ordered comparisons of pointers to functions"
|
||||
msgstr "ISO-C verbietet geordnete Vergleiche zwischen Zeigern auf Funktionen"
|
||||
|
||||
#: c-typeck.c:9900
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "ordered comparison of pointer with null pointer"
|
||||
-msgstr "geordneter Vergleich von Zeiger mit Ganzzahlnull"
|
||||
+msgstr "geordneter Vergleich von Zeiger mit Null-Zeiger"
|
||||
|
||||
#: c-typeck.c:9923 c-typeck.c:9926 c-typeck.c:9933 c-typeck.c:9936
|
||||
#, gcc-internal-format
|
||||
@@ -14897,9 +14882,9 @@ msgid "ordered comparison of pointer with integer zero"
|
||||
msgstr "geordneter Vergleich von Zeiger mit Ganzzahlnull"
|
||||
|
||||
#: c-typeck.c:9980 cp/typeck.c:4251
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
|
||||
-msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
|
||||
+msgstr "implizite Umwandlung von %qT in %qT zur Anpassung an anderen Operanden des Binärausdrucks"
|
||||
|
||||
#: c-typeck.c:10262
|
||||
#, gcc-internal-format
|
||||
@@ -14972,14 +14957,14 @@ msgid "size of variable %q+D is too large"
|
||||
msgstr "Größe der Variablen %q+D ist zu hoch"
|
||||
|
||||
#: cfgexpand.c:4025
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "stack protector not protecting local variables: variable length buffer"
|
||||
-msgstr "Lokale Variablen werden nicht geschützt: Puffer variabler Größe"
|
||||
+msgstr "Stack-Schutz schützt nicht lokale Variablen: Puffer variabler Größe"
|
||||
|
||||
#: cfgexpand.c:4029
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
|
||||
-msgstr "Funktion wird nicht geschützt: Kein Puffer mit mindestens %d Bytes"
|
||||
+msgstr "Stack-Schutz schützt nicht Funktion: Alle lokalen Felder sind kleiner als %d Bytes"
|
||||
|
||||
#: cfghooks.c:110
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15157,32 +15142,32 @@ msgid "bb %d do not belong to loop %d"
|
||||
msgstr "BB %d gehört nicht zur Schleife %d"
|
||||
|
||||
#: cfgloop.c:1363
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "loop %d%'s header does not have exactly 2 entries"
|
||||
msgstr "Kopf der Schleife %d hat nicht genau 2 Einträge"
|
||||
|
||||
#: cfgloop.c:1370
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "loop %d%'s latch does not have exactly 1 successor"
|
||||
msgstr "Falle der Schleife %d hat nicht genau einen Nachfolger"
|
||||
|
||||
#: cfgloop.c:1375
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "loop %d%'s latch does not have header as successor"
|
||||
msgstr "Falle der Schleife %d hat nicht den Kopf als Nachfolger"
|
||||
|
||||
#: cfgloop.c:1380
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "loop %d%'s latch does not belong directly to it"
|
||||
msgstr "Falle der Schleife %d gehört nicht direkt zu ihr"
|
||||
|
||||
#: cfgloop.c:1386
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "loop %d%'s header does not belong directly to it"
|
||||
msgstr "Kopf der Schleife %d gehört nicht direkt zu ihr"
|
||||
|
||||
#: cfgloop.c:1392
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "loop %d%'s latch is marked as part of irreducible region"
|
||||
msgstr "Falle der Schleife %d ist als Teil einer irreduziblen Region markiert"
|
||||
|
||||
@@ -15222,17 +15207,17 @@ msgid "nonempty exits list of loop %d, but exits are not recorded"
|
||||
msgstr "Nichtleere Ausgangsliste der Schleife %d, aber Ausgänge werden nicht aufgezeichnet"
|
||||
|
||||
#: cfgloop.c:1514
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "exit %d->%d not recorded"
|
||||
msgstr "Ausgang %d->%d nicht aufgezeichnet"
|
||||
|
||||
#: cfgloop.c:1532
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "wrong list of exited loops for edge %d->%d"
|
||||
msgstr "Falsche Liste der beendeten Schleifen für Kante %d->%d"
|
||||
|
||||
#: cfgloop.c:1541
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "too many loop exits recorded"
|
||||
msgstr "Zu viele Schleifenausgänge aufgezeichnet"
|
||||
|
||||
@@ -15277,9 +15262,9 @@ msgid "missing REG_EH_REGION note in the end of bb %i"
|
||||
msgstr "fehlender Vermerk von REG_EH_REGION am Ende vom bb %i"
|
||||
|
||||
#: cfgrtl.c:1932
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "too many eh edges %i"
|
||||
-msgstr "zu viele abgehende Zweig-Kanten vom bb %i"
|
||||
+msgstr "zu viele eh-Kanten %i"
|
||||
|
||||
#: cfgrtl.c:1940
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15292,9 +15277,9 @@ msgid "fallthru edge after unconditional jump %i"
|
||||
msgstr "Fallthru-Kante nach unbedingtem Sprung %i"
|
||||
|
||||
#: cfgrtl.c:1950
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "wrong number of branch edges after unconditional jump %i"
|
||||
-msgstr "falscher Betrag der Zweig-Kanten nach unbedingtem Sprung %i"
|
||||
+msgstr "falsche Anzahl der Zweig-Kanten nach unbedingtem Sprung %i"
|
||||
|
||||
#: cfgrtl.c:1957
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15402,9 +15387,9 @@ msgid "caller edge frequency is too large"
|
||||
msgstr "Rufer-Kantenhäufigkeit ist zu groß"
|
||||
|
||||
#: cgraphunit.c:435
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "caller edge frequency %i does not match BB frequency %i"
|
||||
-msgstr "Rufer-Kantenhäufigkeit ist zu groß"
|
||||
+msgstr "Rufer-Kantenhäufigkeit %i passt nicht zur BB-Häufigkeit %i"
|
||||
|
||||
#: cgraphunit.c:471
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15412,34 +15397,34 @@ msgid "aux field set for edge %s->%s"
|
||||
msgstr "Aux-Feld für Kante %s->%s gesetzt"
|
||||
|
||||
#: cgraphunit.c:478
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "execution count is negative"
|
||||
msgstr "Ausführungszähler ist negativ"
|
||||
|
||||
#: cgraphunit.c:483
|
||||
#, gcc-internal-format
|
||||
msgid "externally visible inline clone"
|
||||
-msgstr ""
|
||||
+msgstr "extern sichtbare Inline-Kopie"
|
||||
|
||||
#: cgraphunit.c:488
|
||||
#, gcc-internal-format
|
||||
msgid "inline clone with address taken"
|
||||
-msgstr ""
|
||||
+msgstr "Inline-Kopie mit Adresse genommen"
|
||||
|
||||
#: cgraphunit.c:493
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "inline clone is needed"
|
||||
-msgstr "inlined_to-Zeiger ist falsch"
|
||||
+msgstr "Inline-Kopie erforderlich"
|
||||
|
||||
#: cgraphunit.c:500
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "aux field set for indirect edge from %s"
|
||||
-msgstr "Aux-Feld für Kante %s->%s gesetzt"
|
||||
+msgstr "Aux-Feld für indirekte Kante %s von gesetzt"
|
||||
|
||||
#: cgraphunit.c:507
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
|
||||
-msgstr ""
|
||||
+msgstr "Eine indirekte Kante von %s ist nicht als indirekt markiert und hat keine zugeordnete indirect_info, die zugehörige Anweisung ist:"
|
||||
|
||||
#: cgraphunit.c:524
|
||||
#, gcc-internal-format
|
||||
@@ -15474,42 +15459,42 @@ msgstr "Knoten in cgraph_hash nicht gefunden"
|
||||
#: cgraphunit.c:568
|
||||
#, gcc-internal-format
|
||||
msgid "node has wrong clone_of"
|
||||
-msgstr ""
|
||||
+msgstr "Knoten hat falsches clone_of"
|
||||
|
||||
#: cgraphunit.c:580
|
||||
#, gcc-internal-format
|
||||
msgid "node has wrong clone list"
|
||||
-msgstr ""
|
||||
+msgstr "Knoten hat falsche Clone-Liste"
|
||||
|
||||
#: cgraphunit.c:586
|
||||
#, gcc-internal-format
|
||||
msgid "node is in clone list but it is not clone"
|
||||
-msgstr ""
|
||||
+msgstr "Knoten ist in Clone-Liste, aber es ist kein Clone"
|
||||
|
||||
#: cgraphunit.c:591
|
||||
#, gcc-internal-format
|
||||
msgid "node has wrong prev_clone pointer"
|
||||
-msgstr ""
|
||||
+msgstr "Knoten hat falschen Zeiger prev_clone"
|
||||
|
||||
#: cgraphunit.c:596
|
||||
#, gcc-internal-format
|
||||
msgid "double linked list of clones corrupted"
|
||||
-msgstr ""
|
||||
+msgstr "doppelt verkettete Liste des Clones ist beschädigt"
|
||||
|
||||
#: cgraphunit.c:605
|
||||
#, gcc-internal-format
|
||||
msgid "non-DECL_ONE_ONLY node in a same_comdat_group list"
|
||||
-msgstr ""
|
||||
+msgstr "Nicht-DECL_ONE_ONLY-Knoten in einer same_comdat_group-Liste"
|
||||
|
||||
#: cgraphunit.c:610
|
||||
#, gcc-internal-format
|
||||
msgid "node is alone in a comdat group"
|
||||
-msgstr ""
|
||||
+msgstr "Knoten ist allein in einer Comdat-Gruppe"
|
||||
|
||||
#: cgraphunit.c:617
|
||||
#, gcc-internal-format
|
||||
msgid "same_comdat_group is not a circular list"
|
||||
-msgstr ""
|
||||
+msgstr "same_comdat_group ist keine ringförmige Liste"
|
||||
|
||||
#: cgraphunit.c:652
|
||||
#, gcc-internal-format
|
||||
@@ -15517,9 +15502,9 @@ msgid "shared call_stmt:"
|
||||
msgstr "Gemeinsam genutztes call_stmt:"
|
||||
|
||||
#: cgraphunit.c:662
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "edge points to same body alias:"
|
||||
-msgstr "Kante zeigt auf falsche Deklaration:"
|
||||
+msgstr "Kante zeigt auf selben Körper-Alias:"
|
||||
|
||||
#: cgraphunit.c:674
|
||||
#, gcc-internal-format
|
||||
@@ -15529,12 +15514,12 @@ msgstr "Kante zeigt auf falsche Deklaration:"
|
||||
#: cgraphunit.c:685
|
||||
#, gcc-internal-format
|
||||
msgid "a call to thunk improperly represented in the call graph:"
|
||||
-msgstr ""
|
||||
+msgstr "ein Aufruf von Thunk ist im Aufrufgraphen falsch repräsentiert:"
|
||||
|
||||
#: cgraphunit.c:693
|
||||
#, gcc-internal-format
|
||||
msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
|
||||
-msgstr ""
|
||||
+msgstr "eine indirekte Kante mit unbekanntem Aufrufziel korrespondiert mit einem call_stmt mit einer unbekannten Deklaration:"
|
||||
|
||||
#: cgraphunit.c:703
|
||||
#, gcc-internal-format
|
||||
@@ -15547,9 +15532,9 @@ msgid "edge %s->%s has no corresponding call_stmt"
|
||||
msgstr "Kante %s->%s hat keine passende call_stmt"
|
||||
|
||||
#: cgraphunit.c:731
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "an indirect edge from %s has no corresponding call_stmt"
|
||||
-msgstr "Kante %s->%s hat keine passende call_stmt"
|
||||
+msgstr "eine indirekte Kante von %s hat kein passendes call_stmt"
|
||||
|
||||
#: cgraphunit.c:742
|
||||
#, gcc-internal-format
|
||||
@@ -15557,24 +15542,24 @@ msgid "verify_cgraph_node failed"
|
||||
msgstr "verify_cgraph gescheitert"
|
||||
|
||||
#: cgraphunit.c:817
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute"
|
||||
-msgstr "Attribut %s steht mit Attribut %s bei %L in Konflikt"
|
||||
+msgstr "Attribut %<weakref%> sollte von Attribut %<alias%> begleitet werden"
|
||||
|
||||
#: cgraphunit.c:872 cgraphunit.c:909
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<externally_visible%> attribute have effect only on public objects"
|
||||
-msgstr "%J Attribut %<externally_visible%> wirkt sich nur auf öffentliche Objekte aus"
|
||||
+msgstr "Attribut %<externally_visible%> wirkt sich nur auf öffentliche Objekte aus"
|
||||
|
||||
#: cgraphunit.c:881
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<weakref%> attribute ignored because function is defined"
|
||||
-msgstr "Attribut %qE ignoriert, da %qT bereits definiert ist"
|
||||
+msgstr "Attribut %<weakref%> ignoriert, da Funktion bereits definiert ist"
|
||||
|
||||
#: cgraphunit.c:919
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<weakref%> attribute ignored because variable is initialized"
|
||||
-msgstr "Attribut %qE ignoriert, da %qT bereits definiert ist"
|
||||
+msgstr "Attribut %<weakref%> ignoriert, da Variable bereits initialisiert ist"
|
||||
|
||||
#: cgraphunit.c:1167 cgraphunit.c:1193
|
||||
#, gcc-internal-format
|
||||
@@ -15582,14 +15567,14 @@ msgid "failed to reclaim unneeded function"
|
||||
msgstr "Zurückfordern der nicht genötigten Funktion gescheitert"
|
||||
|
||||
#: cgraphunit.c:1931
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "nodes with unreleased memory found"
|
||||
-msgstr "Knoten ohne freigegebenen Speicher gefunden"
|
||||
+msgstr "Knoten mit nicht freigegebenem Speicher gefunden"
|
||||
|
||||
#: collect2.c:1489 opts.c:801
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "LTO support has not been enabled in this configuration"
|
||||
-msgstr "-m64 wird in dieser Konfiguration nicht unterstützt"
|
||||
+msgstr "LTO-Unterstützung wurde in dieser Konfiguration nicht aktiviert"
|
||||
|
||||
#: collect2.c:1577
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15627,7 +15612,7 @@ msgid "conversion to incomplete type"
|
||||
msgstr "Konvertierung in unvollständigen Typen"
|
||||
|
||||
#: convert.c:852 convert.c:928
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t convert between vector values of different size"
|
||||
msgstr "zwischen Vektorwerten verschiedener Größen kann nicht konvertiert werden"
|
||||
|
||||
@@ -15647,9 +15632,9 @@ msgid "aggregate value used where a complex was expected"
|
||||
msgstr "zusammengesetzer Wert verwendet, wo »complex« erwartet wurde"
|
||||
|
||||
#: convert.c:934
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t convert value to a vector"
|
||||
-msgstr "Wert kann nicht in Vektor konvertiert werden"
|
||||
+msgstr "Wert kann nicht in einen Vektor umgewandelt werden"
|
||||
|
||||
#: convert.c:973
|
||||
#, gcc-internal-format
|
||||
@@ -15692,14 +15677,14 @@ msgid "%qs has overflowed"
|
||||
msgstr "%qs übergelaufen"
|
||||
|
||||
#: coverage.c:349
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "no coverage for function %qE found"
|
||||
-msgstr "keine Überdeckung für Funktion %qs gefunden"
|
||||
+msgstr "keine Überdeckung für Funktion %qE gefunden"
|
||||
|
||||
#: coverage.c:364
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "coverage mismatch for function %qE while reading counter %qs"
|
||||
-msgstr "Überdeckung passt nicht für Funktion %qs beim Lesen des Zählers %qs"
|
||||
+msgstr "Überdeckung passt nicht für Funktion %qE beim Lesen des Zählers %qs"
|
||||
|
||||
#: coverage.c:378
|
||||
#, fuzzy, gcc-internal-format
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,281 +0,0 @@
|
|||
From 1e8081c83aa5101ccca523ce8448282bece491ff Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 18:05:08 +0000
|
||||
Subject: [PATCH] PR debug/48343
|
||||
* combine.c (combine_instructions): Add last_combined_insn,
|
||||
update it if insn is after it, pass it to all try_combine
|
||||
calls.
|
||||
(try_combine): Add last_combined_insn parameter, pass it instead of
|
||||
i3 to propagate_for_debug.
|
||||
|
||||
* gcc.dg/torture/pr48343.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172110 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index f9d33b3..5f179c6 100644
|
||||
--- a/gcc/combine.c
|
||||
+++ b/gcc/combine.c
|
||||
@@ -387,7 +387,7 @@ static int cant_combine_insn_p (rtx);
|
||||
static int can_combine_p (rtx, rtx, rtx, rtx, rtx, rtx, rtx *, rtx *);
|
||||
static int combinable_i3pat (rtx, rtx *, rtx, rtx, rtx, int, int, rtx *);
|
||||
static int contains_muldiv (rtx);
|
||||
-static rtx try_combine (rtx, rtx, rtx, rtx, int *);
|
||||
+static rtx try_combine (rtx, rtx, rtx, rtx, int *, rtx);
|
||||
static void undo_all (void);
|
||||
static void undo_commit (void);
|
||||
static rtx *find_split_point (rtx *, rtx, bool);
|
||||
@@ -1159,6 +1159,7 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
|
||||
FOR_EACH_BB (this_basic_block)
|
||||
{
|
||||
+ rtx last_combined_insn = NULL_RTX;
|
||||
optimize_this_for_speed_p = optimize_bb_for_speed_p (this_basic_block);
|
||||
last_call_luid = 0;
|
||||
mem_last_set = -1;
|
||||
@@ -1177,6 +1178,10 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
next = 0;
|
||||
if (NONDEBUG_INSN_P (insn))
|
||||
{
|
||||
+ if (last_combined_insn == NULL_RTX
|
||||
+ || DF_INSN_LUID (last_combined_insn) < DF_INSN_LUID (insn))
|
||||
+ last_combined_insn = insn;
|
||||
+
|
||||
/* See if we know about function return values before this
|
||||
insn based upon SUBREG flags. */
|
||||
check_promoted_subreg (insn, PATTERN (insn));
|
||||
@@ -1190,7 +1195,8 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
|
||||
for (links = LOG_LINKS (insn); links; links = XEXP (links, 1))
|
||||
if ((next = try_combine (insn, XEXP (links, 0), NULL_RTX,
|
||||
- NULL_RTX, &new_direct_jump_p)) != 0)
|
||||
+ NULL_RTX, &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
|
||||
/* Try each sequence of three linked insns ending with this one. */
|
||||
@@ -1208,8 +1214,8 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
nextlinks;
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, link, XEXP (nextlinks, 0),
|
||||
- NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ NULL_RTX, &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
@@ -1227,14 +1233,15 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
&& sets_cc0_p (PATTERN (prev)))
|
||||
{
|
||||
if ((next = try_combine (insn, prev, NULL_RTX, NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
|
||||
for (nextlinks = LOG_LINKS (prev); nextlinks;
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, prev, XEXP (nextlinks, 0),
|
||||
- NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ NULL_RTX, &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
@@ -1247,14 +1254,15 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
&& reg_mentioned_p (cc0_rtx, SET_SRC (PATTERN (insn))))
|
||||
{
|
||||
if ((next = try_combine (insn, prev, NULL_RTX, NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
|
||||
for (nextlinks = LOG_LINKS (prev); nextlinks;
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, prev, XEXP (nextlinks, 0),
|
||||
- NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ NULL_RTX, &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
@@ -1269,8 +1277,8 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
&& NONJUMP_INSN_P (prev)
|
||||
&& sets_cc0_p (PATTERN (prev))
|
||||
&& (next = try_combine (insn, XEXP (links, 0),
|
||||
- prev, NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ prev, NULL_RTX, &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
#endif
|
||||
|
||||
@@ -1281,7 +1289,8 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, XEXP (links, 0),
|
||||
XEXP (nextlinks, 0), NULL_RTX,
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
|
||||
/* Try four-instruction combinations. */
|
||||
@@ -1305,14 +1314,16 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, link, link1,
|
||||
XEXP (nextlinks, 0),
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
/* I0, I1 -> I2, I2 -> I3. */
|
||||
for (nextlinks = XEXP (next1, 1); nextlinks;
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, link, link1,
|
||||
XEXP (nextlinks, 0),
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
@@ -1326,14 +1337,16 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, link, link1,
|
||||
XEXP (nextlinks, 0),
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
/* I0 -> I1; I1, I2 -> I3. */
|
||||
for (nextlinks = LOG_LINKS (link1); nextlinks;
|
||||
nextlinks = XEXP (nextlinks, 1))
|
||||
if ((next = try_combine (insn, link, link1,
|
||||
XEXP (nextlinks, 0),
|
||||
- &new_direct_jump_p)) != 0)
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn)) != 0)
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
@@ -1362,7 +1375,8 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
i2mod_old_rhs = copy_rtx (orig);
|
||||
i2mod_new_rhs = copy_rtx (note);
|
||||
next = try_combine (insn, i2mod, NULL_RTX, NULL_RTX,
|
||||
- &new_direct_jump_p);
|
||||
+ &new_direct_jump_p,
|
||||
+ last_combined_insn);
|
||||
i2mod = NULL_RTX;
|
||||
if (next)
|
||||
goto retry;
|
||||
@@ -2501,10 +2515,15 @@ update_cfg_for_uncondjump (rtx insn)
|
||||
resume scanning.
|
||||
|
||||
Set NEW_DIRECT_JUMP_P to a nonzero value if try_combine creates a
|
||||
- new direct jump instruction. */
|
||||
+ new direct jump instruction.
|
||||
+
|
||||
+ LAST_COMBINED_INSN is either I3, or some insn after I3 that has
|
||||
+ been I3 passed to an earlier try_combine within the same basic
|
||||
+ block. */
|
||||
|
||||
static rtx
|
||||
-try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
|
||||
+try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
|
||||
+ rtx last_combined_insn)
|
||||
{
|
||||
/* New patterns for I3 and I2, respectively. */
|
||||
rtx newpat, newi2pat = 0;
|
||||
@@ -3853,7 +3872,7 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
|
||||
i2src while its original mode is temporarily
|
||||
restored, and then clear i2scratch so that we don't
|
||||
do it again later. */
|
||||
- propagate_for_debug (i2, i3, reg, i2src);
|
||||
+ propagate_for_debug (i2, last_combined_insn, reg, i2src);
|
||||
i2scratch = false;
|
||||
/* Put back the new mode. */
|
||||
adjust_reg_mode (reg, new_mode);
|
||||
@@ -3866,13 +3885,16 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
|
||||
if (reg == i2dest)
|
||||
{
|
||||
first = i2;
|
||||
- last = i3;
|
||||
+ last = last_combined_insn;
|
||||
}
|
||||
else
|
||||
{
|
||||
first = i3;
|
||||
last = undobuf.other_insn;
|
||||
gcc_assert (last);
|
||||
+ if (DF_INSN_LUID (last)
|
||||
+ < DF_INSN_LUID (last_combined_insn))
|
||||
+ last = last_combined_insn;
|
||||
}
|
||||
|
||||
/* We're dealing with a reg that changed mode but not
|
||||
@@ -4101,14 +4123,14 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
|
||||
if (newi2pat)
|
||||
{
|
||||
if (MAY_HAVE_DEBUG_INSNS && i2scratch)
|
||||
- propagate_for_debug (i2, i3, i2dest, i2src);
|
||||
+ propagate_for_debug (i2, last_combined_insn, i2dest, i2src);
|
||||
INSN_CODE (i2) = i2_code_number;
|
||||
PATTERN (i2) = newi2pat;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MAY_HAVE_DEBUG_INSNS && i2src)
|
||||
- propagate_for_debug (i2, i3, i2dest, i2src);
|
||||
+ propagate_for_debug (i2, last_combined_insn, i2dest, i2src);
|
||||
SET_INSN_DELETED (i2);
|
||||
}
|
||||
|
||||
@@ -4117,7 +4139,7 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
|
||||
LOG_LINKS (i1) = 0;
|
||||
REG_NOTES (i1) = 0;
|
||||
if (MAY_HAVE_DEBUG_INSNS)
|
||||
- propagate_for_debug (i1, i3, i1dest, i1src);
|
||||
+ propagate_for_debug (i1, last_combined_insn, i1dest, i1src);
|
||||
SET_INSN_DELETED (i1);
|
||||
}
|
||||
|
||||
@@ -4126,7 +4148,7 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
|
||||
LOG_LINKS (i0) = 0;
|
||||
REG_NOTES (i0) = 0;
|
||||
if (MAY_HAVE_DEBUG_INSNS)
|
||||
- propagate_for_debug (i0, i3, i0dest, i0src);
|
||||
+ propagate_for_debug (i0, last_combined_insn, i0dest, i0src);
|
||||
SET_INSN_DELETED (i0);
|
||||
}
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..e56b3a3
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/torture/pr48343.c
|
||||
@@ -0,0 +1,19 @@
|
||||
+/* PR debug/48343 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-fcompare-debug" } */
|
||||
+
|
||||
+void foo (unsigned char *, unsigned char *);
|
||||
+
|
||||
+void
|
||||
+test (unsigned int x, int y)
|
||||
+{
|
||||
+ unsigned int i, j = 0, k;
|
||||
+ unsigned char s[256], t[64];
|
||||
+ foo (s, t);
|
||||
+ t[0] = y;
|
||||
+ for (i = 0; i < 256; i++)
|
||||
+ {
|
||||
+ j = (j + s[i] + t[i % x]) & 0xff;
|
||||
+ k = i; i = j; j = k;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
From 95333dcb51a2099d45b792b945fd9c0a2f8febab Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 18:33:34 +0000
|
||||
Subject: [PATCH] PR fortran/48117
|
||||
* gfortran.dg/gomp/pr48117.f90: New test.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172120 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..bc8ad9b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gfortran.dg/gomp/pr48117.f90
|
||||
@@ -0,0 +1,11 @@
|
||||
+! PR fortran/48117
|
||||
+! { dg-do compile }
|
||||
+! { dg-options "-O2 -fopenmp" }
|
||||
+
|
||||
+subroutine foo(x)
|
||||
+ character(len=*), optional :: x
|
||||
+ character(len=80) :: v
|
||||
+ !$omp master
|
||||
+ if (present(x)) v = adjustl(x)
|
||||
+ !$omp end master
|
||||
+end subroutine foo
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,224 +0,0 @@
|
|||
From ac4ab0911ae869e3cd4c00629e3c4d4d0b7e7aa6 Mon Sep 17 00:00:00 2001
|
||||
From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 20:46:50 +0000
|
||||
Subject: [PATCH] * config/i386/sse.md: Update copyright year.
|
||||
(avx_cmp<ssescalarmodesuffix><mode>3): Add missing output
|
||||
register constraint.
|
||||
(*vec_concatv2sf_avx): Fix wrong register constraint in
|
||||
alternative 3 of operand 1.
|
||||
(*vec_set<mode>_0_avx): Avoid combining registers from different
|
||||
units in a single alternative.
|
||||
(*vec_set<mode>_0_sse4_1): Ditto.
|
||||
(*vec_set<mode>_0_sse2): Ditto.
|
||||
(vec_set<mode>_0): Ditto.
|
||||
(sse2_storehpd): Ditto.
|
||||
(sse2_loadhpd): Ditto.
|
||||
(sse4_1_insertps): Use nonimmediate_operand for operand 2.
|
||||
* config/i386/predicates.md (sse_comparison_operator): Do not
|
||||
define as special predicate.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172126 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 986856b..7cce9d4 100644
|
||||
--- a/gcc/config/i386/predicates.md
|
||||
+++ b/gcc/config/i386/predicates.md
|
||||
@@ -969,13 +969,8 @@
|
||||
;; Return true if OP is a comparison that can be used in the CMPSS/CMPPS insns.
|
||||
;; The first set are supported directly; the second set can't be done with
|
||||
;; full IEEE support, i.e. NaNs.
|
||||
-;;
|
||||
-;; ??? It would seem that we have a lot of uses of this predicate that pass
|
||||
-;; it the wrong mode. We got away with this because the old function didn't
|
||||
-;; check the mode at all. Mirror that for now by calling this a special
|
||||
-;; predicate.
|
||||
|
||||
-(define_special_predicate "sse_comparison_operator"
|
||||
+(define_predicate "sse_comparison_operator"
|
||||
(match_code "eq,lt,le,unordered,ne,unge,ungt,ordered"))
|
||||
|
||||
;; Return true if OP is a comparison operator that can be issued by
|
||||
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
|
||||
index f4bea64..578ad82 100644
|
||||
--- a/gcc/config/i386/sse.md
|
||||
+++ b/gcc/config/i386/sse.md
|
||||
@@ -1,5 +1,5 @@
|
||||
;; GCC machine description for SSE instructions
|
||||
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
|
||||
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
;; Free Software Foundation, Inc.
|
||||
;;
|
||||
;; This file is part of GCC.
|
||||
@@ -1557,7 +1557,7 @@
|
||||
(set_attr "mode" "<MODE>")])
|
||||
|
||||
(define_insn "avx_cmp<ssescalarmodesuffix><mode>3"
|
||||
- [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
|
||||
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
|
||||
(vec_merge:SSEMODEF2P
|
||||
(unspec:SSEMODEF2P
|
||||
[(match_operand:SSEMODEF2P 1 "register_operand" "x")
|
||||
@@ -3846,7 +3846,7 @@
|
||||
(define_insn "*vec_concatv2sf_avx"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=x,x,x,*y ,*y")
|
||||
(vec_concat:V2SF
|
||||
- (match_operand:SF 1 "nonimmediate_operand" " x,x,m, x , m")
|
||||
+ (match_operand:SF 1 "nonimmediate_operand" " x,x,m, 0 , m")
|
||||
(match_operand:SF 2 "vector_move_operand" " x,m,C,*ym, C")))]
|
||||
"TARGET_AVX"
|
||||
"@
|
||||
@@ -3935,13 +3935,15 @@
|
||||
DONE;
|
||||
})
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "*vec_set<mode>_0_avx"
|
||||
- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x,m")
|
||||
+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x,m, m,m")
|
||||
(vec_merge:SSEMODE4S
|
||||
(vec_duplicate:SSEMODE4S
|
||||
(match_operand:<ssescalarmode> 2
|
||||
- "general_operand" " x,m,*r,x,*rm,x*rfF"))
|
||||
- (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,x, x,0")
|
||||
+ "general_operand" " x,m,*r,x,*rm,x,*r,fF"))
|
||||
+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,x, x,0, 0,0")
|
||||
(const_int 1)))]
|
||||
"TARGET_AVX"
|
||||
"@
|
||||
@@ -3950,20 +3952,24 @@
|
||||
vmovd\t{%2, %0|%0, %2}
|
||||
vmovss\t{%2, %1, %0|%0, %1, %2}
|
||||
vpinsrd\t{$0, %2, %1, %0|%0, %1, %2, 0}
|
||||
+ #
|
||||
+ #
|
||||
#"
|
||||
- [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*")
|
||||
- (set_attr "prefix_extra" "*,*,*,*,1,*")
|
||||
- (set_attr "length_immediate" "*,*,*,*,1,*")
|
||||
+ [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*,*,*")
|
||||
+ (set_attr "prefix_extra" "*,*,*,*,1,*,*,*")
|
||||
+ (set_attr "length_immediate" "*,*,*,*,1,*,*,*")
|
||||
(set_attr "prefix" "vex")
|
||||
- (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*")])
|
||||
+ (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*,*,*")])
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "*vec_set<mode>_0_sse4_1"
|
||||
- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x,m")
|
||||
+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x, m,m")
|
||||
(vec_merge:SSEMODE4S
|
||||
(vec_duplicate:SSEMODE4S
|
||||
(match_operand:<ssescalarmode> 2
|
||||
- "general_operand" " x,m,*r,x,*rm,*rfF"))
|
||||
- (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,0, 0,0")
|
||||
+ "general_operand" " x,m,*r,x,*rm,*r,fF"))
|
||||
+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,0, 0, 0,0")
|
||||
(const_int 1)))]
|
||||
"TARGET_SSE4_1"
|
||||
"@
|
||||
@@ -3972,44 +3978,53 @@
|
||||
movd\t{%2, %0|%0, %2}
|
||||
movss\t{%2, %0|%0, %2}
|
||||
pinsrd\t{$0, %2, %0|%0, %2, 0}
|
||||
+ #
|
||||
#"
|
||||
- [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*")
|
||||
- (set_attr "prefix_extra" "*,*,*,*,1,*")
|
||||
- (set_attr "length_immediate" "*,*,*,*,1,*")
|
||||
- (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*")])
|
||||
+ [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*,*")
|
||||
+ (set_attr "prefix_extra" "*,*,*,*,1,*,*")
|
||||
+ (set_attr "length_immediate" "*,*,*,*,1,*,*")
|
||||
+ (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*,*")])
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "*vec_set<mode>_0_sse2"
|
||||
- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x, x,x,m")
|
||||
+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x, x,x,m, m,m")
|
||||
(vec_merge:SSEMODE4S
|
||||
(vec_duplicate:SSEMODE4S
|
||||
(match_operand:<ssescalarmode> 2
|
||||
- "general_operand" " m,*r,x,x*rfF"))
|
||||
- (match_operand:SSEMODE4S 1 "vector_move_operand" " C, C,0,0")
|
||||
+ "general_operand" " m,*r,x,x,*r,fF"))
|
||||
+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C, C,0,0, 0,0")
|
||||
(const_int 1)))]
|
||||
"TARGET_SSE2"
|
||||
"@
|
||||
mov<ssescalarmodesuffix>\t{%2, %0|%0, %2}
|
||||
movd\t{%2, %0|%0, %2}
|
||||
movss\t{%2, %0|%0, %2}
|
||||
+ #
|
||||
+ #
|
||||
#"
|
||||
[(set_attr "type" "ssemov")
|
||||
- (set_attr "mode" "<ssescalarmode>,SI,SF,*")])
|
||||
+ (set_attr "mode" "<ssescalarmode>,SI,SF,*,*,*")])
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "vec_set<mode>_0"
|
||||
- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x,m")
|
||||
+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x,m, m,m")
|
||||
(vec_merge:SSEMODE4S
|
||||
(vec_duplicate:SSEMODE4S
|
||||
(match_operand:<ssescalarmode> 2
|
||||
- "general_operand" " m,x,x*rfF"))
|
||||
- (match_operand:SSEMODE4S 1 "vector_move_operand" " C,0,0")
|
||||
+ "general_operand" " m,x,x,*r,fF"))
|
||||
+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C,0,0, 0,0")
|
||||
(const_int 1)))]
|
||||
"TARGET_SSE"
|
||||
"@
|
||||
movss\t{%2, %0|%0, %2}
|
||||
movss\t{%2, %0|%0, %2}
|
||||
+ #
|
||||
+ #
|
||||
#"
|
||||
[(set_attr "type" "ssemov")
|
||||
- (set_attr "mode" "SF,SF,*")])
|
||||
+ (set_attr "mode" "SF,SF,*,*,*")])
|
||||
|
||||
;; A subset is vec_setv4sf.
|
||||
(define_insn "*vec_setv4sf_avx"
|
||||
@@ -4064,7 +4079,7 @@
|
||||
|
||||
(define_insn "sse4_1_insertps"
|
||||
[(set (match_operand:V4SF 0 "register_operand" "=x")
|
||||
- (unspec:V4SF [(match_operand:V4SF 2 "register_operand" "x")
|
||||
+ (unspec:V4SF [(match_operand:V4SF 2 "nonimmediate_operand" "xm")
|
||||
(match_operand:V4SF 1 "register_operand" "0")
|
||||
(match_operand:SI 3 "const_0_to_255_operand" "n")]
|
||||
UNSPEC_INSERTPS))]
|
||||
@@ -4811,6 +4826,8 @@
|
||||
(set_attr "prefix" "vex")
|
||||
(set_attr "mode" "V1DF,V2DF,DF,DF,DF")])
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "sse2_storehpd"
|
||||
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x,*f,r")
|
||||
(vec_select:DF
|
||||
@@ -4912,6 +4929,8 @@
|
||||
(set_attr "prefix" "vex")
|
||||
(set_attr "mode" "V1DF,V2DF,DF,DF,DF")])
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "sse2_loadhpd"
|
||||
[(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,o,o,o")
|
||||
(vec_concat:V2DF
|
||||
@@ -4983,6 +5002,8 @@
|
||||
(set_attr "prefix" "vex")
|
||||
(set_attr "mode" "DF,V1DF,V1DF,V1DF,DF,DF,DF")])
|
||||
|
||||
+;; Avoid combining registers from different units in a single alternative,
|
||||
+;; see comment above inline_secondary_memory_needed function in i386.c
|
||||
(define_insn "sse2_loadlpd"
|
||||
[(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,x,x,m,m,m")
|
||||
(vec_concat:V2DF
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 5430ea55f853566272279cbd5bb20a2dd5bd7a51 Mon Sep 17 00:00:00 2001
|
||||
From: mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 7 Apr 2011 21:33:47 +0000
|
||||
Subject: [PATCH] * gcc.dg/torture/stackalign/non-local-goto-5.c: Fix for targets
|
||||
with no trampolines.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172135 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 08ca95d..d198c9a 100644
|
||||
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
|
||||
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
|
||||
@@ -1,8 +1,8 @@
|
||||
/* { dg-do run } */
|
||||
|
||||
+extern void exit (int);
|
||||
#if !defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
|
||||
extern void abort (void);
|
||||
-extern void exit (int);
|
||||
int s(i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
|
||||
int x(){return s(0)==1&&s(1)==0&&s(2)==1;}
|
||||
int main(){if(x()!=1)abort();exit(0);}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
From eba70fb9976ef047a8fb8dc6499c42e8fd3551f7 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 11:45:29 +0000
|
||||
Subject: [PATCH] PR tree-optimization/48377
|
||||
* tree-vect-data-refs.c (vector_alignment_reachable_p): Set
|
||||
is_packed to true even for types with smaller TYPE_ALIGN than
|
||||
TYPE_SIZE.
|
||||
|
||||
* gcc.dg/vect/pr48377.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172174 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 5295c71..270462e 100644
|
||||
new file mode 100644
|
||||
index 0000000..e0cde43
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/vect/pr48377.c
|
||||
@@ -0,0 +1,25 @@
|
||||
+/* PR tree-optimization/48377 */
|
||||
+/* { dg-do run } */
|
||||
+
|
||||
+typedef unsigned int U __attribute__((__aligned__ (1), __may_alias__));
|
||||
+
|
||||
+__attribute__((noinline, noclone)) unsigned int
|
||||
+foo (const char *s, int len)
|
||||
+{
|
||||
+ const U *p = (const U *) s;
|
||||
+ unsigned int f = len / sizeof (unsigned int), hash = len, i;
|
||||
+
|
||||
+ for (i = 0; i < f; ++i)
|
||||
+ hash += *p++;
|
||||
+ return hash;
|
||||
+}
|
||||
+
|
||||
+char buf[64] __attribute__((aligned (32)));
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ return foo (buf + 1, 26) != 26;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { cleanup-tree-dump "vect" } } */
|
||||
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
|
||||
index 2c9936c..a1437b5 100644
|
||||
--- a/gcc/tree-vect-data-refs.c
|
||||
+++ b/gcc/tree-vect-data-refs.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Data References Analysis and Manipulation Utilities for Vectorization.
|
||||
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Dorit Naishlos <dorit@il.ibm.com>
|
||||
and Ira Rosen <irar@il.ibm.com>
|
||||
@@ -1143,6 +1143,9 @@ vector_alignment_reachable_p (struct data_reference *dr)
|
||||
if (ba)
|
||||
is_packed = contains_packed_reference (ba);
|
||||
|
||||
+ if (compare_tree_int (TYPE_SIZE (type), TYPE_ALIGN (type)) > 0)
|
||||
+ is_packed = true;
|
||||
+
|
||||
if (vect_print_dump_info (REPORT_DETAILS))
|
||||
fprintf (vect_dump, "Unknown misalignment, is_packed = %d",is_packed);
|
||||
if (targetm.vectorize.vector_alignment_reachable (type, is_packed))
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,774 +0,0 @@
|
|||
From dc6361adc966b10875fbfafff9652dcc4043df58 Mon Sep 17 00:00:00 2001
|
||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 14:29:58 +0000
|
||||
Subject: [PATCH] * de.po: Update.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172188 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index a1d1617..e904097 100644
|
||||
--- a/gcc/po/de.po
|
||||
+++ b/gcc/po/de.po
|
||||
@@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: gcc 4.6.0\n"
|
||||
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
|
||||
"POT-Creation-Date: 2011-03-24 16:45+0000\n"
|
||||
-"PO-Revision-Date: 2011-04-06 19:50+0100\n"
|
||||
+"PO-Revision-Date: 2011-04-08 19:50+0100\n"
|
||||
"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||
"Language: de\n"
|
||||
@@ -15687,9 +15687,9 @@ msgid "coverage mismatch for function %qE while reading counter %qs"
|
||||
msgstr "Überdeckung passt nicht für Funktion %qE beim Lesen des Zählers %qs"
|
||||
|
||||
#: coverage.c:378
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "coverage mismatch ignored"
|
||||
-msgstr "unpassende Überdeckung ignoriert wegen -Wcoverage-mismatch"
|
||||
+msgstr "unpassende Überdeckung ignoriert"
|
||||
|
||||
#: coverage.c:380
|
||||
#, gcc-internal-format
|
||||
@@ -15697,9 +15697,9 @@ msgid "execution counts estimated"
|
||||
msgstr "Ausführungszähler voraussichtlich"
|
||||
|
||||
#: coverage.c:381
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "execution counts assumed to be zero"
|
||||
-msgstr "Datei %s nicht gefunden, Ausführungszähler als null angenommen"
|
||||
+msgstr "Ausführungszähler als null angenommen"
|
||||
|
||||
#: coverage.c:384
|
||||
#, gcc-internal-format
|
||||
@@ -15717,9 +15717,9 @@ msgid "error writing %qs"
|
||||
msgstr "Fehler beim Schreiben von %qs"
|
||||
|
||||
#: cppspec.c:92
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%qs is not a valid option to the preprocessor"
|
||||
-msgstr "»%s« ist keine gültige Präprozessoroption"
|
||||
+msgstr "%qs ist keine gültige Präprozessoroption"
|
||||
|
||||
#: cppspec.c:111
|
||||
#, gcc-internal-format
|
||||
@@ -15727,9 +15727,9 @@ msgid "too many input files"
|
||||
msgstr "zu viele Eingabedateien"
|
||||
|
||||
#: dbgcnt.c:135
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "cannot find a valid counter:value pair:"
|
||||
-msgstr "Es kann kein gültiger Zähler:Wert-Paar gefunden werden:"
|
||||
+msgstr "Es kann kein gültiges Zähler:Wert-Paar gefunden werden:"
|
||||
|
||||
#: dbgcnt.c:136
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15817,9 +15817,9 @@ msgid "region_array is corrupted for region %i"
|
||||
msgstr "region_array ist für Region %i beschädigt"
|
||||
|
||||
#: except.c:3342 except.c:3373
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "lp_array is corrupted for lp %i"
|
||||
-msgstr "region_array ist für Region %i beschädigt"
|
||||
+msgstr "lp_array ist für lp %i beschädigt"
|
||||
|
||||
#: except.c:3359
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15832,9 +15832,9 @@ msgid "negative nesting depth of region %i"
|
||||
msgstr "negative Verschachtelungstiefe der Region %i"
|
||||
|
||||
#: except.c:3378
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "region of lp %i is wrong"
|
||||
-msgstr "äußerer Block der Region %i ist falsch"
|
||||
+msgstr "Region von lp %i ist falsch"
|
||||
|
||||
#: except.c:3405
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -15842,14 +15842,14 @@ msgid "tree list ends on depth %i"
|
||||
msgstr "Baumliste endet bei Tiefe %i"
|
||||
|
||||
#: except.c:3410
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "region_array does not match region_tree"
|
||||
-msgstr "Feld passt nicht zum Regionsbaum"
|
||||
+msgstr "region_array passt nicht zum region_tree"
|
||||
|
||||
#: except.c:3415
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "lp_array does not match region_tree"
|
||||
-msgstr "Feld passt nicht zum Regionsbaum"
|
||||
+msgstr "lp_array passt nicht zum region_tree"
|
||||
|
||||
#: except.c:3422
|
||||
#, gcc-internal-format
|
||||
@@ -15864,27 +15864,27 @@ msgstr "Kellergrenzen nicht für dieses Ziel unterstützt"
|
||||
#: expmed.c:1778
|
||||
#, gcc-internal-format
|
||||
msgid "multiple accesses to volatile structure member because of packed attribute"
|
||||
-msgstr ""
|
||||
+msgstr "mehrfacher Zugriff auf »volatile« Strukturelement wegen gepackter Attribute"
|
||||
|
||||
#: expmed.c:1782
|
||||
#, gcc-internal-format
|
||||
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
|
||||
-msgstr ""
|
||||
+msgstr "mehrfacher Zugriff auf »volatile« Strukturbitfelder wegen gepackter Attribute"
|
||||
|
||||
#: expmed.c:1792
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "mis-aligned access used for structure member"
|
||||
-msgstr "Speicherklasse für Strukturfeld %qs angegeben"
|
||||
+msgstr "falsch ausgerichteter Zugriff für Strukturelement verwendet"
|
||||
|
||||
#: expmed.c:1795
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "mis-aligned access used for structure bitfield"
|
||||
-msgstr "Speicherklasse für Strukturfeld %qs angegeben"
|
||||
+msgstr "falsch ausgerichteter Zugriff für Strukturbitfeld verwendet"
|
||||
|
||||
#: expmed.c:1801
|
||||
#, gcc-internal-format
|
||||
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
|
||||
-msgstr ""
|
||||
+msgstr "wenn ein »volatile«-Objekt über mehrere Bereiche mit Typgröße geht, muss der Compiler wählen zwischen der Verwendung einzelner falsch ausgerichteter Zugriffe um die Volatilität zu erhalten und der Verwendung mehrerer ausgerichteter Zugriffe um Laufzeitfehler zu verhindern. Dies kann zur Laufzeit fehlschlagen, wenn die Hardware diesen Zugriff nicht erlaubt"
|
||||
|
||||
#: expr.c:9305
|
||||
#, gcc-internal-format
|
||||
@@ -15902,19 +15902,19 @@ msgid "invalid argument %qs to -fdebug-prefix-map"
|
||||
msgstr "ungültiges Argument %qs für -fdebug-prefix-map"
|
||||
|
||||
#: final.c:1583
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "the frame size of %wd bytes is larger than %wd bytes"
|
||||
-msgstr "Größe von %q+D überschreitet %wd Bytes"
|
||||
+msgstr "die Rahmengröße von %wd Bytes überschreitet %wd Bytes"
|
||||
|
||||
#: final.c:4376 toplev.c:1407 tree-optimize.c:171
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "could not open final insn dump file %qs: %m"
|
||||
-msgstr "Abzugsdatei %qs konnte nicht geöffnet werden: %s"
|
||||
+msgstr "endgültige Abzugsdatei %qs der Anweisungen konnte nicht geöffnet werden: %m"
|
||||
|
||||
#: final.c:4440 tree-optimize.c:187
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "could not close final insn dump file %qs: %m"
|
||||
-msgstr "Abzugsdatei %qs konnte nicht geöffnet werden: %s"
|
||||
+msgstr "endgültige Abzugsdatei %qs der Anweisungen konnte nicht geschlossen werden: %m"
|
||||
|
||||
#: fixed-value.c:103
|
||||
#, gcc-internal-format
|
||||
@@ -15957,9 +15957,9 @@ msgid "assuming signed overflow does not occur when reducing constant in compari
|
||||
msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn Konstante in Vergleich verringert wird"
|
||||
|
||||
#: fold-const.c:8576
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C1 +- C2"
|
||||
-msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn Division negiert wird"
|
||||
+msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn »X +- C1 cmp C2« in »X cmp C1 +- C2« geändert wird"
|
||||
|
||||
#: fold-const.c:8815
|
||||
#, gcc-internal-format
|
||||
@@ -15972,9 +15972,9 @@ msgid "fold check: original tree changed by fold"
|
||||
msgstr "Faltungstest: ursprünglicher Baum durch Faltung geändert"
|
||||
|
||||
#: function.c:253
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "total size of local objects too large"
|
||||
-msgstr "%JGesamtgröße der lokalen Objekte zu hoch"
|
||||
+msgstr "Gesamtgröße der lokalen Objekte zu hoch"
|
||||
|
||||
#: function.c:1749 gimplify.c:5061
|
||||
#, gcc-internal-format
|
||||
@@ -16017,9 +16017,9 @@ msgid "specs %s spec was not found to be renamed"
|
||||
msgstr "keine %s-Spezifikation zum Umbenennen gefunden"
|
||||
|
||||
#: gcc.c:1791
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%s: attempt to rename spec %qs to already defined spec %qs"
|
||||
-msgstr "%s: Versuch, Spezifikation »%s« in bereits definierte Spezifikation »%s« umzubenennen"
|
||||
+msgstr "%s: Versuch, Spezifikation %qs in bereits definierte Spezifikation %qs umzubenennen"
|
||||
|
||||
#: gcc.c:1812
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16037,9 +16037,9 @@ msgid "spec file has no spec for linking"
|
||||
msgstr "Spezifikationsdatei hat keine Spezifikation zum Binden"
|
||||
|
||||
#: gcc.c:2417
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "system path %qs is not absolute"
|
||||
-msgstr "System-Pfad »%s« ist nicht absolut"
|
||||
+msgstr "System-Pfad %qs ist nicht absolut"
|
||||
|
||||
#: gcc.c:2494
|
||||
#, gcc-internal-format
|
||||
@@ -16047,59 +16047,59 @@ msgid "-pipe not supported"
|
||||
msgstr "-pipe wird nicht unterstützt"
|
||||
|
||||
#: gcc.c:2617
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "pex_init failed: %m"
|
||||
-msgstr "pex_init gescheitert"
|
||||
+msgstr "pex_init gescheitert: %m"
|
||||
|
||||
#: gcc.c:2656
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "failed to get exit status: %m"
|
||||
-msgstr "Ende-Status konnte nicht ermittelt werden"
|
||||
+msgstr "Ende-Status konnte nicht ermittelt werden: %m"
|
||||
|
||||
#: gcc.c:2662
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "failed to get process times: %m"
|
||||
-msgstr "Verarbeitungszeiten konnten nicht ermittelt werden"
|
||||
+msgstr "Verarbeitungszeiten konnten nicht ermittelt werden: %m"
|
||||
|
||||
#: gcc.c:2688
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s (program %s)"
|
||||
-msgstr "Programme: %s\n"
|
||||
+msgstr "%s (Programm %s)"
|
||||
|
||||
#: gcc.c:3097 opts-common.c:958 opts-common.c:1030
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unrecognized command line option %qs"
|
||||
-msgstr "nicht erkannte Kommandozeilenoption »%s«"
|
||||
+msgstr "nicht erkannte Kommandozeilenoption %qs"
|
||||
|
||||
#: gcc.c:3358
|
||||
#, gcc-internal-format
|
||||
msgid "%qs is an unknown -save-temps option"
|
||||
-msgstr ""
|
||||
+msgstr "%qs ist eine unbekannte Option für -save-temps"
|
||||
|
||||
#: gcc.c:3816
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "-pipe ignored because -save-temps specified"
|
||||
-msgstr "Warnung: -pipe ignoriert, da -save-temps angegeben"
|
||||
+msgstr "-pipe ignoriert, da -save-temps angegeben"
|
||||
|
||||
#: gcc.c:3902
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%<-x %s%> after last input file has no effect"
|
||||
-msgstr "Warnung: »-x %s« hinter letzter Eingabedatei hat keine Wirkung"
|
||||
+msgstr "%<-x %s%> hinter letzter Eingabedatei hat keine Wirkung"
|
||||
|
||||
#: gcc.c:4069
|
||||
#, gcc-internal-format
|
||||
msgid "unable to locate default linker script %qs in the library search paths"
|
||||
-msgstr ""
|
||||
+msgstr "Standard-Linkerscript %qs kann nicht in den Bibliotheks-Suchpfaden gefunden werden"
|
||||
|
||||
#: gcc.c:4272
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "switch %qs does not start with %<-%>"
|
||||
-msgstr "Schalter »%s« beginnt nicht mit »-«"
|
||||
+msgstr "Schalter %qs beginnt nicht mit %<-%>"
|
||||
|
||||
#: gcc.c:4275
|
||||
#, gcc-internal-format
|
||||
msgid "spec-generated switch is just %<-%>"
|
||||
-msgstr ""
|
||||
+msgstr "aus Spezifikation erzeugtes switch ist nur %<-%>"
|
||||
|
||||
#: gcc.c:4366
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16117,52 +16117,52 @@ msgid "could not close temporary response file %s"
|
||||
msgstr "temporäre Antwortdatei %s konnte nicht geschlossen werden"
|
||||
|
||||
#: gcc.c:4501
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "spec %qs invalid"
|
||||
-msgstr "Spezifikation »%s« ist ungültig"
|
||||
+msgstr "Spezifikation %qs ist ungültig"
|
||||
|
||||
#: gcc.c:4650
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "spec %qs has invalid %<%%0%c%>"
|
||||
-msgstr "Spezifikation »%s« hat ungültiges »%%0%c«"
|
||||
+msgstr "Spezifikation %qs hat ungültiges %<%%0%c%>"
|
||||
|
||||
#: gcc.c:4961
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "spec %qs has invalid %<%%W%c%>"
|
||||
-msgstr "Spezifikation »%s« hat ungültiges »%%W%c«"
|
||||
+msgstr "Spezifikation %qs hat ungültiges %<%%W%c%>"
|
||||
|
||||
#: gcc.c:4983
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "spec %qs has invalid %<%%x%c%>"
|
||||
-msgstr "Spezifikation »%s« hat ungültiges »%%x%c«"
|
||||
+msgstr "Spezifikation %qs hat ungültiges %<%%x%c%>"
|
||||
|
||||
#. Catch the case where a spec string contains something like
|
||||
#. '%{foo:%*}'. i.e. there is no * in the pattern on the left
|
||||
#. hand side of the :.
|
||||
#: gcc.c:5171
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "spec failure: %<%%*%> has not been initialized by pattern match"
|
||||
-msgstr "Spezifikationsfehler: »%%*« wurde nicht durch Mustererkennung initialisiert"
|
||||
+msgstr "Spezifikationsfehler: %<%%*%> wurde nicht durch Mustererkennung initialisiert"
|
||||
|
||||
#: gcc.c:5180
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "use of obsolete %%[ operator in specs"
|
||||
-msgstr "Warnung: Verwendung des veralteten Operators %%[ in Spezifikation"
|
||||
+msgstr "Verwendung des veralteten Operators %%[ in Spezifikationen"
|
||||
|
||||
#: gcc.c:5261
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "spec failure: unrecognized spec option %qc"
|
||||
-msgstr "Spezifikationsfehler: nicht erkannte Option »%c«"
|
||||
+msgstr "Spezifikationsfehler: nicht erkannte Spezifikationsoption »%c«"
|
||||
|
||||
#: gcc.c:5321
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unknown spec function %qs"
|
||||
-msgstr "unbekannte Spezifikationsfunktion »%s«"
|
||||
+msgstr "unbekannte Spezifikationsfunktion %qs"
|
||||
|
||||
#: gcc.c:5339
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "error in args to spec function %qs"
|
||||
-msgstr "Fehler in Argumenten für Spezifikationsfunktion »%s«"
|
||||
+msgstr "Fehler in Argumenten für Spezifikationsfunktion %qs"
|
||||
|
||||
#: gcc.c:5387
|
||||
#, gcc-internal-format
|
||||
@@ -16181,39 +16181,39 @@ msgid "malformed spec function arguments"
|
||||
msgstr "schlechte Argumente für Spezifikationsfunktion"
|
||||
|
||||
#: gcc.c:5655
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "braced spec %qs is invalid at %qc"
|
||||
-msgstr "geschweift geklammerte Spezifikation »%s« ist bei »%c« ungültig"
|
||||
+msgstr "geschweift geklammerte Spezifikation %qs ist bei %qc ungültig"
|
||||
|
||||
#: gcc.c:5743
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "braced spec body %qs is invalid"
|
||||
-msgstr "geschweift geklammerter Körper »%s« ist ungültig"
|
||||
+msgstr "geschweift geklammerter Spezifikationskörper %qs ist ungültig"
|
||||
|
||||
#: gcc.c:5992
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: could not determine length of compare-debug file %s"
|
||||
-msgstr "in Antwortdatei %s konnte nicht geschrieben werden"
|
||||
+msgstr "%s: Größe der Vergleichs-Prüfdatei %s konnte nicht ermittelt werden"
|
||||
|
||||
#: gcc.c:6003
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: -fcompare-debug failure (length)"
|
||||
-msgstr ""
|
||||
+msgstr "%s: Fehlschlag von -fcompare-debug (Länge)"
|
||||
|
||||
#: gcc.c:6013 gcc.c:6054
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: could not open compare-debug file %s"
|
||||
-msgstr "%s: Ausgabedatei »%s« konnte nicht geöffnet werden\n"
|
||||
+msgstr "%s: Vergleichs-Prüfdatei %s konnte nicht geöffnet werden"
|
||||
|
||||
#: gcc.c:6033 gcc.c:6070
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "%s: -fcompare-debug failure"
|
||||
-msgstr ""
|
||||
+msgstr "%s: Fehlschlag von -fcompare-debug"
|
||||
|
||||
#: gcc.c:6144
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "atexit failed"
|
||||
-msgstr "pex_init gescheitert"
|
||||
+msgstr "atexit gescheitert"
|
||||
|
||||
#: gcc.c:6323
|
||||
#, gcc-internal-format
|
||||
@@ -16226,9 +16226,9 @@ msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC"
|
||||
msgstr "Spezifikationsfehler: mehr als ein Argument für SYSROOT_HEADERS_SUFFIX_SPEC"
|
||||
|
||||
#: gcc.c:6456
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unrecognized option %<-%s%>"
|
||||
-msgstr "nicht erkannte Option »-%s«"
|
||||
+msgstr "nicht erkannte Option %<-%s%>"
|
||||
|
||||
#. The error status indicates that only one set of fixed
|
||||
#. headers should be built.
|
||||
@@ -16243,9 +16243,9 @@ msgid "no input files"
|
||||
msgstr "keine Eingabedateien"
|
||||
|
||||
#: gcc.c:6665
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "cannot specify -o with -c, -S or -E with multiple files"
|
||||
-msgstr "-o kann nicht mit -c oder -S mit mehreren Dateien angegeben werden"
|
||||
+msgstr "-o kann nicht mit -c, -S oder -E mit mehreren Dateien angegeben werden"
|
||||
|
||||
#: gcc.c:6695
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16255,22 +16255,22 @@ msgstr "%s: %s-Compiler ist auf diesem System nicht installiert"
|
||||
#: gcc.c:6719
|
||||
#, gcc-internal-format
|
||||
msgid "recompiling with -fcompare-debug"
|
||||
-msgstr ""
|
||||
+msgstr "Neuübersetzung mit -fcompare-debug"
|
||||
|
||||
#: gcc.c:6735
|
||||
#, gcc-internal-format
|
||||
msgid "during -fcompare-debug recompilation"
|
||||
-msgstr ""
|
||||
+msgstr "während Neuübersetzung mit -fcompare-debug"
|
||||
|
||||
#: gcc.c:6744
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "comparing final insns dumps"
|
||||
-msgstr "Vergleich ist immer %d"
|
||||
+msgstr "Vergleich der endgültigen Answeisungslisten"
|
||||
|
||||
#: gcc.c:6844
|
||||
#, gcc-internal-format
|
||||
msgid "-fuse-linker-plugin, but "
|
||||
-msgstr ""
|
||||
+msgstr "-fuse-linker-plugin, aber "
|
||||
|
||||
#: gcc.c:6873
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16283,39 +16283,39 @@ msgid "language %s not recognized"
|
||||
msgstr "Sprache %s nicht erkannt"
|
||||
|
||||
#: gcc.c:6985
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%s: %m"
|
||||
-msgstr "%s: %s"
|
||||
+msgstr "%s: %m"
|
||||
|
||||
#: gcc.c:7140
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "multilib spec %qs is invalid"
|
||||
-msgstr "Multilib-Spezifikation »%s« ist ungültig"
|
||||
+msgstr "Multilib-Spezifikation %qs ist ungültig"
|
||||
|
||||
#: gcc.c:7332
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "multilib exclusions %qs is invalid"
|
||||
-msgstr "Multilib-Ausschlüsse »%s« sind ungültig"
|
||||
+msgstr "Multilib-Ausschlüsse %qs sind ungültig"
|
||||
|
||||
#: gcc.c:7390 gcc.c:7531
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "multilib select %qs is invalid"
|
||||
-msgstr "Multilib-select »%s« ist ungültig"
|
||||
+msgstr "Multilib-select %qs ist ungültig"
|
||||
|
||||
#: gcc.c:7569
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "multilib exclusion %qs is invalid"
|
||||
-msgstr "Multilib-Ausschluss »%s« ist ungültig"
|
||||
+msgstr "Multilib-Ausschluss %qs ist ungültig"
|
||||
|
||||
#: gcc.c:7775
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "environment variable %qs not defined"
|
||||
-msgstr "Umgebungsvariable »%s« nicht definiert"
|
||||
+msgstr "Umgebungsvariable %qs nicht definiert"
|
||||
|
||||
#: gcc.c:7887 gcc.c:7892
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "invalid version number %qs"
|
||||
-msgstr "ungültige Versionsnummer »%s«"
|
||||
+msgstr "ungültige Versionsnummer %qs"
|
||||
|
||||
#: gcc.c:7935
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16328,34 +16328,34 @@ msgid "too many arguments to %%:version-compare"
|
||||
msgstr "zu viele Argumente für %%:version-compare"
|
||||
|
||||
#: gcc.c:7982
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "unknown operator %qs in %%:version-compare"
|
||||
-msgstr "unbekannter Operator »%s« in %%:version-compare"
|
||||
+msgstr "unbekannter Operator %qs in %%:version-compare"
|
||||
|
||||
#: gcc.c:8095
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "too many arguments to %%:compare-debug-dump-opt"
|
||||
msgstr "zu viele Argumente für %%:version-compare"
|
||||
|
||||
#: gcc.c:8163
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "too many arguments to %%:compare-debug-self-opt"
|
||||
-msgstr "zu viele Argumente für %%:version-compare"
|
||||
+msgstr "zu viele Argumente für %%:compare-debug-self-opt"
|
||||
|
||||
#: gcc.c:8198
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "too few arguments to %%:compare-debug-auxbase-opt"
|
||||
-msgstr "zu wenige Argumente für %%:version-compare"
|
||||
+msgstr "zu wenige Argumente für %%:compare-debug-auxbase-opt"
|
||||
|
||||
#: gcc.c:8201
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "too many arguments to %%:compare-debug-auxbase-opt"
|
||||
-msgstr "zu viele Argumente für %%:version-compare"
|
||||
+msgstr "zu viele Argumente für %%:compare-debug-auxbase-opt"
|
||||
|
||||
#: gcc.c:8208
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk"
|
||||
-msgstr ""
|
||||
+msgstr "Argument für %%:compare-debug-auxbase-opt endet nicht mit .pk"
|
||||
|
||||
#: gcse.c:5176
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16370,23 +16370,23 @@ msgstr "%s: %d Basis-Blöcke und %d Register"
|
||||
#: ggc-common.c:467 ggc-common.c:475 ggc-common.c:549 ggc-common.c:568
|
||||
#: ggc-page.c:2170 ggc-page.c:2201 ggc-page.c:2208 ggc-zone.c:2420
|
||||
#: ggc-zone.c:2431 ggc-zone.c:2435
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t write PCH file: %m"
|
||||
msgstr "PCH-Datei kann nicht geschrieben werden: %m"
|
||||
|
||||
#: ggc-common.c:561 config/i386/host-cygwin.c:55
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t get position in PCH file: %m"
|
||||
msgstr "Position in PCH-Datei kann nicht ermittelt werden: %m"
|
||||
|
||||
#: ggc-common.c:571
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t write padding to PCH file: %m"
|
||||
msgstr "Auffüllung für PCH-Datei kann nicht geschrieben werden: %m"
|
||||
|
||||
#: ggc-common.c:626 ggc-common.c:634 ggc-common.c:641 ggc-common.c:644
|
||||
#: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2298 ggc-zone.c:2454
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t read PCH file: %m"
|
||||
msgstr "PCH-Datei kann nicht gelesen werden: %m"
|
||||
|
||||
@@ -16401,24 +16401,24 @@ msgid "open /dev/zero: %m"
|
||||
msgstr "/dev/zero öffnen: %m"
|
||||
|
||||
#: ggc-page.c:2186 ggc-page.c:2192
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t write PCH file"
|
||||
msgstr "PCH-Datei kann nicht geschrieben werden"
|
||||
|
||||
#: ggc-zone.c:2417 ggc-zone.c:2428
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t seek PCH file: %m"
|
||||
msgstr "in PCH-Datei kann nicht positioniert werden: %m"
|
||||
|
||||
#: gimple.c:1071
|
||||
-#, fuzzy, gcc-internal-format, gfc-internal-format
|
||||
+#, gcc-internal-format, gfc-internal-format
|
||||
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
|
||||
-msgstr "Baumprüfung: Klasse %qs erwartet, haben %qs (%s) in %s, bei %s:%d"
|
||||
+msgstr "GIMPLE-Prüfung: %s(%s) erwartet, haben %s(%s) in %s, bei %s:%d"
|
||||
|
||||
#: gimplify.c:2430
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "using result of function returning %<void%>"
|
||||
-msgstr "keine return-Anweisung in nicht void zurückgebender Funktion"
|
||||
+msgstr "Ergebnis einer %<void%> zurückgebenden Funktion verwendet"
|
||||
|
||||
#: gimplify.c:4946
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
@@ -16436,44 +16436,44 @@ msgid "memory input %d is not directly addressable"
|
||||
msgstr "Speichereingabe %d ist nicht direkt adressierbar"
|
||||
|
||||
#: gimplify.c:5552
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "threadprivate variable %qE used in untied task"
|
||||
-msgstr "Threadprivate Variablen werden für dieses Ziel nicht unterstützt"
|
||||
+msgstr "threadprivate Variable %qE in unverknüpfter Task verwendet"
|
||||
|
||||
#: gimplify.c:5553 gimplify.c:5615
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "enclosing task"
|
||||
-msgstr "%Humgebende Parallele"
|
||||
+msgstr "umgebende Task"
|
||||
|
||||
#: gimplify.c:5612
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%qE not specified in enclosing parallel"
|
||||
-msgstr "in umgebender Parallele wurde %qs nicht angegeben"
|
||||
+msgstr "%qE in umgebender Parallele nicht angegeben"
|
||||
|
||||
#: gimplify.c:5617
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "enclosing parallel"
|
||||
-msgstr "%Humgebende Parallele"
|
||||
+msgstr "umgebende Parallele"
|
||||
|
||||
#: gimplify.c:5722
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "iteration variable %qE should be private"
|
||||
-msgstr "Schleifenvariable %qs sollte »private« sein"
|
||||
+msgstr "Schleifenvariable %qE sollte »private« sein"
|
||||
|
||||
#: gimplify.c:5736
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "iteration variable %qE should not be firstprivate"
|
||||
-msgstr "Schleifenvariable %qs sollte nicht »firstprivate« sein"
|
||||
+msgstr "Schleifenvariable %qE sollte nicht »firstprivate« sein"
|
||||
|
||||
#: gimplify.c:5739
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "iteration variable %qE should not be reduction"
|
||||
-msgstr "Schleifenvariable %qs sollte nicht in Reduktion sein"
|
||||
+msgstr "Schleifenvariable %qE sollte nicht Reduktion sein"
|
||||
|
||||
#: gimplify.c:5902
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "%s variable %qE is private in outer context"
|
||||
-msgstr "%s Variable %qs ist im äußeren Kontext »private«"
|
||||
+msgstr "%s Variable %qE ist im äußeren Kontext »private«"
|
||||
|
||||
#: gimplify.c:7495
|
||||
#, gcc-internal-format
|
||||
@@ -16481,14 +16481,14 @@ msgid "gimplification failed"
|
||||
msgstr "Gimplifikation gescheitert"
|
||||
|
||||
#: godump.c:1040
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "could not close Go dump file: %m"
|
||||
-msgstr "Abzugsdatei %qs konnte nicht geöffnet werden: %s"
|
||||
+msgstr "Go-Abzugsdatei konnte nicht geschlossen werden: %m"
|
||||
|
||||
#: godump.c:1052
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "could not open Go dump file %qs: %m"
|
||||
-msgstr "Abzugsdatei %qs konnte nicht geöffnet werden: %s"
|
||||
+msgstr "Go-Abzugsdatei %qs konnte nicht geöffnet werden: %m"
|
||||
|
||||
#: graph.c:411 toplev.c:1517 java/jcf-parse.c:1751 java/jcf-parse.c:1890
|
||||
#: objc/objc-act.c:477
|
||||
@@ -16503,39 +16503,39 @@ msgid "can%'t open %s for writing: %m"
|
||||
msgstr "%s kann nicht zum Schreiben geöffnet werden: %m"
|
||||
|
||||
#: graphite-poly.c:593
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "the file is not in OpenScop format"
|
||||
-msgstr "Feldbreite im printf-Format"
|
||||
+msgstr "die Datei ist nicht im OpenScop-Format"
|
||||
|
||||
#: graphite-poly.c:604
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "the language is not recognized"
|
||||
-msgstr "Sprache %s nicht erkannt"
|
||||
+msgstr "die Sprache wurde nicht erkannt"
|
||||
|
||||
#: graphite-poly.c:615
|
||||
#, gcc-internal-format
|
||||
msgid "parameters number in the scop file is different from the internal scop parameter number"
|
||||
-msgstr ""
|
||||
+msgstr "Anzahl der Parameter in der Scop-Datei unterscheidet sich von der internen Anzahl der Scop-Parameter"
|
||||
|
||||
#: graphite-poly.c:628
|
||||
#, gcc-internal-format
|
||||
msgid "number of statements in the OpenScop file does not match the graphite internal statements number"
|
||||
-msgstr ""
|
||||
+msgstr "Anzahl der Anweisungen in der OpenScop-Datei passt nicht zur internen Graphite-Anweisungsanzahl"
|
||||
|
||||
#: graphite-poly.c:719
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "can%'t open %s for reading: %m"
|
||||
-msgstr "%s kann nicht zum Schreiben geöffnet werden: %m"
|
||||
+msgstr "%s kann nicht zum Lesen geöffnet werden: %m"
|
||||
|
||||
#: graphite-poly.c:742
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
msgid "the graphite file read for scop %d does not contain a legal transform"
|
||||
-msgstr ""
|
||||
+msgstr "für Scop %d gelesene Graphite-Datei enthält keine gültige Umwandlung"
|
||||
|
||||
#: graphite.c:290
|
||||
-#, fuzzy, gcc-internal-format
|
||||
+#, gcc-internal-format
|
||||
msgid "Graphite loop optimizations cannot be used"
|
||||
-msgstr "Schleifenoptimierungen auf Baumebene einschalten"
|
||||
+msgstr "Graphite-Schleifenoptimierungen können nicht verwendet werden"
|
||||
|
||||
#. Fatal error here. We do not want to support compiling ltrans units with
|
||||
#. different version of compiler or different flags than the WPA unit, so
|
||||
@@ -16543,7 +16543,7 @@ msgstr "Schleifenoptimierungen auf Baumebene einschalten"
|
||||
#: ipa-reference.c:1198
|
||||
#, gcc-internal-format
|
||||
msgid "ipa reference summary is missing in ltrans unit"
|
||||
-msgstr ""
|
||||
+msgstr "IPA-Referenzzusammenfassung fehlt in ltrans-Einheit"
|
||||
|
||||
#: ira.c:1377 ira.c:1390 ira.c:1404
|
||||
#, gcc-internal-format, gfc-internal-format
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
From a5e7415bfbe41941768106dc5819bf3fff1b8435 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 15:01:50 +0000
|
||||
Subject: [PATCH] PR c++/48450
|
||||
* c-family/c-common.c (c_common_truthvalue_conversion): Don't ignore
|
||||
conversion from C++0x scoped enum.
|
||||
* cp/cvt.c (ocp_convert): Handle converting scoped enum to bool.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172191 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index c0c01b2..0be3996 100644
|
||||
--- a/gcc/c-family/c-common.c
|
||||
+++ b/gcc/c-family/c-common.c
|
||||
@@ -3938,16 +3938,25 @@ c_common_truthvalue_conversion (location_t location, tree expr)
|
||||
}
|
||||
|
||||
CASE_CONVERT:
|
||||
- /* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
|
||||
- since that affects how `default_conversion' will behave. */
|
||||
- if (TREE_CODE (TREE_TYPE (expr)) == REFERENCE_TYPE
|
||||
- || TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == REFERENCE_TYPE)
|
||||
- break;
|
||||
- /* If this is widening the argument, we can ignore it. */
|
||||
- if (TYPE_PRECISION (TREE_TYPE (expr))
|
||||
- >= TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (expr, 0))))
|
||||
- return c_common_truthvalue_conversion (location,
|
||||
- TREE_OPERAND (expr, 0));
|
||||
+ {
|
||||
+ tree totype = TREE_TYPE (expr);
|
||||
+ tree fromtype = TREE_TYPE (TREE_OPERAND (expr, 0));
|
||||
+
|
||||
+ /* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
|
||||
+ since that affects how `default_conversion' will behave. */
|
||||
+ if (TREE_CODE (totype) == REFERENCE_TYPE
|
||||
+ || TREE_CODE (fromtype) == REFERENCE_TYPE)
|
||||
+ break;
|
||||
+ /* Don't strip a conversion from C++0x scoped enum, since they
|
||||
+ don't implicitly convert to other types. */
|
||||
+ if (TREE_CODE (fromtype) == ENUMERAL_TYPE
|
||||
+ && ENUM_IS_SCOPED (fromtype))
|
||||
+ break;
|
||||
+ /* If this isn't narrowing the argument, we can ignore it. */
|
||||
+ if (TYPE_PRECISION (totype) >= TYPE_PRECISION (fromtype))
|
||||
+ return c_common_truthvalue_conversion (location,
|
||||
+ TREE_OPERAND (expr, 0));
|
||||
+ }
|
||||
break;
|
||||
|
||||
case MODIFY_EXPR:
|
||||
index 8ab0001..290b926 100644
|
||||
--- a/gcc/cp/cvt.c
|
||||
+++ b/gcc/cp/cvt.c
|
||||
@@ -727,7 +727,13 @@ ocp_convert (tree type, tree expr, int convtype, int flags)
|
||||
return error_mark_node;
|
||||
}
|
||||
if (code == BOOLEAN_TYPE)
|
||||
- return cp_truthvalue_conversion (e);
|
||||
+ {
|
||||
+ /* We can't implicitly convert a scoped enum to bool, so convert
|
||||
+ to the underlying type first. */
|
||||
+ if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC))
|
||||
+ e = convert (ENUM_UNDERLYING_TYPE (intype), e);
|
||||
+ return cp_truthvalue_conversion (e);
|
||||
+ }
|
||||
|
||||
converted = fold_if_not_in_template (convert_to_integer (type, e));
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..10e510b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/enum9.C
|
||||
@@ -0,0 +1,5 @@
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+enum class E { };
|
||||
+E f();
|
||||
+bool b2 = static_cast<bool>(f());
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
From 2f7a2d284d42cfbff01ee024af4cbaeaff766ee5 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 15:02:00 +0000
|
||||
Subject: [PATCH] * semantics.c (finish_decltype_type): Add complain parm.
|
||||
* cp-tree.h: Adjust.
|
||||
* parser.c (cp_parser_decltype): Adjust.
|
||||
* pt.c (tsubst): Adjust.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172192 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 4b49046..176a4b8 100644
|
||||
--- a/gcc/cp/cp-tree.h
|
||||
+++ b/gcc/cp/cp-tree.h
|
||||
@@ -5344,7 +5344,7 @@ extern tree baselink_for_fns (tree);
|
||||
extern void finish_static_assert (tree, tree, location_t,
|
||||
bool);
|
||||
extern tree describable_type (tree);
|
||||
-extern tree finish_decltype_type (tree, bool);
|
||||
+extern tree finish_decltype_type (tree, bool, tsubst_flags_t);
|
||||
extern tree finish_trait_expr (enum cp_trait_kind, tree, tree);
|
||||
extern tree build_lambda_expr (void);
|
||||
extern tree build_lambda_object (tree);
|
||||
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
|
||||
index 4260f6d..daba2fc 100644
|
||||
--- a/gcc/cp/parser.c
|
||||
+++ b/gcc/cp/parser.c
|
||||
@@ -10457,7 +10457,8 @@ cp_parser_decltype (cp_parser *parser)
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
- return finish_decltype_type (expr, id_expression_or_member_access_p);
|
||||
+ return finish_decltype_type (expr, id_expression_or_member_access_p,
|
||||
+ tf_warning_or_error);
|
||||
}
|
||||
|
||||
/* Special member functions [gram.special] */
|
||||
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
|
||||
index e716ca6..ed48203 100644
|
||||
--- a/gcc/cp/pt.c
|
||||
+++ b/gcc/cp/pt.c
|
||||
@@ -11025,7 +11025,7 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
|
||||
type = lambda_return_type (type);
|
||||
else
|
||||
type = finish_decltype_type
|
||||
- (type, DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t));
|
||||
+ (type, DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t), complain);
|
||||
return cp_build_qualified_type_real (type,
|
||||
cp_type_quals (t)
|
||||
| cp_type_quals (type),
|
||||
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
|
||||
index c88b4bb..3a85ddb 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -4785,7 +4785,8 @@ describable_type (tree expr)
|
||||
a full expression. */
|
||||
|
||||
tree
|
||||
-finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
|
||||
+finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
|
||||
+ tsubst_flags_t complain)
|
||||
{
|
||||
tree orig_expr = expr;
|
||||
tree type = NULL_TREE;
|
||||
@@ -4798,7 +4799,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
|
||||
|| (TREE_CODE (expr) == BIT_NOT_EXPR
|
||||
&& TYPE_P (TREE_OPERAND (expr, 0))))
|
||||
{
|
||||
- error ("argument to decltype must be an expression");
|
||||
+ if (complain & tf_error)
|
||||
+ error ("argument to decltype must be an expression");
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
@@ -4865,7 +4867,9 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
|
||||
if (OVL_CHAIN (expr)
|
||||
|| TREE_CODE (OVL_FUNCTION (expr)) == TEMPLATE_DECL)
|
||||
{
|
||||
- error ("%qE refers to a set of overloaded functions", orig_expr);
|
||||
+ if (complain & tf_error)
|
||||
+ error ("%qE refers to a set of overloaded functions",
|
||||
+ orig_expr);
|
||||
return error_mark_node;
|
||||
}
|
||||
else
|
||||
@@ -4917,7 +4921,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
|
||||
default:
|
||||
gcc_assert (TYPE_P (expr) || DECL_P (expr)
|
||||
|| TREE_CODE (expr) == SCOPE_REF);
|
||||
- error ("argument to decltype must be an expression");
|
||||
+ if (complain & tf_error)
|
||||
+ error ("argument to decltype must be an expression");
|
||||
return error_mark_node;
|
||||
}
|
||||
}
|
||||
@@ -5012,7 +5017,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
|
||||
|
||||
if (!type || type == unknown_type_node)
|
||||
{
|
||||
- error ("type of %qE is unknown", expr);
|
||||
+ if (complain & tf_error)
|
||||
+ error ("type of %qE is unknown", expr);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..0a95a96
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae7.C
|
||||
@@ -0,0 +1,20 @@
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ void f();
|
||||
+ void f(int);
|
||||
+ typedef int g;
|
||||
+};
|
||||
+
|
||||
+template <class T> decltype (T::f) f();
|
||||
+template <class T> void f();
|
||||
+
|
||||
+template <class T> decltype (T::g) g();
|
||||
+template <class T> void g();
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ f<A>();
|
||||
+ g<A>();
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
From 92860ca75ea3cbb7223913d121c60cc56c966794 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 15:02:08 +0000
|
||||
Subject: [PATCH] PR c++/48452
|
||||
* typeck.c (build_x_compound_expr_from_list): Return error_mark_node
|
||||
in SFINAE context.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172193 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 03aa49e..ec9233d 100644
|
||||
--- a/gcc/cp/typeck.c
|
||||
+++ b/gcc/cp/typeck.c
|
||||
@@ -5469,6 +5469,8 @@ build_x_compound_expr_from_list (tree list, expr_list_kind exp,
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
+ else
|
||||
+ return error_mark_node;
|
||||
|
||||
for (list = TREE_CHAIN (list); list; list = TREE_CHAIN (list))
|
||||
expr = build_x_compound_expr (expr, TREE_VALUE (list),
|
||||
new file mode 100644
|
||||
index 0000000..ede8b70
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae10.C
|
||||
@@ -0,0 +1,18 @@
|
||||
+// PR c++/48452
|
||||
+// { dg-options -std=c++0x }
|
||||
+namespace std {
|
||||
+ template <class T> T&& declval();
|
||||
+}
|
||||
+
|
||||
+template<class T, class... Args>
|
||||
+decltype(T(std::declval<Args>()...), char()) f(int);
|
||||
+
|
||||
+template<class, class...>
|
||||
+char (&f(...))[2];
|
||||
+
|
||||
+struct A { virtual ~A() = 0; };
|
||||
+struct B {};
|
||||
+
|
||||
+static_assert(sizeof(f<A, int, int>(0)) != 1, "Error"); // a
|
||||
+static_assert(sizeof(f<B, void, int>(0)) != 1, "Error"); // b
|
||||
+static_assert(sizeof(f<void, int, int>(0)) != 1, "Error"); // c
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
From 4215154488607abf1ee95f1d1f03cb66be4bd4d8 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 15:02:16 +0000
|
||||
Subject: [PATCH] PR c++/48468
|
||||
* except.c (build_noexcept_spec): Propagate error_mark_node.
|
||||
(finish_noexcept_expr): Likewise.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172194 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index a814d67..874f111 100644
|
||||
--- a/gcc/cp/except.c
|
||||
+++ b/gcc/cp/except.c
|
||||
@@ -1125,6 +1125,9 @@ finish_noexcept_expr (tree expr, tsubst_flags_t complain)
|
||||
{
|
||||
tree fn;
|
||||
|
||||
+ if (expr == error_mark_node)
|
||||
+ return error_mark_node;
|
||||
+
|
||||
if (processing_template_decl)
|
||||
return build_min (NOEXCEPT_EXPR, boolean_type_node, expr);
|
||||
|
||||
@@ -1212,6 +1215,8 @@ build_noexcept_spec (tree expr, int complain)
|
||||
return noexcept_true_spec;
|
||||
else if (expr == boolean_false_node)
|
||||
return noexcept_false_spec;
|
||||
+ else if (expr == error_mark_node)
|
||||
+ return error_mark_node;
|
||||
else
|
||||
{
|
||||
gcc_assert (processing_template_decl || expr == error_mark_node);
|
||||
index be6fa00..60015e7 100644
|
||||
--- a/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
|
||||
@@ -46,7 +46,9 @@ SA(!noexcept(f3(A())));
|
||||
template <class T1, class T2>
|
||||
void f (T1, T2) noexcept(noexcept(T1(), T2()));
|
||||
|
||||
-SA(noexcept(f3(1,1)));
|
||||
+struct B { };
|
||||
+
|
||||
+SA(noexcept(f3(1,B())));
|
||||
SA(!noexcept(f3(1,A())));
|
||||
SA(!noexcept(f3(A(),1)));
|
||||
SA(!noexcept(f3(A(),A())));
|
||||
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae11.C b/gcc/testsuite/g++.dg/cpp0x/sfinae11.C
|
||||
new file mode 100644
|
||||
index 0000000..a3ffc34
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae11.C
|
||||
@@ -0,0 +1,56 @@
|
||||
+// PR c++/48468
|
||||
+// { dg-options -std=c++0x }
|
||||
+// { dg-prune-output "note" }
|
||||
+
|
||||
+template<class T>
|
||||
+T&& declval() noexcept;
|
||||
+
|
||||
+template< class T >
|
||||
+inline void f1( T& x ) noexcept( noexcept( declval<T&>().foo() ) )
|
||||
+{
|
||||
+ x.foo();
|
||||
+}
|
||||
+
|
||||
+template< class T,
|
||||
+ bool Noexcept = noexcept( declval<T&>().foo() )
|
||||
+>
|
||||
+inline void f2( T& x ) noexcept( Noexcept )
|
||||
+{
|
||||
+ x.foo();
|
||||
+}
|
||||
+
|
||||
+// a common and trivial mistake
|
||||
+template< class T >
|
||||
+inline void f3( T& x ) noexcept( declval<T&>().foo() )
|
||||
+{
|
||||
+ x.foo();
|
||||
+}
|
||||
+
|
||||
+struct X
|
||||
+{
|
||||
+ void foo();
|
||||
+};
|
||||
+
|
||||
+struct Y
|
||||
+{
|
||||
+ void foo() noexcept;
|
||||
+};
|
||||
+
|
||||
+struct Z {};
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ X x; Y y; Z z;
|
||||
+
|
||||
+ static_assert( !noexcept( f1(x) ), "OK." );
|
||||
+ static_assert( !noexcept( f2(x) ), "OK." );
|
||||
+ // static_assert( !noexcept( f3(x) ), "shall be ill-formed(OK)." );
|
||||
+
|
||||
+ static_assert( noexcept( f1(y) ), "OK." );
|
||||
+ static_assert( noexcept( f2(y) ), "OK." );
|
||||
+ // static_assert( noexcept( f3(y) ), "shall be ill-formed(OK)." );
|
||||
+
|
||||
+ static_assert( noexcept( f1(z) ), "shall be ill-formed." ); // { dg-error "no match" }
|
||||
+ static_assert( noexcept( f2(z) ), "shall be ill-formed." ); // { dg-error "no match" }
|
||||
+ static_assert( !noexcept( f3(z) ), "shall be ill-formed." ); // { dg-error "no match" }
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,145 +0,0 @@
|
|||
From c9ec81bbd73666b97ab9049b759b5ab8d0e06681 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 15:02:28 +0000
|
||||
Subject: [PATCH] PR c++/48500
|
||||
* semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
|
||||
arguments even if we don't know the function.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172195 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 3a85ddb..e6bb1dc 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -7374,6 +7374,8 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
|
||||
class member access expression, including the result of the
|
||||
implicit transformation in the body of the non-static
|
||||
member function (9.3.1); */
|
||||
+ /* FIXME this restriction seems pointless since the standard dropped
|
||||
+ "potential constant expression". */
|
||||
if (is_this_parameter (t))
|
||||
{
|
||||
if (flags & tf_error)
|
||||
@@ -7389,51 +7391,63 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
|
||||
{
|
||||
tree fun = get_function_named_in_call (t);
|
||||
const int nargs = call_expr_nargs (t);
|
||||
- if (TREE_CODE (fun) != FUNCTION_DECL)
|
||||
- {
|
||||
- if (potential_constant_expression_1 (fun, rval, flags))
|
||||
- /* Might end up being a constant function pointer. */
|
||||
- return true;
|
||||
- if (flags & tf_error)
|
||||
- error ("%qE is not a function name", fun);
|
||||
- return false;
|
||||
- }
|
||||
- /* Skip initial arguments to base constructors. */
|
||||
- if (DECL_BASE_CONSTRUCTOR_P (fun))
|
||||
- i = num_artificial_parms_for (fun);
|
||||
+ i = 0;
|
||||
+
|
||||
+ if (is_overloaded_fn (fun))
|
||||
+ {
|
||||
+ if (TREE_CODE (fun) == FUNCTION_DECL)
|
||||
+ {
|
||||
+ if (builtin_valid_in_constant_expr_p (fun))
|
||||
+ return true;
|
||||
+ if (!DECL_DECLARED_CONSTEXPR_P (fun)
|
||||
+ && !morally_constexpr_builtin_function_p (fun))
|
||||
+ {
|
||||
+ if (flags & tf_error)
|
||||
+ error ("%qD is not %<constexpr%>", fun);
|
||||
+ return false;
|
||||
+ }
|
||||
+ /* A call to a non-static member function takes the address
|
||||
+ of the object as the first argument. But in a constant
|
||||
+ expression the address will be folded away, so look
|
||||
+ through it now. */
|
||||
+ if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fun)
|
||||
+ && !DECL_CONSTRUCTOR_P (fun))
|
||||
+ {
|
||||
+ tree x = get_nth_callarg (t, 0);
|
||||
+ if (is_this_parameter (x))
|
||||
+ /* OK. */;
|
||||
+ else if (!potential_constant_expression_1 (x, rval, flags))
|
||||
+ {
|
||||
+ if (flags & tf_error)
|
||||
+ error ("object argument is not a potential "
|
||||
+ "constant expression");
|
||||
+ return false;
|
||||
+ }
|
||||
+ i = 1;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ fun = get_first_fn (fun);
|
||||
+ /* Skip initial arguments to base constructors. */
|
||||
+ if (DECL_BASE_CONSTRUCTOR_P (fun))
|
||||
+ i = num_artificial_parms_for (fun);
|
||||
+ fun = DECL_ORIGIN (fun);
|
||||
+ }
|
||||
else
|
||||
- i = 0;
|
||||
- fun = DECL_ORIGIN (fun);
|
||||
- if (builtin_valid_in_constant_expr_p (fun))
|
||||
- return true;
|
||||
- if (!DECL_DECLARED_CONSTEXPR_P (fun)
|
||||
- && !morally_constexpr_builtin_function_p (fun))
|
||||
{
|
||||
- if (flags & tf_error)
|
||||
- error ("%qD is not %<constexpr%>", fun);
|
||||
- return false;
|
||||
+ if (potential_constant_expression_1 (fun, rval, flags))
|
||||
+ /* Might end up being a constant function pointer. */;
|
||||
+ else
|
||||
+ {
|
||||
+ if (flags & tf_error)
|
||||
+ error ("%qE is not a function name", fun);
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
for (; i < nargs; ++i)
|
||||
{
|
||||
tree x = get_nth_callarg (t, i);
|
||||
- /* A call to a non-static member function takes the
|
||||
- address of the object as the first argument.
|
||||
- But in a constant expression the address will be folded
|
||||
- away, so look through it now. */
|
||||
- if (i == 0 && DECL_NONSTATIC_MEMBER_P (fun)
|
||||
- && !DECL_CONSTRUCTOR_P (fun))
|
||||
- {
|
||||
- if (is_this_parameter (x))
|
||||
- /* OK. */;
|
||||
- else if (!potential_constant_expression_1 (x, rval, flags))
|
||||
- {
|
||||
- if (flags & tf_error)
|
||||
- error ("object argument is not a potential constant "
|
||||
- "expression");
|
||||
- return false;
|
||||
- }
|
||||
- }
|
||||
- else if (!potential_constant_expression_1 (x, rval, flags))
|
||||
+ if (!potential_constant_expression_1 (x, rval, flags))
|
||||
{
|
||||
if (flags & tf_error)
|
||||
error ("argument in position %qP is not a "
|
||||
new file mode 100644
|
||||
index 0000000..833318b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/call1.C
|
||||
@@ -0,0 +1,13 @@
|
||||
+// PR c++/48500
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+struct linked_ptr {
|
||||
+};
|
||||
+template <typename T> linked_ptr make_linked_ptr(T* ptr);
|
||||
+struct Concrete;
|
||||
+struct NewedClass {
|
||||
+ NewedClass(const Concrete& req){}
|
||||
+};
|
||||
+template<typename ArgT> void AddObjToChange(const ArgT& req) {
|
||||
+ linked_ptr p = make_linked_ptr(new NewedClass(req));
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From 6b290e64ee2bbe7974ee43ce49297ee9496f18d6 Mon Sep 17 00:00:00 2001
|
||||
From: kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 21:41:35 +0000
|
||||
Subject: [PATCH] 2011-04-08 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR target/47829
|
||||
gcc/config.gcc: disable unwind table generation for crtbegin/crtend
|
||||
on i386-*-freebsd.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172214 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 58f6787..1f13564 100644
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -1212,6 +1212,7 @@ x86_64-*-elf*)
|
||||
;;
|
||||
i[34567]86-*-freebsd*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
|
||||
+ tmake_file="${tmake_file} i386/t-crtstuff"
|
||||
;;
|
||||
x86_64-*-freebsd*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From fcc3e3a4ba3138d25c93ba5f996cac1660788bb9 Mon Sep 17 00:00:00 2001
|
||||
From: mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 8 Apr 2011 23:56:45 +0000
|
||||
Subject: [PATCH] PR testsuite/48506
|
||||
* gcc.dg/tree-ssa/ssa-ccp-17.c: Robustify against ports that
|
||||
default to fno-common.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172219 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 7d769ae..aece3c7 100644
|
||||
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
|
||||
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
|
||||
@@ -18,7 +18,7 @@ int bar(void)
|
||||
return ((struct Foo *)p)->i;
|
||||
}
|
||||
|
||||
-const struct Foo g;
|
||||
+extern const struct Foo g;
|
||||
|
||||
int foobar(void)
|
||||
{
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 8216e1c4c23928723f8e1583bf7e014813bb2c07 Mon Sep 17 00:00:00 2001
|
||||
From: baldrick <baldrick@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 9 Apr 2011 16:14:07 +0000
|
||||
Subject: [PATCH] Bail out rather than crashing in array_type_nelts if TYPE_MAX_VALUE is null.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172226 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 405b549..4d6ca36 100644
|
||||
--- a/gcc/tree.c
|
||||
+++ b/gcc/tree.c
|
||||
@@ -2453,6 +2453,10 @@ array_type_nelts (const_tree type)
|
||||
min = TYPE_MIN_VALUE (index_type);
|
||||
max = TYPE_MAX_VALUE (index_type);
|
||||
|
||||
+ /* TYPE_MAX_VALUE may not be set if the array has unknown length. */
|
||||
+ if (!max)
|
||||
+ return error_mark_node;
|
||||
+
|
||||
return (integer_zerop (min)
|
||||
? max
|
||||
: fold_build2 (MINUS_EXPR, TREE_TYPE (max), max, min));
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From f96c29b23a4f631242aae823f9735a33e8e1cf0a Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sat, 9 Apr 2011 19:04:11 +0000
|
||||
Subject: [PATCH] PR c++/48528
|
||||
* g++.dg/cpp0x/sfinae10.C: Remove abstract class.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172230 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ede8b70..72dbce0 100644
|
||||
--- a/gcc/testsuite/g++.dg/cpp0x/sfinae10.C
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae10.C
|
||||
@@ -10,9 +10,7 @@ decltype(T(std::declval<Args>()...), char()) f(int);
|
||||
template<class, class...>
|
||||
char (&f(...))[2];
|
||||
|
||||
-struct A { virtual ~A() = 0; };
|
||||
struct B {};
|
||||
|
||||
-static_assert(sizeof(f<A, int, int>(0)) != 1, "Error"); // a
|
||||
static_assert(sizeof(f<B, void, int>(0)) != 1, "Error"); // b
|
||||
static_assert(sizeof(f<void, int, int>(0)) != 1, "Error"); // c
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
From 7d736b8d0fb4f7892a5646ca3581b9ab01cb2971 Mon Sep 17 00:00:00 2001
|
||||
From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sun, 10 Apr 2011 16:19:41 +0000
|
||||
Subject: [PATCH] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR libstdc++/48465
|
||||
* configure.ac (libtool_VERSION): Bump library version to 6:16:0.
|
||||
* configure: Regenerate.
|
||||
* config/abi/pre/gnu.ver (GLIBCXX_3.4.16): Export missing symbols.
|
||||
* testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172240 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index fa52672..839f846 100644
|
||||
--- a/libstdc++-v3/config/abi/pre/gnu.ver
|
||||
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
|
||||
@@ -1264,6 +1264,14 @@ GLIBCXX_3.4.15 {
|
||||
|
||||
} GLIBCXX_3.4.14;
|
||||
|
||||
+GLIBCXX_3.4.16 {
|
||||
+
|
||||
+ # libstdc++/48465
|
||||
+ _ZNSs10_S_compareE[jmy][jmy];
|
||||
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareE[jmy][jmy];
|
||||
+
|
||||
+} GLIBCXX_3.4.15;
|
||||
+
|
||||
# Symbols in the support library (libsupc++) have their own tag.
|
||||
CXXABI_1.3 {
|
||||
|
||||
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
|
||||
index 4e1661a..c321e76 100755
|
||||
--- a/libstdc++-v3/configure
|
||||
+++ b/libstdc++-v3/configure
|
||||
@@ -2825,7 +2825,7 @@ ac_config_headers="$ac_config_headers config.h"
|
||||
### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
|
||||
|
||||
# For libtool versioning info, format is CURRENT:REVISION:AGE
|
||||
-libtool_VERSION=6:15:0
|
||||
+libtool_VERSION=6:16:0
|
||||
|
||||
|
||||
# Find the rest of the source tree framework.
|
||||
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
|
||||
index 128b9c5..ccf1230 100644
|
||||
--- a/libstdc++-v3/configure.ac
|
||||
+++ b/libstdc++-v3/configure.ac
|
||||
@@ -12,7 +12,7 @@ AC_CONFIG_HEADER(config.h)
|
||||
### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
|
||||
|
||||
# For libtool versioning info, format is CURRENT:REVISION:AGE
|
||||
-libtool_VERSION=6:15:0
|
||||
+libtool_VERSION=6:16:0
|
||||
AC_SUBST(libtool_VERSION)
|
||||
|
||||
# Find the rest of the source tree framework.
|
||||
diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc
|
||||
index a533311..ea100b6 100644
|
||||
--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc
|
||||
+++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc
|
||||
@@ -193,6 +193,7 @@ check_version(symbol& test, bool added)
|
||||
known_versions.push_back("GLIBCXX_3.4.13");
|
||||
known_versions.push_back("GLIBCXX_3.4.14");
|
||||
known_versions.push_back("GLIBCXX_3.4.15");
|
||||
+ known_versions.push_back("GLIBCXX_3.4.16");
|
||||
known_versions.push_back("GLIBCXX_LDBL_3.4");
|
||||
known_versions.push_back("GLIBCXX_LDBL_3.4.7");
|
||||
known_versions.push_back("GLIBCXX_LDBL_3.4.10");
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
From f6e12aec843ba3a839f49b60a5ca092f2fadd876 Mon Sep 17 00:00:00 2001
|
||||
From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sun, 10 Apr 2011 16:29:05 +0000
|
||||
Subject: [PATCH] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR libstdc++/48541
|
||||
* include/std/functional (_Base_manager::_M_get_pointer): Use
|
||||
addressof.
|
||||
* testsuite/20_util/function/48541.cc: New.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172242 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 6643b76..660e371 100644
|
||||
--- a/libstdc++-v3/include/std/functional
|
||||
+++ b/libstdc++-v3/include/std/functional
|
||||
@@ -1586,7 +1586,7 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
|
||||
_M_get_pointer(const _Any_data& __source)
|
||||
{
|
||||
const _Functor* __ptr =
|
||||
- __stored_locally? &__source._M_access<_Functor>()
|
||||
+ __stored_locally? std::__addressof(__source._M_access<_Functor>())
|
||||
/* have stored a pointer */ : __source._M_access<_Functor*>();
|
||||
return const_cast<_Functor*>(__ptr);
|
||||
}
|
||||
diff --git a/libstdc++-v3/testsuite/20_util/function/48451.cc b/libstdc++-v3/testsuite/20_util/function/48451.cc
|
||||
new file mode 100644
|
||||
index 0000000..f812367
|
||||
--- /dev/null
|
||||
+++ b/libstdc++-v3/testsuite/20_util/function/48451.cc
|
||||
@@ -0,0 +1,40 @@
|
||||
+// { dg-options "-std=gnu++0x" }
|
||||
+// { dg-do compile }
|
||||
+// Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+//
|
||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||
+// software; you can redistribute it and/or modify it under the
|
||||
+// terms of the GNU General Public License as published by the
|
||||
+// Free Software Foundation; either version 3, or (at your option)
|
||||
+// any later version.
|
||||
+//
|
||||
+// This library is distributed in the hope that it will be useful,
|
||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+// GNU General Public License for more details.
|
||||
+//
|
||||
+// You should have received a copy of the GNU General Public License along
|
||||
+// with this library; see the file COPYING3. If not see
|
||||
+// <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+// libstdc++/48451
|
||||
+
|
||||
+#include <functional>
|
||||
+
|
||||
+struct X {
|
||||
+ void operator () () const { }
|
||||
+ float operator & () const { return 1.2345; }
|
||||
+};
|
||||
+
|
||||
+void test01()
|
||||
+{
|
||||
+ X x;
|
||||
+ std::function<void()> f(x);
|
||||
+ f();
|
||||
+}
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ test01();
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
From 2173abe5d6f3f3157317caa470226e13827c3df9 Mon Sep 17 00:00:00 2001
|
||||
From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sun, 10 Apr 2011 16:34:34 +0000
|
||||
Subject: [PATCH] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
* testsuite/20_util/function/48451.cc: Rename to...
|
||||
* testsuite/20_util/function/48541.cc: This.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172243 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
deleted file mode 100644
|
||||
index f812367..0000000
|
||||
--- a/libstdc++-v3/testsuite/20_util/function/48451.cc
|
||||
+++ /dev/null
|
||||
@@ -1,40 +0,0 @@
|
||||
-// { dg-options "-std=gnu++0x" }
|
||||
-// { dg-do compile }
|
||||
-// Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
-//
|
||||
-// This file is part of the GNU ISO C++ Library. This library is free
|
||||
-// software; you can redistribute it and/or modify it under the
|
||||
-// terms of the GNU General Public License as published by the
|
||||
-// Free Software Foundation; either version 3, or (at your option)
|
||||
-// any later version.
|
||||
-//
|
||||
-// This library is distributed in the hope that it will be useful,
|
||||
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-// GNU General Public License for more details.
|
||||
-//
|
||||
-// You should have received a copy of the GNU General Public License along
|
||||
-// with this library; see the file COPYING3. If not see
|
||||
-// <http://www.gnu.org/licenses/>.
|
||||
-
|
||||
-// libstdc++/48451
|
||||
-
|
||||
-#include <functional>
|
||||
-
|
||||
-struct X {
|
||||
- void operator () () const { }
|
||||
- float operator & () const { return 1.2345; }
|
||||
-};
|
||||
-
|
||||
-void test01()
|
||||
-{
|
||||
- X x;
|
||||
- std::function<void()> f(x);
|
||||
- f();
|
||||
-}
|
||||
-
|
||||
-int main()
|
||||
-{
|
||||
- test01();
|
||||
- return 0;
|
||||
-}
|
||||
diff --git a/libstdc++-v3/testsuite/20_util/function/48541.cc b/libstdc++-v3/testsuite/20_util/function/48541.cc
|
||||
new file mode 100644
|
||||
index 0000000..f812367
|
||||
--- /dev/null
|
||||
+++ b/libstdc++-v3/testsuite/20_util/function/48541.cc
|
||||
@@ -0,0 +1,40 @@
|
||||
+// { dg-options "-std=gnu++0x" }
|
||||
+// { dg-do compile }
|
||||
+// Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+//
|
||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||
+// software; you can redistribute it and/or modify it under the
|
||||
+// terms of the GNU General Public License as published by the
|
||||
+// Free Software Foundation; either version 3, or (at your option)
|
||||
+// any later version.
|
||||
+//
|
||||
+// This library is distributed in the hope that it will be useful,
|
||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+// GNU General Public License for more details.
|
||||
+//
|
||||
+// You should have received a copy of the GNU General Public License along
|
||||
+// with this library; see the file COPYING3. If not see
|
||||
+// <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+// libstdc++/48451
|
||||
+
|
||||
+#include <functional>
|
||||
+
|
||||
+struct X {
|
||||
+ void operator () () const { }
|
||||
+ float operator & () const { return 1.2345; }
|
||||
+};
|
||||
+
|
||||
+void test01()
|
||||
+{
|
||||
+ X x;
|
||||
+ std::function<void()> f(x);
|
||||
+ f();
|
||||
+}
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ test01();
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
From 0344e764781d1c1b27f07f6f973b9797d8d6285c Mon Sep 17 00:00:00 2001
|
||||
From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 11 Apr 2011 10:42:23 +0000
|
||||
Subject: [PATCH] Backport from mainline:
|
||||
2011-04-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* config/alpha/osf5.h (MAX_OFILE_ALIGNMENT): Define.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172253 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 84a3c24..97a789f 100644
|
||||
--- a/gcc/config/alpha/osf5.h
|
||||
+++ b/gcc/config/alpha/osf5.h
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Definitions of target machine for GNU compiler, for DEC Alpha on
|
||||
Tru64 UNIX V5.1.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
|
||||
- 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
|
||||
+ 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
|
||||
|
||||
@@ -223,6 +223,10 @@ __enable_execute_stack (void *addr) \
|
||||
#define LD_INIT_SWITCH "-init"
|
||||
#define LD_FINI_SWITCH "-fini"
|
||||
|
||||
+/* From Tru64 UNIX Object File and Symbol Table Format Specification,
|
||||
+ 2.3.5 Alignment, p.19. */
|
||||
+#define MAX_OFILE_ALIGNMENT (64 * 1024 * BITS_PER_UNIT)
|
||||
+
|
||||
/* Select a format to encode pointers in exception handling data. CODE
|
||||
is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
|
||||
true if the symbol may be affected by dynamic relocations.
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
From ec818a73c8e43d77fefc29593ef84e69b0cac39e Mon Sep 17 00:00:00 2001
|
||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 11 Apr 2011 15:26:47 +0000
|
||||
Subject: [PATCH] * common.opt (Tbss=, Tdata=, Ttext=): New options.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172260 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index c2f2d6c..6056551 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -456,12 +456,21 @@ Driver Joined Separate
|
||||
Tbss
|
||||
Driver Separate
|
||||
|
||||
+Tbss=
|
||||
+Driver Joined
|
||||
+
|
||||
Tdata
|
||||
Driver Separate
|
||||
|
||||
+Tdata=
|
||||
+Driver Joined
|
||||
+
|
||||
Ttext
|
||||
Driver Separate
|
||||
|
||||
+Ttext=
|
||||
+Driver Joined
|
||||
+
|
||||
W
|
||||
Common RejectNegative Warning Alias(Wextra)
|
||||
This switch is deprecated; use -Wextra instead
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
From 514b92d849b08f3fb7a8194a822b0b8609776564 Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 00:20:18 +0000
|
||||
Subject: [PATCH] PR c++/48523
|
||||
* tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
|
||||
than cp_build_indirect_ref.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172293 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 56639ff..15ee741 100644
|
||||
--- a/gcc/cp/tree.c
|
||||
+++ b/gcc/cp/tree.c
|
||||
@@ -2421,7 +2421,7 @@ maybe_dummy_object (tree type, tree* binfop)
|
||||
else if (current != current_class_type
|
||||
&& context == nonlambda_method_basetype ())
|
||||
/* In a lambda, need to go through 'this' capture. */
|
||||
- decl = (cp_build_indirect_ref
|
||||
+ decl = (build_x_indirect_ref
|
||||
((lambda_expr_this_capture
|
||||
(CLASSTYPE_LAMBDA_EXPR (current_class_type))),
|
||||
RO_NULL, tf_warning_or_error));
|
||||
new file mode 100644
|
||||
index 0000000..29cd2a9
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C
|
||||
@@ -0,0 +1,13 @@
|
||||
+// PR c++/48523
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+template<typename>
|
||||
+struct X
|
||||
+{
|
||||
+ bool b;
|
||||
+
|
||||
+ void f()
|
||||
+ {
|
||||
+ [this]{ return b; };
|
||||
+ }
|
||||
+};
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From 373ffb66c10a25abb4c48a027fea4e6cf8c4cc5d Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 00:20:32 +0000
|
||||
Subject: [PATCH] PR c++/48534
|
||||
* cvt.c (ocp_convert): Use build_nop to convert to underlying type
|
||||
of scoped enum.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172294 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 290b926..ce4f985 100644
|
||||
--- a/gcc/cp/cvt.c
|
||||
+++ b/gcc/cp/cvt.c
|
||||
@@ -731,7 +731,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags)
|
||||
/* We can't implicitly convert a scoped enum to bool, so convert
|
||||
to the underlying type first. */
|
||||
if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC))
|
||||
- e = convert (ENUM_UNDERLYING_TYPE (intype), e);
|
||||
+ e = build_nop (ENUM_UNDERLYING_TYPE (intype), e);
|
||||
return cp_truthvalue_conversion (e);
|
||||
}
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..55a1ab4
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/enum10.C
|
||||
@@ -0,0 +1,9 @@
|
||||
+// PR c++/48534
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+enum class OpSE : bool;
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ return static_cast<bool>(OpSE());
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
From b58a503c5dbde32cbb9bd48ea16ff868d2023cf9 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 06:53:13 +0000
|
||||
Subject: [PATCH] PR c/48517
|
||||
* c-typeck.c (store_init_value): Set TREE_TYPE (decl) to
|
||||
qualified type.
|
||||
|
||||
* gcc.c-torture/compile/pr48517.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172300 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index a22bb73..fca369c 100644
|
||||
--- a/gcc/c-typeck.c
|
||||
+++ b/gcc/c-typeck.c
|
||||
@@ -5773,11 +5773,13 @@ store_init_value (location_t init_loc, tree decl, tree init, tree origtype)
|
||||
/* For int foo[] = (int [3]){1}; we need to set array size
|
||||
now since later on array initializer will be just the
|
||||
brace enclosed list of the compound literal. */
|
||||
+ tree etype = strip_array_types (TREE_TYPE (decl));
|
||||
type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
|
||||
- TREE_TYPE (decl) = type;
|
||||
TYPE_DOMAIN (type) = TYPE_DOMAIN (TREE_TYPE (cldecl));
|
||||
layout_type (type);
|
||||
layout_decl (cldecl, 0);
|
||||
+ TREE_TYPE (decl)
|
||||
+ = c_build_qualified_type (type, TYPE_QUALS (etype));
|
||||
}
|
||||
}
|
||||
}
|
||||
new file mode 100644
|
||||
index 0000000..30b3ecb
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48517.c
|
||||
@@ -0,0 +1,13 @@
|
||||
+/* PR c/48517 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "" } */
|
||||
+
|
||||
+void bar (const unsigned short *);
|
||||
+
|
||||
+void
|
||||
+foo (void)
|
||||
+{
|
||||
+ static const unsigned short array[] = (const unsigned short []) { 0x0D2B };
|
||||
+ const unsigned short *ptr = array;
|
||||
+ bar (ptr);
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,255 +0,0 @@
|
|||
From 872b1920a12548af70c3866daadc4a67d05416b1 Mon Sep 17 00:00:00 2001
|
||||
From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 09:05:41 +0000
|
||||
Subject: [PATCH] 2011-04-12 Allan McRae <allan@archlinux.org>
|
||||
|
||||
PR libstdc++/48566
|
||||
* testsuite/tr1/6_containers/unordered_map/requirements/
|
||||
iterator_null_neg.cc: Include <cstddef>.
|
||||
* testsuite/tr1/6_containers/unordered_set/requirements/
|
||||
iterator_null_neg.cc: Likewise.
|
||||
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Include
|
||||
<cstring>.
|
||||
* testsuite/util/testsuite_common_types.h: Include <limits>.
|
||||
* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
|
||||
Adjust dg-error line numbers.
|
||||
* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
|
||||
* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
|
||||
Likewise.
|
||||
* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
|
||||
Likewise.
|
||||
* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
|
||||
Likewise.
|
||||
* testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise.
|
||||
* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172304 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index a6bba98..245f18f 100644
|
||||
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
|
||||
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
|
||||
@@ -1,6 +1,6 @@
|
||||
// { dg-require-fileio "" }
|
||||
|
||||
-// Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <fstream>
|
||||
#include <cwchar>
|
||||
+#include <cstring>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
void test01()
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
|
||||
index 6b04cf8..68b64f0 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-do compile }
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -28,5 +28,5 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "deleted" "" { target *-*-* } 571 }
|
||||
+// { dg-error "deleted" "" { target *-*-* } 572 }
|
||||
// { dg-prune-output "include" }
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
|
||||
index cdd95fd..79182bb 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-do compile }
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -28,5 +28,5 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "deleted" "" { target *-*-* } 610 }
|
||||
+// { dg-error "deleted" "" { target *-*-* } 611 }
|
||||
// { dg-prune-output "include" }
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
|
||||
index 265878d..306fd4c 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-do compile }
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -29,5 +29,5 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "deleted" "" { target *-*-* } 571 }
|
||||
+// { dg-error "deleted" "" { target *-*-* } 572 }
|
||||
// { dg-prune-output "include" }
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
|
||||
index acb8006..56a41d1 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-do compile }
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -29,5 +29,5 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "deleted" "" { target *-*-* } 610 }
|
||||
+// { dg-error "deleted" "" { target *-*-* } 611 }
|
||||
// { dg-prune-output "include" }
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
|
||||
index b2f1ea4..4ee4e7f 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
|
||||
@@ -2,7 +2,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
@@ -27,7 +27,7 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "operator" "" { target *-*-* } 427 }
|
||||
// { dg-error "operator" "" { target *-*-* } 428 }
|
||||
// { dg-error "operator" "" { target *-*-* } 429 }
|
||||
+// { dg-error "operator" "" { target *-*-* } 430 }
|
||||
// { dg-excess-errors "In file included from" }
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
|
||||
index dd84c83..3e0a975 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
|
||||
@@ -2,7 +2,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
@@ -28,6 +28,6 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "operator" "" { target *-*-* } 384 }
|
||||
// { dg-error "operator" "" { target *-*-* } 385 }
|
||||
// { dg-error "operator" "" { target *-*-* } 386 }
|
||||
+// { dg-error "operator" "" { target *-*-* } 387 }
|
||||
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc b/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
|
||||
index 90b7555..5047be7 100644
|
||||
--- a/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
|
||||
@@ -2,7 +2,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
@@ -28,6 +28,6 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
-// { dg-error "operator" "" { target *-*-* } 362 }
|
||||
// { dg-error "operator" "" { target *-*-* } 363 }
|
||||
// { dg-error "operator" "" { target *-*-* } 364 }
|
||||
+// { dg-error "operator" "" { target *-*-* } 365 }
|
||||
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
|
||||
index 97b4b67..882ca36 100644
|
||||
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
|
||||
@@ -1,6 +1,6 @@
|
||||
// 2005-09-10 Paolo Carlini <pcarlini@suse.de>
|
||||
//
|
||||
-// Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2005, 2009, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
// libstdc++/23781
|
||||
#include <tr1/unordered_map>
|
||||
+#include <cstddef>
|
||||
|
||||
std::tr1::unordered_map<int, int>::iterator it1 = NULL; // { dg-error "conversion" }
|
||||
std::tr1::unordered_map<int, int>::const_iterator cit1 = NULL; // { dg-error "conversion" }
|
||||
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
|
||||
index bf2f4ff..a0747ec 100644
|
||||
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
|
||||
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
|
||||
@@ -1,6 +1,6 @@
|
||||
// 2005-09-10 Paolo Carlini <pcarlini@suse.de>
|
||||
//
|
||||
-// Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||
+// Copyright (C) 2005, 2009, 2011 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
// libstdc++/23781
|
||||
#include <tr1/unordered_set>
|
||||
+#include <cstddef>
|
||||
|
||||
std::tr1::unordered_set<int>::iterator it4 = NULL; // { dg-error "conversion" }
|
||||
std::tr1::unordered_set<int>::const_iterator cit4 = NULL; // { dg-error "conversion" }
|
||||
diff --git a/libstdc++-v3/testsuite/util/testsuite_common_types.h b/libstdc++-v3/testsuite/util/testsuite_common_types.h
|
||||
index f597da2..a4f59ac 100644
|
||||
--- a/libstdc++-v3/testsuite/util/testsuite_common_types.h
|
||||
+++ b/libstdc++-v3/testsuite/util/testsuite_common_types.h
|
||||
@@ -1,7 +1,7 @@
|
||||
// -*- C++ -*-
|
||||
// typelist for the C++ library testsuite.
|
||||
//
|
||||
-// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
|
||||
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
// Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <list>
|
||||
#include <deque>
|
||||
#include <string>
|
||||
+#include <limits>
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From a03834fec84b808ccef5c0abb5c35d069d7ad868 Mon Sep 17 00:00:00 2001
|
||||
From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 11:33:07 +0000
|
||||
Subject: [PATCH] * config/v850/v850.c (expand_prologue): Do not use the CALLT
|
||||
instruction for interrupt handlers if the target is the basic V850
|
||||
architecture.
|
||||
(expand_epilogue): Likewise.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172312 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 6d6ed78..d75f88c 100644
|
||||
--- a/gcc/config/v850/v850.c
|
||||
+++ b/gcc/config/v850/v850.c
|
||||
@@ -1686,7 +1686,7 @@ expand_prologue (void)
|
||||
/* Save/setup global registers for interrupt functions right now. */
|
||||
if (interrupt_handler)
|
||||
{
|
||||
- if (! TARGET_DISABLE_CALLT)
|
||||
+ if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
|
||||
emit_insn (gen_callt_save_interrupt ());
|
||||
else
|
||||
emit_insn (gen_save_interrupt ());
|
||||
@@ -1768,7 +1768,7 @@ expand_prologue (void)
|
||||
/* Special case interrupt functions that save all registers for a call. */
|
||||
if (interrupt_handler && ((1L << LINK_POINTER_REGNUM) & reg_saved) != 0)
|
||||
{
|
||||
- if (! TARGET_DISABLE_CALLT)
|
||||
+ if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
|
||||
emit_insn (gen_callt_save_all_interrupt ());
|
||||
else
|
||||
emit_insn (gen_save_all_interrupt ());
|
||||
@@ -2019,7 +2019,7 @@ expand_epilogue (void)
|
||||
/* And return or use reti for interrupt handlers. */
|
||||
if (interrupt_handler)
|
||||
{
|
||||
- if (! TARGET_DISABLE_CALLT)
|
||||
+ if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
|
||||
emit_insn (gen_callt_return_interrupt ());
|
||||
else
|
||||
emit_jump_insn (gen_return_interrupt ());
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
From 5b05a527f1368e4ca9f71a8ec8124a2c64661007 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 13:44:33 +0000
|
||||
Subject: [PATCH] PR rtl-optimization/48549
|
||||
* combine.c (propagate_for_debug): Also stop after BB_END of
|
||||
this_basic_block. Process LAST and just stop processing after it.
|
||||
(combine_instructions): If last_combined_insn has been deleted,
|
||||
set last_combined_insn to its PREV_INSN.
|
||||
|
||||
* g++.dg/opt/pr48549.C: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172319 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 5f179c6..d563999 100644
|
||||
--- a/gcc/combine.c
|
||||
+++ b/gcc/combine.c
|
||||
@@ -1178,8 +1178,13 @@ combine_instructions (rtx f, unsigned int nregs)
|
||||
next = 0;
|
||||
if (NONDEBUG_INSN_P (insn))
|
||||
{
|
||||
+ while (last_combined_insn
|
||||
+ && INSN_DELETED_P (last_combined_insn))
|
||||
+ last_combined_insn = PREV_INSN (last_combined_insn);
|
||||
if (last_combined_insn == NULL_RTX
|
||||
- || DF_INSN_LUID (last_combined_insn) < DF_INSN_LUID (insn))
|
||||
+ || BARRIER_P (last_combined_insn)
|
||||
+ || BLOCK_FOR_INSN (last_combined_insn) != this_basic_block
|
||||
+ || DF_INSN_LUID (last_combined_insn) <= DF_INSN_LUID (insn))
|
||||
last_combined_insn = insn;
|
||||
|
||||
/* See if we know about function return values before this
|
||||
@@ -2435,19 +2440,21 @@ propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data)
|
||||
}
|
||||
|
||||
/* Replace all the occurrences of DEST with SRC in DEBUG_INSNs between INSN
|
||||
- and LAST. */
|
||||
+ and LAST, not including INSN, but including LAST. Also stop at the end
|
||||
+ of THIS_BASIC_BLOCK. */
|
||||
|
||||
static void
|
||||
propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src)
|
||||
{
|
||||
- rtx next, loc;
|
||||
+ rtx next, loc, end = NEXT_INSN (BB_END (this_basic_block));
|
||||
|
||||
struct rtx_subst_pair p;
|
||||
p.to = src;
|
||||
p.adjusted = false;
|
||||
|
||||
next = NEXT_INSN (insn);
|
||||
- while (next != last)
|
||||
+ last = NEXT_INSN (last);
|
||||
+ while (next != last && next != end)
|
||||
{
|
||||
insn = next;
|
||||
next = NEXT_INSN (insn);
|
||||
new file mode 100644
|
||||
index 0000000..30799ee
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/opt/pr48549.C
|
||||
@@ -0,0 +1,63 @@
|
||||
+// PR rtl-optimization/48549
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-fcompare-debug -O2" }
|
||||
+
|
||||
+void
|
||||
+foo (void *from, void *to)
|
||||
+{
|
||||
+ long offset = reinterpret_cast <long>(to) - reinterpret_cast <long>(from);
|
||||
+ if (offset != static_cast <int>(offset))
|
||||
+ *(int *) 0xC0DE = 0;
|
||||
+ reinterpret_cast <int *>(from)[1] = offset;
|
||||
+}
|
||||
+struct A
|
||||
+{
|
||||
+ A () : a () {}
|
||||
+ A (void *x) : a (x) {}
|
||||
+ void *bar () { return a; }
|
||||
+ void *a;
|
||||
+};
|
||||
+struct C;
|
||||
+struct D;
|
||||
+struct E : public A
|
||||
+{
|
||||
+ C m1 (int);
|
||||
+ D m2 ();
|
||||
+ E () {}
|
||||
+ E (A x) : A (x) {}
|
||||
+};
|
||||
+struct C : public E
|
||||
+{
|
||||
+ C () {}
|
||||
+ C (void *x) : E (x) {}
|
||||
+};
|
||||
+struct D : public E
|
||||
+{
|
||||
+ D (void *x) : E (x) {}
|
||||
+};
|
||||
+C
|
||||
+E::m1 (int x)
|
||||
+{
|
||||
+ return (reinterpret_cast <char *>(bar ()) + x);
|
||||
+}
|
||||
+D
|
||||
+E::m2 ()
|
||||
+{
|
||||
+ return reinterpret_cast <char *>(bar ());
|
||||
+}
|
||||
+struct B
|
||||
+{
|
||||
+ E a;
|
||||
+ unsigned b : 16;
|
||||
+ unsigned c : 1;
|
||||
+};
|
||||
+void
|
||||
+baz (B *x)
|
||||
+{
|
||||
+ for (unsigned i = 0; i < 64; i++)
|
||||
+ {
|
||||
+ D d = x[i].a.m2 ();
|
||||
+ C c = x[i].a.m1 (x[i].c);
|
||||
+ foo (d.bar (), c.bar ());
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
From abf56c82ebcb8ba287fc69b8961af55b4541a130 Mon Sep 17 00:00:00 2001
|
||||
From: jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 12 Apr 2011 18:31:55 +0000
|
||||
Subject: [PATCH] 2011-04-12 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/48195
|
||||
* ipa-cp.c (ipcp_driver): Call ipa_check_create_node_params and
|
||||
ipa_check_create_edge_args.
|
||||
(ipcp_generate_summary): Do not call ipa_check_create_node_params and
|
||||
ipa_check_create_edge_args.
|
||||
* ipa-inline.c (inline_generate_summary): Do not call
|
||||
ipa_check_create_node_params and ipa_check_create_edge_args.
|
||||
* ipa-prop.c (ipa_analyze_node): Call ipa_check_create_node_params and
|
||||
ipa_check_create_edge_args.
|
||||
|
||||
* testsuite/gcc.dg/ipa/pr48195.c: New test.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172332 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index db0941c..aad5d78 100644
|
||||
--- a/gcc/ipa-cp.c
|
||||
+++ b/gcc/ipa-cp.c
|
||||
@@ -1516,6 +1516,8 @@ ipcp_driver (void)
|
||||
ipa_print_all_params (dump_file);
|
||||
ipa_print_all_jump_functions (dump_file);
|
||||
}
|
||||
+ ipa_check_create_node_params ();
|
||||
+ ipa_check_create_edge_args ();
|
||||
/* 2. Do the interprocedural propagation. */
|
||||
ipcp_iterate_stage ();
|
||||
/* 3. Insert the constants found to the functions. */
|
||||
@@ -1543,8 +1545,6 @@ ipcp_generate_summary (void)
|
||||
|
||||
if (dump_file)
|
||||
fprintf (dump_file, "\nIPA constant propagation start:\n");
|
||||
- ipa_check_create_node_params ();
|
||||
- ipa_check_create_edge_args ();
|
||||
ipa_register_cgraph_hooks ();
|
||||
|
||||
for (node = cgraph_nodes; node; node = node->next)
|
||||
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
|
||||
index 7ae5f96..b3c9215 100644
|
||||
--- a/gcc/ipa-inline.c
|
||||
+++ b/gcc/ipa-inline.c
|
||||
@@ -2091,11 +2091,7 @@ inline_generate_summary (void)
|
||||
cgraph_add_function_insertion_hook (&add_new_function, NULL);
|
||||
|
||||
if (flag_indirect_inlining)
|
||||
- {
|
||||
- ipa_register_cgraph_hooks ();
|
||||
- ipa_check_create_node_params ();
|
||||
- ipa_check_create_edge_args ();
|
||||
- }
|
||||
+ ipa_register_cgraph_hooks ();
|
||||
|
||||
for (node = cgraph_nodes; node; node = node->next)
|
||||
if (node->analyzed)
|
||||
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
|
||||
index 82599f1..589bc16 100644
|
||||
--- a/gcc/ipa-prop.c
|
||||
+++ b/gcc/ipa-prop.c
|
||||
@@ -1522,10 +1522,13 @@ ipa_analyze_params_uses (struct cgraph_node *node,
|
||||
void
|
||||
ipa_analyze_node (struct cgraph_node *node)
|
||||
{
|
||||
- struct ipa_node_params *info = IPA_NODE_REF (node);
|
||||
+ struct ipa_node_params *info;
|
||||
struct param_analysis_info *parms_info;
|
||||
int i, param_count;
|
||||
|
||||
+ ipa_check_create_node_params ();
|
||||
+ ipa_check_create_edge_args ();
|
||||
+ info = IPA_NODE_REF (node);
|
||||
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
|
||||
current_function_decl = node->decl;
|
||||
ipa_initialize_node_params (node);
|
||||
new file mode 100644
|
||||
index 0000000..1cf7a7f
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/ipa/pr48195.c
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* { dg-do link } */
|
||||
+/* { dg-options "-O2 -flto --param partial-inlining-entry-probability=101" } */
|
||||
+
|
||||
+extern void abort(void);
|
||||
+
|
||||
+int i;
|
||||
+
|
||||
+void __attribute__ ((constructor))
|
||||
+c2 ()
|
||||
+{
|
||||
+ if (i)
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+void __attribute__ ((destructor))
|
||||
+d1 ()
|
||||
+{
|
||||
+ if (i)
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+void main ()
|
||||
+{
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
From 811af0cad0121e89e3a3908dd71ca32187281e19 Mon Sep 17 00:00:00 2001
|
||||
From: ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 07:41:08 +0000
|
||||
Subject: [PATCH] Fix PR target/48090
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172363 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index b0f31f5..d9f8bb8 100644
|
||||
--- a/gcc/config/arm/arm.md
|
||||
+++ b/gcc/config/arm/arm.md
|
||||
@@ -3690,7 +3690,7 @@
|
||||
;; The constraints here are to prevent a *partial* overlap (where %Q0 == %R1).
|
||||
;; The first alternative allows the common case of a *full* overlap.
|
||||
(define_insn "*arm_negdi2"
|
||||
- [(set (match_operand:DI 0 "s_register_operand" "=&r,r")
|
||||
+ [(set (match_operand:DI 0 "s_register_operand" "=r,&r")
|
||||
(neg:DI (match_operand:DI 1 "s_register_operand" "0,r")))
|
||||
(clobber (reg:CC CC_REGNUM))]
|
||||
"TARGET_ARM"
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
From a236530cd5ac2466b1ca3b510b6bdb493c7b5342 Mon Sep 17 00:00:00 2001
|
||||
From: dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 15:19:40 +0000
|
||||
Subject: [PATCH] Fix PR c++/48574
|
||||
|
||||
gcc/cp/
|
||||
|
||||
* class.c (fixed_type_or_null): We cannot determine the dynamic
|
||||
type of a reference variable if its initializer is dependent.
|
||||
|
||||
gcc/testsuite/
|
||||
|
||||
* g++.dg/template/dependent-expr7.C: New test case.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172376 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 42066c3..d19610a 100644
|
||||
--- a/gcc/cp/class.c
|
||||
+++ b/gcc/cp/class.c
|
||||
@@ -5937,6 +5937,7 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
|
||||
itself. */
|
||||
if (TREE_CODE (instance) == VAR_DECL
|
||||
&& DECL_INITIAL (instance)
|
||||
+ && !type_dependent_expression_p (DECL_INITIAL (instance))
|
||||
&& !htab_find (ht, instance))
|
||||
{
|
||||
tree type;
|
||||
new file mode 100644
|
||||
index 0000000..b246820
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/template/dependent-expr7.C
|
||||
@@ -0,0 +1,22 @@
|
||||
+// Origin PR c++/48574
|
||||
+// { dg-do compile }
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ virtual void foo();
|
||||
+};
|
||||
+
|
||||
+template <typename T>
|
||||
+void
|
||||
+bar(T x)
|
||||
+{
|
||||
+ A &b = *x;
|
||||
+ b.foo ();
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo()
|
||||
+{
|
||||
+ A a;
|
||||
+ bar(&a);
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
From 235c1ad4230b29a189d4300841c4d8c3dd144388 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 15:47:40 +0000
|
||||
Subject: [PATCH] PR c++/48570
|
||||
* semantics.c (cxx_eval_array_reference): Handle reading from
|
||||
wchar_t, char16_t and char32_t STRING_CST.
|
||||
|
||||
* g++.dg/cpp0x/constexpr-wstring1.C: New test.
|
||||
* g++.dg/cpp0x/constexpr-wstring2.C: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172378 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index e6bb1dc..cf8d329 100644
|
||||
--- a/gcc/cp/semantics.c
|
||||
+++ b/gcc/cp/semantics.c
|
||||
@@ -6279,7 +6279,7 @@ cxx_eval_array_reference (const constexpr_call *call, tree t,
|
||||
non_constant_p);
|
||||
tree index, oldidx;
|
||||
HOST_WIDE_INT i;
|
||||
- unsigned len;
|
||||
+ unsigned len, elem_nchars = 1;
|
||||
if (*non_constant_p)
|
||||
return t;
|
||||
oldidx = TREE_OPERAND (t, 1);
|
||||
@@ -6291,9 +6291,14 @@ cxx_eval_array_reference (const constexpr_call *call, tree t,
|
||||
return t;
|
||||
else if (addr)
|
||||
return build4 (ARRAY_REF, TREE_TYPE (t), ary, index, NULL, NULL);
|
||||
- len = (TREE_CODE (ary) == CONSTRUCTOR
|
||||
- ? CONSTRUCTOR_NELTS (ary)
|
||||
- : (unsigned)TREE_STRING_LENGTH (ary));
|
||||
+ if (TREE_CODE (ary) == CONSTRUCTOR)
|
||||
+ len = CONSTRUCTOR_NELTS (ary);
|
||||
+ else
|
||||
+ {
|
||||
+ elem_nchars = (TYPE_PRECISION (TREE_TYPE (TREE_TYPE (ary)))
|
||||
+ / TYPE_PRECISION (char_type_node));
|
||||
+ len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars;
|
||||
+ }
|
||||
if (compare_tree_int (index, len) >= 0)
|
||||
{
|
||||
if (!allow_non_constant)
|
||||
@@ -6304,9 +6309,16 @@ cxx_eval_array_reference (const constexpr_call *call, tree t,
|
||||
i = tree_low_cst (index, 0);
|
||||
if (TREE_CODE (ary) == CONSTRUCTOR)
|
||||
return VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ary), i)->value;
|
||||
- else
|
||||
+ else if (elem_nchars == 1)
|
||||
return build_int_cst (cv_unqualified (TREE_TYPE (TREE_TYPE (ary))),
|
||||
TREE_STRING_POINTER (ary)[i]);
|
||||
+ else
|
||||
+ {
|
||||
+ tree type = cv_unqualified (TREE_TYPE (TREE_TYPE (ary)));
|
||||
+ return native_interpret_expr (type, (const unsigned char *)
|
||||
+ TREE_STRING_POINTER (ary)
|
||||
+ + i * elem_nchars, elem_nchars);
|
||||
+ }
|
||||
/* Don't VERIFY_CONSTANT here. */
|
||||
}
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..059977b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C
|
||||
@@ -0,0 +1,34 @@
|
||||
+// PR c++/48570
|
||||
+// { dg-do run }
|
||||
+// { dg-options "-std=c++0x" }
|
||||
+
|
||||
+extern "C" void abort ();
|
||||
+constexpr wchar_t foo (int i) { return L"0123"[i]; }
|
||||
+constexpr char16_t bar (int i) { return u"0123"[i]; }
|
||||
+constexpr char32_t baz (int i) { return U"0123"[i]; }
|
||||
+const wchar_t foo0 = foo (0);
|
||||
+const wchar_t foo1 = foo (1);
|
||||
+const wchar_t foo2 = foo (2);
|
||||
+const wchar_t foo3 = foo (3);
|
||||
+const wchar_t foo4 = foo (4);
|
||||
+const char16_t bar0 = bar (0);
|
||||
+const char16_t bar1 = bar (1);
|
||||
+const char16_t bar2 = bar (2);
|
||||
+const char16_t bar3 = bar (3);
|
||||
+const char16_t bar4 = bar (4);
|
||||
+const char32_t baz0 = baz (0);
|
||||
+const char32_t baz1 = baz (1);
|
||||
+const char32_t baz2 = baz (2);
|
||||
+const char32_t baz3 = baz (3);
|
||||
+const char32_t baz4 = baz (4);
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ if (foo0 != L'0' || foo1 != L'1' || foo2 != L'2' || foo3 != L'3' || foo4 != L'\0')
|
||||
+ abort ();
|
||||
+ if (bar0 != u'0' || bar1 != u'1' || bar2 != u'2' || bar3 != u'3' || bar4 != u'\0')
|
||||
+ abort ();
|
||||
+ if (baz0 != U'0' || baz1 != U'1' || baz2 != U'2' || baz3 != U'3' || baz4 != U'\0')
|
||||
+ abort ();
|
||||
+}
|
||||
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
|
||||
new file mode 100644
|
||||
index 0000000..4fc8980
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
|
||||
@@ -0,0 +1,7 @@
|
||||
+// PR c++/48570
|
||||
+// { dg-do compile }
|
||||
+// { dg-options -std=c++0x }
|
||||
+
|
||||
+constexpr wchar_t c1 = L"hi"[3]; // { dg-error "out of bound" }
|
||||
+constexpr char16_t c2 = u"hi"[3]; // { dg-error "out of bound" }
|
||||
+constexpr char32_t c3 = U"hi"[3]; // { dg-error "out of bound" }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
From f16c1783b4b2c93a42eb36b4f136ec46bd3ce834 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 15:52:17 +0000
|
||||
Subject: [PATCH] PR middle-end/48591
|
||||
* omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is
|
||||
NULL.
|
||||
(expand_omp_atomic_pipeline): Return false if cmpxchg is NULL.
|
||||
|
||||
* gcc.dg/gomp/pr48591.c: New test.
|
||||
|
||||
* testsuite/libgomp.c/pr48591.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172381 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index c3f2178..5b0fdff 100644
|
||||
--- a/gcc/omp-low.c
|
||||
+++ b/gcc/omp-low.c
|
||||
@@ -5005,6 +5005,8 @@ expand_omp_atomic_fetch_op (basic_block load_bb,
|
||||
return false;
|
||||
|
||||
decl = built_in_decls[base + index + 1];
|
||||
+ if (decl == NULL_TREE)
|
||||
+ return false;
|
||||
itype = TREE_TYPE (TREE_TYPE (decl));
|
||||
|
||||
if (direct_optab_handler (optab, TYPE_MODE (itype)) == CODE_FOR_nothing)
|
||||
@@ -5056,6 +5058,8 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
|
||||
edge e;
|
||||
|
||||
cmpxchg = built_in_decls[BUILT_IN_VAL_COMPARE_AND_SWAP_N + index + 1];
|
||||
+ if (cmpxchg == NULL_TREE)
|
||||
+ return false;
|
||||
type = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (addr)));
|
||||
itype = TREE_TYPE (TREE_TYPE (cmpxchg));
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..e6cb106
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/gomp/pr48591.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* PR middle-end/48591 */
|
||||
+/* { dg-do compile { target i?86-*-* x86_64-*-* ia64-*-* } } */
|
||||
+/* { dg-options "-fopenmp" } */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ __float128 f = 0.0;
|
||||
+ int i;
|
||||
+ #pragma omp parallel for reduction(+:f)
|
||||
+ for (i = 0; i < 128; i++)
|
||||
+ f += 0.5Q;
|
||||
+ if (f != 64.0Q)
|
||||
+ abort ();
|
||||
+ #pragma omp atomic
|
||||
+ f += 8.5Q;
|
||||
+ if (f != 72.5Q)
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
new file mode 100644
|
||||
index 0000000..18dfd7f
|
||||
--- /dev/null
|
||||
+++ b/libgomp/testsuite/libgomp.c/pr48591.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* PR middle-end/48591 */
|
||||
+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* } } */
|
||||
+/* { dg-options "-fopenmp" } */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ __float128 f = 0.0;
|
||||
+ int i;
|
||||
+ #pragma omp parallel for reduction(+:f)
|
||||
+ for (i = 0; i < 128; i++)
|
||||
+ f += 0.5Q;
|
||||
+ if (f != 64.0Q)
|
||||
+ abort ();
|
||||
+ #pragma omp atomic
|
||||
+ f += 8.5Q;
|
||||
+ if (f != 72.5Q)
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,182 +0,0 @@
|
|||
From 348c7b9400ed5fe0d8c3c077f8223ca359bed036 Mon Sep 17 00:00:00 2001
|
||||
From: pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 18:38:17 +0000
|
||||
Subject: [PATCH] 2011-04-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/48360
|
||||
PR fortran/48456
|
||||
* trans-array.c (get_std_lbound): For derived type variables
|
||||
return array valued component lbound.
|
||||
|
||||
2011-04-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/48360
|
||||
PR fortran/48456
|
||||
* gfortran.dg/realloc_on_assign_6.f03: New test.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172390 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index ac08c42..3d4a52a 100644
|
||||
--- a/gcc/fortran/trans-array.c
|
||||
+++ b/gcc/fortran/trans-array.c
|
||||
@@ -6707,6 +6707,8 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size)
|
||||
tree stride;
|
||||
tree cond, cond1, cond3, cond4;
|
||||
tree tmp;
|
||||
+ gfc_ref *ref;
|
||||
+
|
||||
if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))
|
||||
{
|
||||
tmp = gfc_rank_cst[dim];
|
||||
@@ -6740,6 +6742,14 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size)
|
||||
else if (expr->expr_type == EXPR_VARIABLE)
|
||||
{
|
||||
tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
|
||||
+ for (ref = expr->ref; ref; ref = ref->next)
|
||||
+ {
|
||||
+ if (ref->type == REF_COMPONENT
|
||||
+ && ref->u.c.component->as
|
||||
+ && ref->next
|
||||
+ && ref->next->u.ar.type == AR_FULL)
|
||||
+ tmp = TREE_TYPE (ref->u.c.component->backend_decl);
|
||||
+ }
|
||||
return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
|
||||
}
|
||||
else if (expr->expr_type == EXPR_FUNCTION)
|
||||
new file mode 100644
|
||||
index 0000000..7c170eb
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
|
||||
@@ -0,0 +1,129 @@
|
||||
+! { dg-do compile }
|
||||
+! Test the fix for PR48456 and PR48360 in which the backend
|
||||
+! declarations for components were not located in the automatic
|
||||
+! reallocation on assignments, thereby causing ICEs.
|
||||
+!
|
||||
+! Contributed by Keith Refson <krefson@googlemail.com>
|
||||
+! and Douglas Foulds <mixnmaster@gmail.com>
|
||||
+!
|
||||
+! This is PR48360
|
||||
+
|
||||
+module m
|
||||
+ type mm
|
||||
+ real, dimension(3,3) :: h0
|
||||
+ end type mm
|
||||
+end module m
|
||||
+
|
||||
+module gf33
|
||||
+
|
||||
+ real, allocatable, save, dimension(:,:) :: hmat
|
||||
+
|
||||
+contains
|
||||
+ subroutine assignit
|
||||
+
|
||||
+ use m
|
||||
+ implicit none
|
||||
+
|
||||
+ type(mm) :: mmv
|
||||
+
|
||||
+ hmat = mmv%h0
|
||||
+ end subroutine assignit
|
||||
+end module gf33
|
||||
+
|
||||
+! This is PR48456
|
||||
+
|
||||
+module custom_type
|
||||
+
|
||||
+integer, parameter :: dp = kind(0.d0)
|
||||
+
|
||||
+type :: my_type_sub
|
||||
+ real(dp), dimension(5) :: some_vector
|
||||
+end type my_type_sub
|
||||
+
|
||||
+type :: my_type
|
||||
+ type(my_type_sub) :: some_element
|
||||
+end type my_type
|
||||
+
|
||||
+end module custom_type
|
||||
+
|
||||
+module custom_interfaces
|
||||
+
|
||||
+interface
|
||||
+ subroutine store_data_subroutine(vec_size)
|
||||
+ implicit none
|
||||
+ integer, intent(in) :: vec_size
|
||||
+ integer :: k
|
||||
+ end subroutine store_data_subroutine
|
||||
+end interface
|
||||
+
|
||||
+end module custom_interfaces
|
||||
+
|
||||
+module store_data_test
|
||||
+
|
||||
+use custom_type
|
||||
+
|
||||
+save
|
||||
+type(my_type), dimension(:), allocatable :: some_type_to_save
|
||||
+
|
||||
+end module store_data_test
|
||||
+
|
||||
+program test
|
||||
+
|
||||
+use store_data_test
|
||||
+
|
||||
+integer :: vec_size
|
||||
+
|
||||
+vec_size = 2
|
||||
+
|
||||
+call store_data_subroutine(vec_size)
|
||||
+call print_after_transfer()
|
||||
+
|
||||
+end program test
|
||||
+
|
||||
+subroutine store_data_subroutine(vec_size)
|
||||
+
|
||||
+use custom_type
|
||||
+use store_data_test
|
||||
+
|
||||
+implicit none
|
||||
+
|
||||
+integer, intent(in) :: vec_size
|
||||
+integer :: k
|
||||
+
|
||||
+allocate(some_type_to_save(vec_size))
|
||||
+
|
||||
+do k = 1,vec_size
|
||||
+
|
||||
+ some_type_to_save(k)%some_element%some_vector(1) = 1.0_dp
|
||||
+ some_type_to_save(k)%some_element%some_vector(2) = 2.0_dp
|
||||
+ some_type_to_save(k)%some_element%some_vector(3) = 3.0_dp
|
||||
+ some_type_to_save(k)%some_element%some_vector(4) = 4.0_dp
|
||||
+ some_type_to_save(k)%some_element%some_vector(5) = 5.0_dp
|
||||
+
|
||||
+end do
|
||||
+
|
||||
+end subroutine store_data_subroutine
|
||||
+
|
||||
+subroutine print_after_transfer()
|
||||
+
|
||||
+use custom_type
|
||||
+use store_data_test
|
||||
+
|
||||
+implicit none
|
||||
+
|
||||
+real(dp), dimension(:), allocatable :: C_vec
|
||||
+integer :: k
|
||||
+
|
||||
+allocate(C_vec(5))
|
||||
+
|
||||
+do k = 1,size(some_type_to_save)
|
||||
+
|
||||
+ C_vec = some_type_to_save(k)%some_element%some_vector
|
||||
+ print *, "C_vec", C_vec
|
||||
+
|
||||
+end do
|
||||
+
|
||||
+end subroutine print_after_transfer
|
||||
+! { dg-final { cleanup-modules "m gf33" } }
|
||||
+! { dg-final { cleanup-modules "custom_type custom_interfaces" } }
|
||||
+! { dg-final { cleanup-modules "store_data_test" } }
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
From b711bf8d9e6f7b717bb87fa7a3514692efdecfaf Mon Sep 17 00:00:00 2001
|
||||
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 20:51:23 +0000
|
||||
Subject: [PATCH] PR c++/48594
|
||||
* decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
|
||||
or pointer to (non-member) function.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172395 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index f62f913..1217e42 100644
|
||||
--- a/gcc/cp/decl2.c
|
||||
+++ b/gcc/cp/decl2.c
|
||||
@@ -4079,10 +4079,13 @@ build_offset_ref_call_from_tree (tree fn, VEC(tree,gc) **args)
|
||||
parameter. That must be done before the FN is transformed
|
||||
because we depend on the form of FN. */
|
||||
make_args_non_dependent (*args);
|
||||
- object = build_non_dependent_expr (object);
|
||||
- if (TREE_CODE (fn) == DOTSTAR_EXPR)
|
||||
- object = cp_build_addr_expr (object, tf_warning_or_error);
|
||||
- VEC_safe_insert (tree, gc, *args, 0, object);
|
||||
+ if (TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE)
|
||||
+ {
|
||||
+ object = build_non_dependent_expr (object);
|
||||
+ if (TREE_CODE (fn) == DOTSTAR_EXPR)
|
||||
+ object = cp_build_addr_expr (object, tf_warning_or_error);
|
||||
+ VEC_safe_insert (tree, gc, *args, 0, object);
|
||||
+ }
|
||||
/* Now that the arguments are done, transform FN. */
|
||||
fn = build_non_dependent_expr (fn);
|
||||
}
|
||||
@@ -4101,7 +4104,10 @@ build_offset_ref_call_from_tree (tree fn, VEC(tree,gc) **args)
|
||||
VEC_safe_insert (tree, gc, *args, 0, object_addr);
|
||||
}
|
||||
|
||||
- expr = cp_build_function_call_vec (fn, args, tf_warning_or_error);
|
||||
+ if (CLASS_TYPE_P (TREE_TYPE (fn)))
|
||||
+ expr = build_op_call (fn, args, tf_warning_or_error);
|
||||
+ else
|
||||
+ expr = cp_build_function_call_vec (fn, args, tf_warning_or_error);
|
||||
if (processing_template_decl && expr != error_mark_node)
|
||||
expr = build_min_non_dep_call_vec (expr, orig_fn, orig_args);
|
||||
|
||||
new file mode 100644
|
||||
index 0000000..8d6b77a
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/template/operator11.C
|
||||
@@ -0,0 +1,25 @@
|
||||
+// PR c++/48594
|
||||
+// Test for uses of (X->*Y)() that don't actually involve a
|
||||
+// pointer to member function.
|
||||
+
|
||||
+struct A { } a;
|
||||
+struct B { } b;
|
||||
+struct C * cp;
|
||||
+
|
||||
+struct Func { void operator()(); };
|
||||
+Func operator->* (A, int);
|
||||
+
|
||||
+typedef void (*pfn)();
|
||||
+pfn operator->* (B, int);
|
||||
+
|
||||
+pfn C::*cpfn;
|
||||
+Func C::*cfunc;
|
||||
+
|
||||
+template <class T>
|
||||
+void f()
|
||||
+{
|
||||
+ (a->*1)();
|
||||
+ (b->*1)();
|
||||
+ (cp->*cpfn)();
|
||||
+ (cp->*cfunc)();
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -1,138 +0,0 @@
|
|||
From ede3baf6fc1fe4972344051051daff1043f90ce3 Mon Sep 17 00:00:00 2001
|
||||
From: danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed, 13 Apr 2011 22:36:59 +0000
|
||||
Subject: [PATCH] Backport from mainline:
|
||||
2011-04-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR target/48366
|
||||
* config/pa/pa.c (hppa_register_move_cost): Increase to 18 cost of
|
||||
move from floating point to shift amount register .
|
||||
(emit_move_sequence): Remove secondary reload support for floating
|
||||
point to shift amount amount register copies.
|
||||
(pa_secondary_reload): Return GENERAL_REGS for floating point/shift
|
||||
amount register copies.
|
||||
* config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): For shift amount
|
||||
register, return false if mode isn't a scalar integer mode.
|
||||
* config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Likewise.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172400 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 98267b0..8a691c7 100644
|
||||
--- a/gcc/config/pa/pa.c
|
||||
+++ b/gcc/config/pa/pa.c
|
||||
@@ -1467,6 +1467,8 @@ hppa_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
|
||||
{
|
||||
if (from == SHIFT_REGS)
|
||||
return 0x100;
|
||||
+ else if (to == SHIFT_REGS && FP_REG_CLASS_P (from))
|
||||
+ return 18;
|
||||
else if ((FP_REG_CLASS_P (from) && ! FP_REG_CLASS_P (to))
|
||||
|| (FP_REG_CLASS_P (to) && ! FP_REG_CLASS_P (from)))
|
||||
return 16;
|
||||
@@ -1810,15 +1812,12 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
|
||||
return 1;
|
||||
}
|
||||
/* Handle secondary reloads for SAR. These occur when trying to load
|
||||
- the SAR from memory, FP register, or with a constant. */
|
||||
+ the SAR from memory or a constant. */
|
||||
else if (scratch_reg
|
||||
&& GET_CODE (operand0) == REG
|
||||
&& REGNO (operand0) < FIRST_PSEUDO_REGISTER
|
||||
&& REGNO_REG_CLASS (REGNO (operand0)) == SHIFT_REGS
|
||||
- && (GET_CODE (operand1) == MEM
|
||||
- || GET_CODE (operand1) == CONST_INT
|
||||
- || (GET_CODE (operand1) == REG
|
||||
- && FP_REG_CLASS_P (REGNO_REG_CLASS (REGNO (operand1))))))
|
||||
+ && (GET_CODE (operand1) == MEM || GET_CODE (operand1) == CONST_INT))
|
||||
{
|
||||
/* D might not fit in 14 bits either; for such cases load D into
|
||||
scratch reg. */
|
||||
@@ -5883,6 +5882,10 @@ output_arg_descriptor (rtx call_insn)
|
||||
fputc ('\n', asm_out_file);
|
||||
}
|
||||
|
||||
+/* Inform reload about cases where moving X with a mode MODE to a register in
|
||||
+ RCLASS requires an extra scratch or immediate register. Return the class
|
||||
+ needed for the immediate register. */
|
||||
+
|
||||
static reg_class_t
|
||||
pa_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
|
||||
enum machine_mode mode, secondary_reload_info *sri)
|
||||
@@ -5985,24 +5988,29 @@ pa_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
|
||||
return NO_REGS;
|
||||
}
|
||||
|
||||
- /* We need a secondary register (GPR) for copies between the SAR
|
||||
- and anything other than a general register. */
|
||||
- if (rclass == SHIFT_REGS && (regno <= 0 || regno >= 32))
|
||||
+ /* A SAR<->FP register copy requires an intermediate general register
|
||||
+ and secondary memory. We need a secondary reload with a general
|
||||
+ scratch register for spills. */
|
||||
+ if (rclass == SHIFT_REGS)
|
||||
{
|
||||
- sri->icode = (in_p
|
||||
- ? direct_optab_handler (reload_in_optab, mode)
|
||||
- : direct_optab_handler (reload_out_optab, mode));
|
||||
- return NO_REGS;
|
||||
+ /* Handle spill. */
|
||||
+ if (regno >= FIRST_PSEUDO_REGISTER || regno < 0)
|
||||
+ {
|
||||
+ sri->icode = (in_p
|
||||
+ ? direct_optab_handler (reload_in_optab, mode)
|
||||
+ : direct_optab_handler (reload_out_optab, mode));
|
||||
+ return NO_REGS;
|
||||
+ }
|
||||
+
|
||||
+ /* Handle FP copy. */
|
||||
+ if (FP_REG_CLASS_P (REGNO_REG_CLASS (regno)))
|
||||
+ return GENERAL_REGS;
|
||||
}
|
||||
|
||||
- /* A SAR<->FP register copy requires a secondary register (GPR) as
|
||||
- well as secondary memory. */
|
||||
if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER
|
||||
- && (REGNO_REG_CLASS (regno) == SHIFT_REGS
|
||||
- && FP_REG_CLASS_P (rclass)))
|
||||
- sri->icode = (in_p
|
||||
- ? direct_optab_handler (reload_in_optab, mode)
|
||||
- : direct_optab_handler (reload_out_optab, mode));
|
||||
+ && REGNO_REG_CLASS (regno) == SHIFT_REGS
|
||||
+ && FP_REG_CLASS_P (rclass))
|
||||
+ return GENERAL_REGS;
|
||||
|
||||
return NO_REGS;
|
||||
}
|
||||
diff --git a/gcc/config/pa/pa32-regs.h b/gcc/config/pa/pa32-regs.h
|
||||
index 7e8e05d..9a1c067 100644
|
||||
--- a/gcc/config/pa/pa32-regs.h
|
||||
+++ b/gcc/config/pa/pa32-regs.h
|
||||
@@ -209,6 +209,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
registers. */
|
||||
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
|
||||
((REGNO) == 0 ? (MODE) == CCmode || (MODE) == CCFPmode \
|
||||
+ : (REGNO) == 88 ? SCALAR_INT_MODE_P (MODE) \
|
||||
: !TARGET_PA_11 && FP_REGNO_P (REGNO) \
|
||||
? (VALID_FP_MODE_P (MODE) \
|
||||
&& (GET_MODE_SIZE (MODE) <= 8 \
|
||||
diff --git a/gcc/config/pa/pa64-regs.h b/gcc/config/pa/pa64-regs.h
|
||||
index 23dc778..313577b 100644
|
||||
--- a/gcc/config/pa/pa64-regs.h
|
||||
+++ b/gcc/config/pa/pa64-regs.h
|
||||
@@ -149,10 +149,11 @@ along with GCC; see the file COPYING3. If not see
|
||||
|
||||
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
|
||||
On the HP-PA, the cpu registers can hold any mode. We
|
||||
- force this to be an even register is it cannot hold the full mode. */
|
||||
+ force this to be an even register if it cannot hold the full mode. */
|
||||
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
|
||||
((REGNO) == 0 \
|
||||
? (MODE) == CCmode || (MODE) == CCFPmode \
|
||||
+ : (REGNO) == 60 ? SCALAR_INT_MODE_P (MODE) \
|
||||
/* Make wide modes be in aligned registers. */ \
|
||||
: FP_REGNO_P (REGNO) \
|
||||
? (VALID_FP_MODE_P (MODE) \
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,194 +0,0 @@
|
|||
From cad5b42c7c890058535eb7bc8c3766f03d428f59 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 15 Apr 2011 10:21:00 +0000
|
||||
Subject: [PATCH] PR target/48605
|
||||
* config/i386/sse.md (avx_insertps, sse4_1_insertps): If operands[2]
|
||||
is a MEM, offset it as needed based on top 2 bits in operands[3],
|
||||
change MEM mode to SFmode and mask those 2 bits away from operands[3].
|
||||
|
||||
* gcc.target/i386/sse4_1-insertps-3.c: New test.
|
||||
* gcc.target/i386/sse4_1-insertps-4.c: New test.
|
||||
* gcc.target/i386/avx-insertps-3.c: New test.
|
||||
* gcc.target/i386/avx-insertps-4.c: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172483 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 578ad82..6db9b77 100644
|
||||
--- a/gcc/config/i386/sse.md
|
||||
+++ b/gcc/config/i386/sse.md
|
||||
@@ -4070,7 +4070,16 @@
|
||||
(match_operand:SI 3 "const_0_to_255_operand" "n")]
|
||||
UNSPEC_INSERTPS))]
|
||||
"TARGET_AVX"
|
||||
- "vinsertps\t{%3, %2, %1, %0|%0, %1, %2, %3}";
|
||||
+{
|
||||
+ if (MEM_P (operands[2]))
|
||||
+ {
|
||||
+ unsigned count_s = INTVAL (operands[3]) >> 6;
|
||||
+ if (count_s)
|
||||
+ operands[3] = GEN_INT (INTVAL (operands[3]) & 0x3f);
|
||||
+ operands[2] = adjust_address_nv (operands[2], SFmode, count_s * 4);
|
||||
+ }
|
||||
+ return "vinsertps\t{%3, %2, %1, %0|%0, %1, %2, %3}";
|
||||
+}
|
||||
[(set_attr "type" "sselog")
|
||||
(set_attr "prefix" "vex")
|
||||
(set_attr "prefix_extra" "1")
|
||||
@@ -4084,7 +4093,16 @@
|
||||
(match_operand:SI 3 "const_0_to_255_operand" "n")]
|
||||
UNSPEC_INSERTPS))]
|
||||
"TARGET_SSE4_1"
|
||||
- "insertps\t{%3, %2, %0|%0, %2, %3}";
|
||||
+{
|
||||
+ if (MEM_P (operands[2]))
|
||||
+ {
|
||||
+ unsigned count_s = INTVAL (operands[3]) >> 6;
|
||||
+ if (count_s)
|
||||
+ operands[3] = GEN_INT (INTVAL (operands[3]) & 0x3f);
|
||||
+ operands[2] = adjust_address_nv (operands[2], SFmode, count_s * 4);
|
||||
+ }
|
||||
+ return "insertps\t{%3, %2, %0|%0, %2, %3}";
|
||||
+}
|
||||
[(set_attr "type" "sselog")
|
||||
(set_attr "prefix_data16" "1")
|
||||
(set_attr "prefix_extra" "1")
|
||||
new file mode 100644
|
||||
index 0000000..9397729
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c
|
||||
@@ -0,0 +1,8 @@
|
||||
+/* { dg-do run { target ilp32 } } */
|
||||
+/* { dg-require-effective-target avx } */
|
||||
+/* { dg-options "-O2 -mfpmath=sse -mavx -mtune=geode" } */
|
||||
+
|
||||
+#define CHECK_H "avx-check.h"
|
||||
+#define TEST avx_test
|
||||
+
|
||||
+#include "sse4_1-insertps-3.c"
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c b/gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c
|
||||
new file mode 100644
|
||||
index 0000000..527b070
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c
|
||||
@@ -0,0 +1,8 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-require-effective-target avx } */
|
||||
+/* { dg-options "-O2 -mfpmath=sse -mavx" } */
|
||||
+
|
||||
+#define CHECK_H "avx-check.h"
|
||||
+#define TEST avx_test
|
||||
+
|
||||
+#include "sse4_1-insertps-4.c"
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
|
||||
new file mode 100644
|
||||
index 0000000..75a8073
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
|
||||
@@ -0,0 +1,5 @@
|
||||
+/* { dg-do run { target ilp32 } } */
|
||||
+/* { dg-require-effective-target sse4 } */
|
||||
+/* { dg-options "-O2 -msse4.1 -mtune=geode" } */
|
||||
+
|
||||
+#include "sse4_1-insertps-2.c"
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c
|
||||
new file mode 100644
|
||||
index 0000000..30defca
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c
|
||||
@@ -0,0 +1,92 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-require-effective-target sse4 } */
|
||||
+/* { dg-options "-O2 -msse4.1" } */
|
||||
+
|
||||
+#ifndef CHECK_H
|
||||
+#define CHECK_H "sse4_1-check.h"
|
||||
+#endif
|
||||
+
|
||||
+#ifndef TEST
|
||||
+#define TEST sse4_1_test
|
||||
+#endif
|
||||
+
|
||||
+#include CHECK_H
|
||||
+
|
||||
+#include <smmintrin.h>
|
||||
+#include <string.h>
|
||||
+
|
||||
+#define msk0 0x41
|
||||
+#define msk1 0x90
|
||||
+#define msk2 0xe9
|
||||
+#define msk3 0x70
|
||||
+
|
||||
+#define msk4 0xFC
|
||||
+#define msk5 0x05
|
||||
+#define msk6 0x0A
|
||||
+#define msk7 0x0F
|
||||
+
|
||||
+union
|
||||
+ {
|
||||
+ __m128 x;
|
||||
+ float f[4];
|
||||
+ } val1;
|
||||
+
|
||||
+static void
|
||||
+TEST (void)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128 x;
|
||||
+ float f[4];
|
||||
+ } res[8], val2, tmp;
|
||||
+ int masks[8];
|
||||
+ int i, j;
|
||||
+
|
||||
+ val2.f[0] = 55.0;
|
||||
+ val2.f[1] = 55.0;
|
||||
+ val2.f[2] = 55.0;
|
||||
+ val2.f[3] = 55.0;
|
||||
+
|
||||
+ val1.f[0] = 1.;
|
||||
+ val1.f[1] = 2.;
|
||||
+ val1.f[2] = 3.;
|
||||
+ val1.f[3] = 4.;
|
||||
+
|
||||
+ asm volatile ("" : "+m" (val1));
|
||||
+ res[0].x = _mm_insert_ps (val2.x, val1.x, msk0);
|
||||
+ asm volatile ("" : "+m" (val1));
|
||||
+ res[1].x = _mm_insert_ps (val2.x, val1.x, msk1);
|
||||
+ asm volatile ("" : "+m" (val1));
|
||||
+ res[2].x = _mm_insert_ps (val2.x, val1.x, msk2);
|
||||
+ asm volatile ("" : "+m" (val1));
|
||||
+ res[3].x = _mm_insert_ps (val2.x, val1.x, msk3);
|
||||
+
|
||||
+ masks[0] = msk0;
|
||||
+ masks[1] = msk1;
|
||||
+ masks[2] = msk2;
|
||||
+ masks[3] = msk3;
|
||||
+
|
||||
+ for (i = 0; i < 4; i++)
|
||||
+ {
|
||||
+ asm volatile ("" : "+m" (val1));
|
||||
+ res[i + 4].x = _mm_insert_ps (val2.x, val1.x, msk4);
|
||||
+ }
|
||||
+
|
||||
+ masks[4] = msk4;
|
||||
+ masks[5] = msk4;
|
||||
+ masks[6] = msk4;
|
||||
+ masks[7] = msk4;
|
||||
+
|
||||
+ for (i=0; i < 8; i++)
|
||||
+ {
|
||||
+ tmp = val2;
|
||||
+ tmp.f[(masks[i] & 0x30) >> 4] = val1.f[(masks[i] & 0xC0) >> 6];
|
||||
+
|
||||
+ for (j = 0; j < 4; j++)
|
||||
+ if (masks[i] & (0x1 << j))
|
||||
+ tmp.f[j] = 0.f;
|
||||
+
|
||||
+ if (memcmp (&res[i], &tmp, sizeof (tmp)))
|
||||
+ abort ();
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 13a531dde8ee181ad9e8aeb6b755ca52f261bef8 Mon Sep 17 00:00:00 2001
|
||||
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 15 Apr 2011 10:29:58 +0000
|
||||
Subject: [PATCH] PR target/48614
|
||||
* gcc.target/i386/pr46084.c: Require avx_runtime instead of
|
||||
just avx.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172485 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 88bcd1c..3ca22eb 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/pr46084.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr46084.c
|
||||
@@ -1,7 +1,7 @@
|
||||
/* This test needs to use setrlimit to set the stack size, so it can
|
||||
only run on Unix. */
|
||||
/* { dg-do run { target *-*-linux* *-*-solaris* *-*-darwin* } } */
|
||||
-/* { dg-require-effective-target avx } */
|
||||
+/* { dg-require-effective-target avx_runtime } */
|
||||
/* { dg-require-effective-target split_stack } */
|
||||
/* { dg-options "-fsplit-stack -O2 -mavx" } */
|
||||
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
From d3cce0bbf7e327905965f0fae70b04af08bfb64b Mon Sep 17 00:00:00 2001
|
||||
From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 15 Apr 2011 12:43:40 +0000
|
||||
Subject: [PATCH] 2011-04-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md (popcountdi2, popcountsi2, popcounthi2):
|
||||
Replace match_operand with match_dup for the third operand in
|
||||
these expanders.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172491 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
index 2d552fb..7639d2d 100644
|
||||
--- a/gcc/config/s390/s390.md
|
||||
+++ b/gcc/config/s390/s390.md
|
||||
@@ -9330,7 +9330,7 @@
|
||||
(parallel [(set (match_dup 0) (plus:DI (match_dup 0) (match_dup 2)))
|
||||
(clobber (reg:CC CC_REGNUM))])
|
||||
; sllg op2, op0, 16
|
||||
- (set (match_operand:DI 2 "register_operand" "")
|
||||
+ (set (match_dup 2)
|
||||
(ashift:DI (match_dup 0) (const_int 16)))
|
||||
; agr op0, op2
|
||||
(parallel [(set (match_dup 0) (plus:DI (match_dup 0) (match_dup 2)))
|
||||
@@ -9352,7 +9352,7 @@
|
||||
UNSPEC_POPCNT))
|
||||
(clobber (reg:CC CC_REGNUM))])
|
||||
; sllk op2, op0, 16
|
||||
- (set (match_operand:SI 2 "register_operand" "")
|
||||
+ (set (match_dup 2)
|
||||
(ashift:SI (match_dup 0) (const_int 16)))
|
||||
; ar op0, op2
|
||||
(parallel [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
|
||||
@@ -9374,7 +9374,7 @@
|
||||
UNSPEC_POPCNT))
|
||||
(clobber (reg:CC CC_REGNUM))])
|
||||
; sllk op2, op0, 8
|
||||
- (set (match_operand:SI 2 "register_operand" "")
|
||||
+ (set (match_dup 2)
|
||||
(ashift:SI (match_dup 0) (const_int 8)))
|
||||
; ar op0, op2
|
||||
(parallel [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
|
||||
--
|
||||
1.7.0.4
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue