From 2f6e708b252d3aa5aa4a4003c391c8ecaf5286eb Mon Sep 17 00:00:00 2001 From: meissner Date: Fri, 13 Apr 2012 21:55:15 +0000 Subject: [gcc] 2012-04-12 Michael Meissner PR target/52775 * config/rs6000/rs6000.h (TARGET_FCFID): Add TARGET_PPC_GPOPT to the list of options to enable the FCFID instruction. (TARGET_EXTRA_BUILTINS): Adjust comment. [gcc/testsuite] 2012-04-12 Michael Meissner PR target/52775 * gcc.target/powerpc/pr52775.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186438 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/rs6000.h | 9 +++++---- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.target/powerpc/pr52775.c | 16 ++++++++++++++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr52775.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3733e426ef4..8c2998f07d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-04-13 Michael Meissner + + Backport from mainline + 2012-04-12 Michael Meissner + + PR target/52775 + * config/rs6000/rs6000.h (TARGET_FCFID): Add TARGET_PPC_GPOPT to + the list of options to enable the FCFID instruction. + 2012-04-12 Richard Earnshaw PR target/49448 diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index a8d42398ec5..0eae3265a0f 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -469,10 +469,11 @@ extern int rs6000_vector_align[]; /* ISA 2.01 allowed FCFID to be done in 32-bit, previously it was 64-bit only. Enable 32-bit fcfid's on any of the switches for newer ISA machines or XILINX. */ -#define TARGET_FCFID (TARGET_POWERPC64 \ - || TARGET_POPCNTB /* ISA 2.02 */ \ - || TARGET_CMPB /* ISA 2.05 */ \ - || TARGET_POPCNTD /* ISA 2.06 */ \ +#define TARGET_FCFID (TARGET_POWERPC64 \ + || TARGET_PPC_GPOPT /* 970/power4 */ \ + || TARGET_POPCNTB /* ISA 2.02 */ \ + || TARGET_CMPB /* ISA 2.05 */ \ + || TARGET_POPCNTD /* ISA 2.06 */ \ || TARGET_XILINX_FPU) #define TARGET_FCTIDZ TARGET_FCFID diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a3a5f18e118..2819865ee75 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-04-13 Michael Meissner + + Backport from mainline + 2012-04-12 Michael Meissner + + PR target/52775 + * gcc.target/powerpc/pr52775.c: New file. + 2012-04-03 Jason Merrill PR c++/52796 diff --git a/gcc/testsuite/gcc.target/powerpc/pr52775.c b/gcc/testsuite/gcc.target/powerpc/pr52775.c new file mode 100644 index 00000000000..4027819ee63 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr52775.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-options "-O1 -mcpu=power4" } */ +/* { dg-final { scan-assembler-times "fcfid" 2 } } */ + +double +int_to_double (int *p) +{ + return (double)*p; +} + +double +long_long_to_double (long long *p) +{ + return (double)*p; +} -- cgit v1.2.1 From 8648aea1f6cc4b2f7ffc13a5d4f20a43652920d5 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 14 Apr 2012 00:18:55 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186442 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 905321ceb78..537945d2e2c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120413 +20120414 -- cgit v1.2.1 From 2b347e2d758b3735ab18a2a22897a6f6248358cb Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 15 Apr 2012 00:17:29 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186458 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 537945d2e2c..ba1282966c0 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120414 +20120415 -- cgit v1.2.1 From e54380db8ff0c627d63df2f03403d82a316e0da5 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 16 Apr 2012 00:17:29 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186476 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ba1282966c0..d140113d5f9 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120415 +20120416 -- cgit v1.2.1 From 28f76d407348d0687da44588e5c932964d2bc142 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 17 Apr 2012 00:17:16 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186514 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index d140113d5f9..831becd24ad 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120416 +20120417 -- cgit v1.2.1 From b293f6eab315ed4fc33eb38040ca11e33665f928 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 18 Apr 2012 00:17:53 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186555 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 831becd24ad..37d549a074e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120417 +20120418 -- cgit v1.2.1 From 7c579d9fcca91b10602f473715baa318c01b7d91 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 19 Apr 2012 00:17:45 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186582 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 37d549a074e..57f009cc64e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120418 +20120419 -- cgit v1.2.1 From a693f0e69f29cc94085abb03c4042ba887e29cc9 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 20 Apr 2012 00:17:45 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186602 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 57f009cc64e..bc01912f486 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120419 +20120420 -- cgit v1.2.1 From 491ed290277dc809b84c788e8e7dc25a26f3b619 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Fri, 20 Apr 2012 08:08:13 +0000 Subject: struct siginfo vs. siginfo_t Backport from trunk (but apply to gcc/): gcc/ 2012-04-20 Thomas Schwinge * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use siginfo_t instead of struct siginfo. * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise. * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise. * config/ia64/linux-unwind.h (ia64_fallback_frame_state) (ia64_handle_unwabi): Likewise. * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise. * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise. * config/sh/linux-unwind.h (shmedia_fallback_frame_state) (sh_fallback_frame_state): Likewise. * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186612 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 20 ++++++++++++++++++++ gcc/config/alpha/linux-unwind.h | 4 ++-- gcc/config/bfin/linux-unwind.h | 6 +++--- gcc/config/i386/linux-unwind.h | 7 ++++--- gcc/config/ia64/linux-unwind.h | 6 +++--- gcc/config/mips/linux-unwind.h | 5 +++-- gcc/config/pa/linux-unwind.h | 4 ++-- gcc/config/sh/linux-unwind.h | 9 +++++---- gcc/config/xtensa/linux-unwind.h | 4 ++-- 9 files changed, 44 insertions(+), 21 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c2998f07d4..90f8204c049 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2012-04-20 Thomas Schwinge + + struct siginfo vs. siginfo_t + + Backport from trunk (but apply to gcc/): + + 2012-04-20 Thomas Schwinge + + * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use + siginfo_t instead of struct siginfo. + * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise. + * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise. + * config/ia64/linux-unwind.h (ia64_fallback_frame_state) + (ia64_handle_unwabi): Likewise. + * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise. + * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise. + * config/sh/linux-unwind.h (shmedia_fallback_frame_state) + (sh_fallback_frame_state): Likewise. + * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise. + 2012-04-13 Michael Meissner Backport from mainline diff --git a/gcc/config/alpha/linux-unwind.h b/gcc/config/alpha/linux-unwind.h index 4c811dca4bf..8c04b3b415f 100644 --- a/gcc/config/alpha/linux-unwind.h +++ b/gcc/config/alpha/linux-unwind.h @@ -1,5 +1,5 @@ /* DWARF2 EH unwinding support for Alpha Linux. - Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -49,7 +49,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */ { struct rt_sigframe { - struct siginfo info; + siginfo_t info; struct ucontext uc; } *rt_ = context->cfa; sc = &rt_->uc.uc_mcontext; diff --git a/gcc/config/bfin/linux-unwind.h b/gcc/config/bfin/linux-unwind.h index 88c8285632d..15bb2f12b69 100644 --- a/gcc/config/bfin/linux-unwind.h +++ b/gcc/config/bfin/linux-unwind.h @@ -1,5 +1,5 @@ /* DWARF2 EH unwinding support for Blackfin. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -48,10 +48,10 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, { struct rt_sigframe { int sig; - struct siginfo *pinfo; + siginfo_t *pinfo; void *puc; char retcode[8]; - struct siginfo info; + siginfo_t info; struct ucontext uc; } *rt_ = context->cfa; diff --git a/gcc/config/i386/linux-unwind.h b/gcc/config/i386/linux-unwind.h index c5f7ea0e873..9e4be80109b 100644 --- a/gcc/config/i386/linux-unwind.h +++ b/gcc/config/i386/linux-unwind.h @@ -1,5 +1,6 @@ /* DWARF2 EH unwinding support for AMD x86-64 and x86. - Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2009, 2010, 2012 Free Software Foundation, + Inc. This file is part of GCC. @@ -133,9 +134,9 @@ x86_fallback_frame_state (struct _Unwind_Context *context, { struct rt_sigframe { int sig; - struct siginfo *pinfo; + siginfo_t *pinfo; void *puc; - struct siginfo info; + siginfo_t info; struct ucontext uc; } *rt_ = context->cfa; /* The void * cast is necessary to avoid an aliasing warning. diff --git a/gcc/config/ia64/linux-unwind.h b/gcc/config/ia64/linux-unwind.h index 93f762de573..da31259782b 100644 --- a/gcc/config/ia64/linux-unwind.h +++ b/gcc/config/ia64/linux-unwind.h @@ -1,5 +1,5 @@ /* DWARF2 EH unwinding support for IA64 Linux. - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -47,7 +47,7 @@ ia64_fallback_frame_state (struct _Unwind_Context *context, struct sigframe { char scratch[16]; unsigned long sig_number; - struct siginfo *info; + siginfo_t *info; struct sigcontext *sc; } *frame_ = (struct sigframe *)context->psp; struct sigcontext *sc = frame_->sc; @@ -137,7 +137,7 @@ ia64_handle_unwabi (struct _Unwind_Context *context, _Unwind_FrameState *fs) struct sigframe { char scratch[16]; unsigned long sig_number; - struct siginfo *info; + siginfo_t *info; struct sigcontext *sc; } *frame = (struct sigframe *)context->psp; struct sigcontext *sc = frame->sc; diff --git a/gcc/config/mips/linux-unwind.h b/gcc/config/mips/linux-unwind.h index 02f7cd54c5a..094ff58cb03 100644 --- a/gcc/config/mips/linux-unwind.h +++ b/gcc/config/mips/linux-unwind.h @@ -1,5 +1,6 @@ /* DWARF2 EH unwinding support for MIPS Linux. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software + Foundation, Inc. This file is part of GCC. @@ -75,7 +76,7 @@ mips_fallback_frame_state (struct _Unwind_Context *context, struct rt_sigframe { u_int32_t ass[4]; /* Argument save space for o32. */ u_int32_t trampoline[2]; - struct siginfo info; + siginfo_t info; _sig_ucontext_t uc; } *rt_ = context->cfa; sc = &rt_->uc.uc_mcontext; diff --git a/gcc/config/pa/linux-unwind.h b/gcc/config/pa/linux-unwind.h index a0560e97445..38b4eda7aee 100644 --- a/gcc/config/pa/linux-unwind.h +++ b/gcc/config/pa/linux-unwind.h @@ -1,5 +1,5 @@ /* DWARF2 EH unwinding support for PA Linux. - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -63,7 +63,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, int i; struct sigcontext *sc; struct rt_sigframe { - struct siginfo info; + siginfo_t info; struct ucontext uc; } *frame; diff --git a/gcc/config/sh/linux-unwind.h b/gcc/config/sh/linux-unwind.h index 94ed95d55e1..5a78e3172aa 100644 --- a/gcc/config/sh/linux-unwind.h +++ b/gcc/config/sh/linux-unwind.h @@ -1,5 +1,6 @@ /* DWARF2 EH unwinding support for SH Linux. - Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation, + Inc. This file is part of GCC. @@ -80,9 +81,9 @@ shmedia_fallback_frame_state (struct _Unwind_Context *context, && (*(unsigned long *) (pc+11) == 0x6ff0fff0)) { struct rt_sigframe { - struct siginfo *pinfo; + siginfo_t *pinfo; void *puc; - struct siginfo info; + siginfo_t info; struct ucontext uc; } *rt_ = context->cfa; /* The void * cast is necessary to avoid an aliasing warning. @@ -179,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, && (*(unsigned short *) (pc+14) == 0x00ad)))) { struct rt_sigframe { - struct siginfo info; + siginfo_t info; struct ucontext uc; } *rt_ = context->cfa; /* The void * cast is necessary to avoid an aliasing warning. diff --git a/gcc/config/xtensa/linux-unwind.h b/gcc/config/xtensa/linux-unwind.h index 32e93497287..24564972820 100644 --- a/gcc/config/xtensa/linux-unwind.h +++ b/gcc/config/xtensa/linux-unwind.h @@ -1,5 +1,5 @@ /* DWARF2 EH unwinding support for Xtensa. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -62,7 +62,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, struct sigcontext *sc; struct rt_sigframe { - struct siginfo info; + siginfo_t info; struct ucontext uc; } *rt_; -- cgit v1.2.1 From acb90ca4d4be587cc5de1ffc9a774e487f13e168 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 21 Apr 2012 00:17:48 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186647 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index bc01912f486..8c6755a49b7 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120420 +20120421 -- cgit v1.2.1 From ed4ebdc6cc522a40c5294ec29d985fa52688a9ee Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 22 Apr 2012 00:17:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186660 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8c6755a49b7..1c0efc045d2 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120421 +20120422 -- cgit v1.2.1 From 1b57882d2b606a79864a5ca201d095b78b836df7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 23 Apr 2012 00:17:09 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186690 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1c0efc045d2..f1ee68ae25b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120422 +20120423 -- cgit v1.2.1 From cb5bf6315eaf1827fa258a48eea97b36e689f513 Mon Sep 17 00:00:00 2001 From: bergner Date: Mon, 23 Apr 2012 12:44:46 +0000 Subject: Backport from mainline 2011-06-11 Jan Hubicka PR lto/48246 * lto.c (lto_1_to_1_map): Don't create empty partitions. (lto_balanced_map): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186703 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/lto/ChangeLog | 9 +++++++++ gcc/lto/lto.c | 19 +++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index cd87ddfde3d..95778973f62 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,12 @@ +2012-04-23 Peter Bergner + + Backport from mainline + 2011-06-11 Jan Hubicka + + PR lto/48246 + * lto.c (lto_1_to_1_map): Don't create empty partitions. + (lto_balanced_map): Likewise. + 2012-03-01 Release Manager * GCC 4.6.3 released. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 3d699c4f84b..64139717b18 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -893,7 +893,8 @@ lto_1_to_1_map (void) for (node = cgraph_nodes; node; node = node->next) { - if (!partition_cgraph_node_p (node)) + if (!partition_cgraph_node_p (node) + || node->aux) continue; file_data = node->local.lto_file_data; @@ -923,13 +924,13 @@ lto_1_to_1_map (void) npartitions++; } - if (!node->aux) - add_cgraph_node_to_partition (partition, node); + add_cgraph_node_to_partition (partition, node); } for (vnode = varpool_nodes; vnode; vnode = vnode->next) { - if (!partition_varpool_node_p (vnode)) + if (!partition_varpool_node_p (vnode) + || vnode->aux) continue; file_data = vnode->lto_file_data; slot = pointer_map_contains (pmap, file_data); @@ -943,8 +944,7 @@ lto_1_to_1_map (void) npartitions++; } - if (!vnode->aux) - add_varpool_node_to_partition (partition, vnode); + add_varpool_node_to_partition (partition, vnode); } for (node = cgraph_nodes; node; node = node->next) node->aux = NULL; @@ -1050,8 +1050,9 @@ lto_balanced_map (void) for (i = 0; i < n_nodes; i++) { - if (!order[i]->aux) - add_cgraph_node_to_partition (partition, order[i]); + if (order[i]->aux) + continue; + add_cgraph_node_to_partition (partition, order[i]); total_size -= order[i]->global.size; /* Once we added a new node to the partition, we also want to add @@ -1231,6 +1232,8 @@ lto_balanced_map (void) } i = best_i; /* When we are finished, avoid creating empty partition. */ + while (i < n_nodes - 1 && order[i + 1]->aux) + i++; if (i == n_nodes - 1) break; partition = new_partition (""); -- cgit v1.2.1 From 6bad5e7088791636580c2f304acd22d13c1a7f13 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 24 Apr 2012 00:17:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186732 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f1ee68ae25b..7ac3bc0c7d3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120423 +20120424 -- cgit v1.2.1 From d569369d1084cedbf96436ab740b202cb512f319 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 24 Apr 2012 06:14:37 +0000 Subject: PR middle-end/53084 * varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR of MEM_REF. (output_addressed_constants): Likewise. * gcc.c-torture/execute/pr53084.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186746 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/execute/pr53084.c | 18 ++++++++++++++++++ gcc/varasm.c | 12 +++++++++++- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr53084.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 90f8204c049..268edbc3cba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-04-24 Jakub Jelinek + + PR middle-end/53084 + * varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR + of MEM_REF. + (output_addressed_constants): Likewise. + 2012-04-20 Thomas Schwinge struct siginfo vs. siginfo_t diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2819865ee75..c1c1ce9bead 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-04-24 Jakub Jelinek + + PR middle-end/53084 + * gcc.c-torture/execute/pr53084.c: New test. + 2012-04-13 Michael Meissner Backport from mainline diff --git a/gcc/testsuite/gcc.c-torture/execute/pr53084.c b/gcc/testsuite/gcc.c-torture/execute/pr53084.c new file mode 100644 index 00000000000..1afc016dfc4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr53084.c @@ -0,0 +1,18 @@ +/* PR middle-end/53084 */ + +extern void abort (void); + +__attribute__((noinline, noclone)) void +bar (const char *p) +{ + if (p[0] != 'o' || p[1] != 'o' || p[2]) + abort (); +} + +int +main () +{ + static const char *const foo[] = {"foo" + 1}; + bar (foo[0]); + return 0; +} diff --git a/gcc/varasm.c b/gcc/varasm.c index d9748887d89..977ca40a088 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1,7 +1,7 @@ /* Output variables, constants and external declarations, for GNU compiler. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, - 2010, 2011 Free Software Foundation, Inc. + 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -3944,6 +3944,13 @@ compute_reloc_for_constant (tree exp) tem = TREE_OPERAND (tem, 0)) ; + if (TREE_CODE (tem) == MEM_REF + && TREE_CODE (TREE_OPERAND (tem, 0)) == ADDR_EXPR) + { + reloc = compute_reloc_for_constant (TREE_OPERAND (tem, 0)); + break; + } + if (TREE_PUBLIC (tem)) reloc |= 2; else @@ -4012,6 +4019,9 @@ output_addressed_constants (tree exp) if (CONSTANT_CLASS_P (tem) || TREE_CODE (tem) == CONSTRUCTOR) output_constant_def (tem, 0); + + if (TREE_CODE (tem) == MEM_REF) + output_addressed_constants (TREE_OPERAND (tem, 0)); break; case PLUS_EXPR: -- cgit v1.2.1 From e75f28011e581943450db411214a83a11421f5be Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 25 Apr 2012 00:17:17 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186791 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7ac3bc0c7d3..dc9fbe509f7 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120424 +20120425 -- cgit v1.2.1 From c30620139a6a7f8de189285156f9e5216800ec93 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 26 Apr 2012 00:17:28 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186852 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index dc9fbe509f7..de1110becdd 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120425 +20120426 -- cgit v1.2.1 From fb0627c6e0be80f9cd0d984b062b8833347a72da Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 27 Apr 2012 00:17:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186890 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index de1110becdd..6a0c4b820d3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120426 +20120427 -- cgit v1.2.1 From a4bc42e940943cd895ae8c9596f57d1a4e5f0d6b Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 28 Apr 2012 00:17:24 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186923 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6a0c4b820d3..2972187045f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120427 +20120428 -- cgit v1.2.1 From 0abd38658b6201a3d38785046320435c90b16345 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 29 Apr 2012 00:17:49 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186936 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2972187045f..976668332cc 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120428 +20120429 -- cgit v1.2.1 From f018955a8e2dc6ff3b800cee4f4cfc160c68843f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 30 Apr 2012 00:17:32 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186950 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 976668332cc..c32d4834da5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120429 +20120430 -- cgit v1.2.1 From 3e34c1b84e71f70e4af574d2a70c8132dc3696d0 Mon Sep 17 00:00:00 2001 From: uros Date: Mon, 30 Apr 2012 09:56:27 +0000 Subject: Backport from mainline 2012-04-27 Paolo Bonzini PR target/53138 * config/i386/i386.md (x86_movcc_0_m1_neg): Add clobber. testsuite/ChangeLog: Backport from mainline 2012-04-27 Paolo Bonzini PR target/53138 * gcc.c-torture/execute/20120427-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@186963 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 ++++++-- gcc/config/i386/i386.md | 3 +- gcc/testsuite/ChangeLog | 8 ++++++ gcc/testsuite/gcc.c-torture/execute/20120427-1.c | 36 ++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/20120427-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 268edbc3cba..7db206adc22 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,15 @@ +2012-04-30 Uros Bizjak + + Backport from mainline + 2012-04-27 Paolo Bonzini + + PR target/53138 + * config/i386/i386.md (x86_movcc_0_m1_neg): Add clobber. + 2012-04-24 Jakub Jelinek PR middle-end/53084 - * varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR - of MEM_REF. + * varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR of MEM_REF. (output_addressed_constants): Likewise. 2012-04-20 Thomas Schwinge diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 2067674f59f..42efde0d58e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -16349,7 +16349,8 @@ (define_insn "*x86_movcc_0_m1_neg" [(set (match_operand:SWI48 0 "register_operand" "=r") (neg:SWI48 (match_operator 1 "ix86_carry_flag_operator" - [(reg FLAGS_REG) (const_int 0)])))] + [(reg FLAGS_REG) (const_int 0)]))) + (clobber (reg:CC FLAGS_REG))] "" "sbb{}\t%0, %0" [(set_attr "type" "alu") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c1c1ce9bead..f599a542411 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-04-30 Uros Bizjak + + Backport from mainline + 2012-04-27 Paolo Bonzini + + PR target/53138 + * gcc.c-torture/execute/20120427-1.c: New testcase. + 2012-04-24 Jakub Jelinek PR middle-end/53084 diff --git a/gcc/testsuite/gcc.c-torture/execute/20120427-1.c b/gcc/testsuite/gcc.c-torture/execute/20120427-1.c new file mode 100644 index 00000000000..46ed76ae943 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20120427-1.c @@ -0,0 +1,36 @@ +typedef struct sreal +{ + unsigned sig; /* Significant. */ + int exp; /* Exponent. */ +} sreal; + +sreal_compare (sreal *a, sreal *b) +{ + if (a->exp > b->exp) + return 1; + if (a->exp < b->exp) + return -1; + if (a->sig > b->sig) + return 1; + return -(a->sig < b->sig); +} + +sreal a[] = { + { 0, 0 }, + { 1, 0 }, + { 0, 1 }, + { 1, 1 } +}; + +int main() +{ + int i, j; + for (i = 0; i <= 3; i++) { + for (j = 0; j < 3; j++) { + if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort(); + if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort(); + if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort(); + } + } + return 0; +} -- cgit v1.2.1 From 73ffd14122c9ca5162d95d822df75f0d65803f7b Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 1 May 2012 00:18:00 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187005 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c32d4834da5..27e1bcba6ef 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120430 +20120501 -- cgit v1.2.1 From 49464a271c55fb3816aacaacf414a7916fea8905 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 2 May 2012 00:17:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187032 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 27e1bcba6ef..8832539b94c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120501 +20120502 -- cgit v1.2.1 From 4a09c30ce41cf5a905c07688d0c0928ef6f4cb77 Mon Sep 17 00:00:00 2001 From: burnus Date: Wed, 2 May 2012 12:53:20 +0000 Subject: 2012-05-02 Tobias Burnus Backport from mainline 2012-04-12 Tobias Burnus PR fortran/52864 * expr.c (gfc_check_vardef_context): Fix assignment check for pointer components. 2012-05-02 Tobias Burnus Backport from mainline 2012-04-16 Tobias Burnus PR fortran/52864 * gfortran.dg/pointer_intent_6.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187046 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 9 +++++++++ gcc/fortran/expr.c | 6 +++++- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gfortran.dg/pointer_intent_6.f90 | 19 +++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pointer_intent_6.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f78663e6dd1..b5789984b5f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2012-05-02 Tobias Burnus + + Backport from mainline + 2012-04-12 Tobias Burnus + + PR fortran/52864 + * expr.c (gfc_check_vardef_context): Fix assignment check for + pointer components. + 2012-03-10 Tobias Burnus PR fortran/52469 diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index a4da37c20dc..3330cc89313 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -4474,7 +4474,11 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, const char* context) if (ptr_component && ref->type == REF_COMPONENT) check_intentin = false; if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer) - ptr_component = true; + { + ptr_component = true; + if (!pointer) + check_intentin = false; + } } if (check_intentin && sym->attr.intent == INTENT_IN) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f599a542411..d7d4295dda6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-05-02 Tobias Burnus + + Backport from mainline + 2012-04-16 Tobias Burnus + + PR fortran/52864 + * gfortran.dg/pointer_intent_6.f90: New. + 2012-04-30 Uros Bizjak Backport from mainline diff --git a/gcc/testsuite/gfortran.dg/pointer_intent_6.f90 b/gcc/testsuite/gfortran.dg/pointer_intent_6.f90 new file mode 100644 index 00000000000..56c7de5ebba --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pointer_intent_6.f90 @@ -0,0 +1,19 @@ +! { dg-do compile } +! +! PR fortran/52864 +! +! Assigning to an intent(in) pointer (which is valid). +! + program test + type PoisFFT_Solver3D + complex, dimension(:,:,:), & + pointer :: work => null() + end type PoisFFT_Solver3D + contains + subroutine PoisFFT_Solver3D_FullPeriodic(D, p) + type(PoisFFT_Solver3D), intent(in) :: D + real, intent(in), pointer :: p(:) + D%work(i,j,k) = 0.0 + p = 0.0 + end subroutine + end -- cgit v1.2.1 From e94507e01335dd191131b90ab51eb245f7863c6e Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 3 May 2012 00:17:26 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187070 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8832539b94c..6ae4117ab62 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120502 +20120503 -- cgit v1.2.1 From 600570758575c93331a552d392700d7c7336f516 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 4 May 2012 00:17:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187129 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6ae4117ab62..a55b8dd0c2b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120503 +20120504 -- cgit v1.2.1 From 2fe3693f169c66fa47aac9f83dc843c205920434 Mon Sep 17 00:00:00 2001 From: meissner Date: Fri, 4 May 2012 00:31:50 +0000 Subject: [gcc] 2012-05-03 Michael Meissner PR target/53199 * config/rs6000/rs6000.md (bswapdi splitters): If -mavoid-indexed-addresses (or -mcpu=power6 which sets it by default) is used, generate an alternate sequence that does not depend on using indexed addressing. [gcc/testsuite] 2012-05-03 Michael Meissner PR target/53199 * gcc.target/powwerpc/pr53199.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187133 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++ gcc/config/rs6000/rs6000.md | 52 +++++++++++++++++++++++++++--- gcc/testsuite/ChangeLog | 8 +++++ gcc/testsuite/gcc.target/powerpc/pr53199.c | 50 ++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr53199.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7db206adc22..8b13279ea97 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2012-05-03 Michael Meissner + + Backport from the mainline + 2012-05-03 Michael Meissner + + PR target/53199 + * config/rs6000/rs6000.md (bswapdi splitters): If + -mavoid-indexed-addresses (or -mcpu=power6 which sets it by + default) is used, generate an alternate sequence that does not + depend on using indexed addressing. + 2012-04-30 Uros Bizjak Backport from mainline diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 16be86c27a4..7befb56a378 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -2524,7 +2524,18 @@ if (GET_CODE (addr1) == PLUS) { emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); - addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); + if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); + addr2 = op2; + } + else + addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); + } + else if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); + addr2 = op2; } else { @@ -2574,7 +2585,18 @@ if (GET_CODE (addr1) == PLUS) { emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); - addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); + if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); + addr2 = op2; + } + else + addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); + } + else if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); + addr2 = op2; } else { @@ -2655,7 +2677,18 @@ if (GET_CODE (addr1) == PLUS) { emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); - addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); + if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); + addr2 = op2; + } + else + addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); + } + else if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); + addr2 = op2; } else { @@ -2700,7 +2733,18 @@ if (GET_CODE (addr1) == PLUS) { emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); - addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); + if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); + addr2 = op2; + } + else + addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); + } + else if (TARGET_AVOID_XFORM) + { + emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); + addr2 = op2; } else { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d7d4295dda6..984a01134c3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-05-03 Michael Meissner + + Backport from mainline + 2012-05-03 Michael Meissner + + PR target/53199 + * gcc.target/powwerpc/pr53199.c: New file. + 2012-05-02 Tobias Burnus Backport from mainline diff --git a/gcc/testsuite/gcc.target/powerpc/pr53199.c b/gcc/testsuite/gcc.target/powerpc/pr53199.c new file mode 100644 index 00000000000..89a0cad06fe --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr53199.c @@ -0,0 +1,50 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */ +/* { dg-final { scan-assembler-times "lwbrx" 6 } } */ +/* { dg-final { scan-assembler-times "stwbrx" 6 } } */ + +/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in + creating the two lwbrx instructions. */ + +long long +load64_reverse_1 (long long *p) +{ + return __builtin_bswap64 (*p); +} + +long long +load64_reverse_2 (long long *p) +{ + return __builtin_bswap64 (p[1]); +} + +long long +load64_reverse_3 (long long *p, int i) +{ + return __builtin_bswap64 (p[i]); +} + +void +store64_reverse_1 (long long *p, long long x) +{ + *p = __builtin_bswap64 (x); +} + +void +store64_reverse_2 (long long *p, long long x) +{ + p[1] = __builtin_bswap64 (x); +} + +void +store64_reverse_3 (long long *p, long long x, int i) +{ + p[i] = __builtin_bswap64 (x); +} + +long long +reg_reverse (long long x) +{ + return __builtin_bswap64 (x); +} -- cgit v1.2.1 From 7f89f47fcde78f822568f905f904ce0bf7c222cb Mon Sep 17 00:00:00 2001 From: uros Date: Fri, 4 May 2012 17:48:56 +0000 Subject: Backport from mainline 2012-05-04 Uros Bizjak PR target/53228 * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE. (TARGET_CMOV): Rename from TARGET_CMOVE. (TARGET_CMOVE): New define. * config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV. Do not set TARGET_CMOVE here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187171 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 ++++++++++++ gcc/config/i386/i386.c | 10 ++-------- gcc/config/i386/i386.h | 9 +++++++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b13279ea97..096aef8d575 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2012-05-04 Uros Bizjak + + Backport from mainline + 2012-05-04 Uros Bizjak + + PR target/53228 + * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE. + (TARGET_CMOV): Rename from TARGET_CMOVE. + (TARGET_CMOVE): New define. + * config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV. + Do not set TARGET_CMOVE here. + 2012-05-03 Michael Meissner Backport from the mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index b8022a89424..8c27488ebf9 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2095,7 +2095,7 @@ unsigned char ix86_arch_features[X86_ARCH_LAST]; /* Feature tests against the various architecture variations, used to create ix86_arch_features based on the processor mask. */ static unsigned int initial_ix86_arch_features[X86_ARCH_LAST] = { - /* X86_ARCH_CMOVE: Conditional move was added for pentiumpro. */ + /* X86_ARCH_CMOV: Conditional move was added for pentiumpro. */ ~(m_386 | m_486 | m_PENT | m_K6), /* X86_ARCH_CMPXCHG: Compare and exchange was added for 80486. */ @@ -3812,7 +3812,7 @@ ix86_option_override_internal (bool main_args_p) -mtune (rather than -march) points us to a processor that has them. However, the VIA C3 gives a SIGILL, so we only do that for i686 and higher processors. */ - if (TARGET_CMOVE + if (TARGET_CMOV && (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE))) x86_prefetch_sse = true; break; @@ -4182,12 +4182,6 @@ ix86_option_override_internal (bool main_args_p) target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; } - /* For sane SSE instruction set generation we need fcomi instruction. - It is safe to enable all CMOVE instructions. Also, RDRAND intrinsic - expands to a sequence that includes conditional move. */ - if (TARGET_SSE || TARGET_RDRND) - TARGET_CMOVE = 1; - /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix. */ { char *p; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index b342930f84a..281f9e12765 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -424,7 +424,7 @@ extern unsigned char ix86_tune_features[X86_TUNE_LAST]; /* Feature tests against the various architecture variations. */ enum ix86_arch_indices { - X86_ARCH_CMOVE, /* || TARGET_SSE */ + X86_ARCH_CMOV, X86_ARCH_CMPXCHG, X86_ARCH_CMPXCHG8B, X86_ARCH_XADD, @@ -435,12 +435,17 @@ enum ix86_arch_indices { extern unsigned char ix86_arch_features[X86_ARCH_LAST]; -#define TARGET_CMOVE ix86_arch_features[X86_ARCH_CMOVE] +#define TARGET_CMOV ix86_arch_features[X86_ARCH_CMOV] #define TARGET_CMPXCHG ix86_arch_features[X86_ARCH_CMPXCHG] #define TARGET_CMPXCHG8B ix86_arch_features[X86_ARCH_CMPXCHG8B] #define TARGET_XADD ix86_arch_features[X86_ARCH_XADD] #define TARGET_BSWAP ix86_arch_features[X86_ARCH_BSWAP] +/* For sane SSE instruction set generation we need fcomi instruction. + It is safe to enable all CMOVE instructions. Also, RDRAND intrinsic + expands to a sequence that includes conditional move. */ +#define TARGET_CMOVE (TARGET_CMOV || TARGET_SSE || TARGET_RDRND) + #define TARGET_FISTTP (TARGET_SSE3 && TARGET_80387) extern int x86_prefetch_sse; -- cgit v1.2.1 From f4eb69921f0ffea67ce8d321a5c7e1c606e13b3a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 5 May 2012 00:17:23 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187186 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a55b8dd0c2b..6a8d9b2049c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120504 +20120505 -- cgit v1.2.1 From 1d23b844867a384b2069743f295e74df1d961a45 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 6 May 2012 00:17:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187201 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6a8d9b2049c..2e73417654b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120505 +20120506 -- cgit v1.2.1 From 7dcce177e6045b9369c681da6e0dd2f4e15368c0 Mon Sep 17 00:00:00 2001 From: danglin Date: Sun, 6 May 2012 20:59:10 +0000 Subject: PR target/52999 * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Don't put function labels in constant pool. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187217 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/pa/pa.h | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 096aef8d575..258b706457d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-06 John David Anglin + + PR target/52999 + * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Don't put function labels + in constant pool. + 2012-05-04 Uros Bizjak Backport from mainline diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 012186854de..6c587941b5a 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -859,8 +859,7 @@ extern int may_call_alloca; || reload_in_progress \ || reload_completed \ || LEGITIMATE_64BIT_CONST_INT_P (INTVAL (X)) \ - || cint_ok_for_move (INTVAL (X))) \ - && !function_label_operand (X, VOIDmode)) + || cint_ok_for_move (INTVAL (X)))) /* Target flags set on a symbol_ref. */ -- cgit v1.2.1 From c2ef05b6fcfbd1c6fcaa4a03d46e2695b3c6ee2c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 7 May 2012 00:17:40 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187221 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2e73417654b..8a0ab96bec8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120506 +20120507 -- cgit v1.2.1 From 698216975e4e02fcbc17fe0232863fe5081259ec Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 8 May 2012 00:17:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187273 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8a0ab96bec8..761965d7ec3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120507 +20120508 -- cgit v1.2.1 From def6c0b9bcdfa0ba3983c5426130c19436463c75 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 9 May 2012 00:17:53 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187305 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 761965d7ec3..2cedc0e7f08 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120508 +20120509 -- cgit v1.2.1 From 518e102bb1a448331e2a4ca1f018510b30e4f85a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 10 May 2012 00:17:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187360 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2cedc0e7f08..09c05897616 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120509 +20120510 -- cgit v1.2.1 From 45961689c1a509680b7aeed586ef15373d2fa28b Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 11 May 2012 00:17:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187389 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 09c05897616..28996773f30 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120510 +20120511 -- cgit v1.2.1 From 095a956133fb638f322899609c9d36c945b57211 Mon Sep 17 00:00:00 2001 From: burnus Date: Fri, 11 May 2012 22:33:21 +0000 Subject: 2012-05-12 Tobias Burnus PR fortran/53310 * intrinsics/eoshift2.c (eoshift2): Do not leak memory by allocating it in the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187418 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgfortran/ChangeLog | 6 ++++++ libgfortran/intrinsics/eoshift2.c | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 31e5895f410..3921f72a63c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2012-05-12 Tobias Burnus + + PR fortran/53310 + * intrinsics/eoshift2.c (eoshift2): Do not leak + memory by allocating it in the loop. + 2012-03-01 Release Manager * GCC 4.6.3 released. diff --git a/libgfortran/intrinsics/eoshift2.c b/libgfortran/intrinsics/eoshift2.c index 2fbf62e118c..fe38d058b02 100644 --- a/libgfortran/intrinsics/eoshift2.c +++ b/libgfortran/intrinsics/eoshift2.c @@ -77,6 +77,12 @@ eoshift2 (gfc_array_char *ret, const gfc_array_char *array, ret->offset = 0; ret->dtype = array->dtype; + + if (arraysize > 0) + ret->data = internal_malloc_size (size * arraysize); + else + ret->data = internal_malloc_size (1); + for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) { index_type ub, str; @@ -90,12 +96,6 @@ eoshift2 (gfc_array_char *ret, const gfc_array_char *array, * GFC_DESCRIPTOR_STRIDE(ret,i-1); GFC_DIMENSION_SET(ret->dim[i], 0, ub, str); - - if (arraysize > 0) - ret->data = internal_malloc_size (size * arraysize); - else - ret->data = internal_malloc_size (1); - } } else if (unlikely (compile_options.bounds_check)) -- cgit v1.2.1 From 2f277e4f025f0f6519c84d86e5c9d3e726c2b48c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 12 May 2012 00:17:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187421 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 28996773f30..09397d413ea 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120511 +20120512 -- cgit v1.2.1 From 9f6050a49921ba6dad64de325bd50aaa8de8d53f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 13 May 2012 00:17:39 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187432 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 09397d413ea..24f1e4fd7ed 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120512 +20120513 -- cgit v1.2.1 From 31d842672da66d74db0339b707c608bdace37a87 Mon Sep 17 00:00:00 2001 From: uros Date: Sun, 13 May 2012 20:12:58 +0000 Subject: Backport from mainline 2012-05-12 Uros Bizjak * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle ORDERED and UNORDERED conditions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187444 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/alpha/alpha.c | 28 ++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 258b706457d..b97a5dea3be 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-05-13 Uros Bizjak + + Backport from mainline + 2012-05-12 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle + ORDERED and UNORDERED conditions. + 2012-05-06 John David Anglin PR target/52999 diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 34ec9674727..2f4873eb6c2 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -2469,7 +2469,7 @@ alpha_emit_conditional_branch (rtx operands[], enum machine_mode cmp_mode) { case EQ: case LE: case LT: case LEU: case LTU: case UNORDERED: - /* We have these compares: */ + /* We have these compares. */ cmp_code = code, branch_code = NE; break; @@ -2706,13 +2706,15 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode) switch (code) { case EQ: case LE: case LT: case LEU: case LTU: + case UNORDERED: /* We have these compares. */ cmp_code = code, code = NE; break; case NE: - /* This must be reversed. */ - cmp_code = EQ, code = EQ; + case ORDERED: + /* These must be reversed. */ + cmp_code = reverse_condition (code), code = EQ; break; case GE: case GT: case GEU: case GTU: @@ -2732,6 +2734,14 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode) gcc_unreachable (); } + if (cmp_mode == DImode) + { + if (!reg_or_0_operand (op0, DImode)) + op0 = force_reg (DImode, op0); + if (!reg_or_8bit_operand (op1, DImode)) + op1 = force_reg (DImode, op1); + } + tem = gen_reg_rtx (cmp_mode); emit_insn (gen_rtx_SET (VOIDmode, tem, gen_rtx_fmt_ee (cmp_code, cmp_mode, @@ -2743,6 +2753,14 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode) local_fast_math = 1; } + if (cmp_mode == DImode) + { + if (!reg_or_0_operand (op0, DImode)) + op0 = force_reg (DImode, op0); + if (!reg_or_8bit_operand (op1, DImode)) + op1 = force_reg (DImode, op1); + } + /* We may be able to use a conditional move directly. This avoids emitting spurious compares. */ if (signed_comparison_operator (cmp, VOIDmode) @@ -2761,11 +2779,13 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode) switch (code) { case EQ: case LE: case LT: case LEU: case LTU: + case UNORDERED: /* We have these compares: */ break; case NE: - /* This must be reversed. */ + case ORDERED: + /* These must be reversed. */ code = reverse_condition (code); cmov_code = EQ; break; -- cgit v1.2.1 From 737df7af2508268326a53fb7bea202975aefbe7c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 14 May 2012 00:17:54 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187447 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 24f1e4fd7ed..19d9b8eeab6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120513 +20120514 -- cgit v1.2.1 From 64de273f2e4158fe0998299907ebbd37795c4014 Mon Sep 17 00:00:00 2001 From: uros Date: Mon, 14 May 2012 21:32:29 +0000 Subject: PR target/46098 * config/i386/i386.c (ix86_expand_special_args_builtin): Always generate target register for "load" class builtins. Revert: 2010-10-22 Uros Bizjak PR target/46098 * config/i386/sse.md (*avx_movu): Rename from avx_movu. (avx_movu): New expander. (*_movu): Rename from _movu. (_movu): New expander. (*avx_movdqu): Rename from avx_movdqu. (avx_movdqu): New expander. (*sse2_movdqu): Rename from sse2_movdqu. (sse2_movdqu): New expander. testsuite/ChangeLog: * gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings. * gcc.target/i386/avx256-unaligned-store-[1234].c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187483 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 20 +++++++++ gcc/config/i386/i386.c | 4 +- gcc/config/i386/sse.md | 51 ++-------------------- gcc/testsuite/ChangeLog | 5 +++ .../gcc.target/i386/avx256-unaligned-load-1.c | 4 +- .../gcc.target/i386/avx256-unaligned-load-2.c | 4 +- .../gcc.target/i386/avx256-unaligned-load-3.c | 4 +- .../gcc.target/i386/avx256-unaligned-load-4.c | 4 +- .../gcc.target/i386/avx256-unaligned-store-1.c | 2 +- .../gcc.target/i386/avx256-unaligned-store-2.c | 2 +- .../gcc.target/i386/avx256-unaligned-store-3.c | 2 +- .../gcc.target/i386/avx256-unaligned-store-4.c | 4 +- 12 files changed, 44 insertions(+), 62 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b97a5dea3be..4563e0aa44b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2012-05-14 Uros Bizjak + + PR target/46098 + * config/i386/i386.c (ix86_expand_special_args_builtin): Always + generate target register for "load" class builtins. + + Revert: + 2010-10-22 Uros Bizjak + + PR target/46098 + * config/i386/sse.md (*avx_movu): + Rename from avx_movu. + (avx_movu): New expander. + (*_movu): Rename from _movu. + (_movu): New expander. + (*avx_movdqu): Rename from avx_movdqu. + (avx_movdqu): New expander. + (*sse2_movdqu): Rename from sse2_movdqu. + (sse2_movdqu): New expander. + 2012-05-13 Uros Bizjak Backport from mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8c27488ebf9..9e2d66cd9ca 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -27230,8 +27230,8 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, arg_adjust = 0; if (optimize || target == 0 - || GET_MODE (target) != tmode - || !insn_p->operand[0].predicate (target, tmode)) + || !register_operand (target, tmode) + || GET_MODE (target) != tmode) target = gen_reg_rtx (tmode); } diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index ba997c22436..b0dc3d8db80 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -392,18 +392,7 @@ DONE; }) -(define_expand "avx_movu" - [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "") - (unspec:AVXMODEF2P - [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "")] - UNSPEC_MOVU))] - "AVX_VEC_FLOAT_MODE_P (mode)" -{ - if (MEM_P (operands[0]) && MEM_P (operands[1])) - operands[1] = force_reg (mode, operands[1]); -}) - -(define_insn "*avx_movu" +(define_insn "avx_movu" [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m") (unspec:AVXMODEF2P [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")] @@ -429,18 +418,7 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_expand "_movu" - [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "") - (unspec:SSEMODEF2P - [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")] - UNSPEC_MOVU))] - "SSE_VEC_FLOAT_MODE_P (mode)" -{ - if (MEM_P (operands[0]) && MEM_P (operands[1])) - operands[1] = force_reg (mode, operands[1]); -}) - -(define_insn "*_movu" +(define_insn "_movu" [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m") (unspec:SSEMODEF2P [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")] @@ -452,18 +430,7 @@ (set_attr "movu" "1") (set_attr "mode" "")]) -(define_expand "avx_movdqu" - [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "") - (unspec:AVXMODEQI - [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "")] - UNSPEC_MOVU))] - "TARGET_AVX" -{ - if (MEM_P (operands[0]) && MEM_P (operands[1])) - operands[1] = force_reg (mode, operands[1]); -}) - -(define_insn "*avx_movdqu" +(define_insn "avx_movdqu" [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m") (unspec:AVXMODEQI [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")] @@ -475,17 +442,7 @@ (set_attr "prefix" "vex") (set_attr "mode" "")]) -(define_expand "sse2_movdqu" - [(set (match_operand:V16QI 0 "nonimmediate_operand" "") - (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "")] - UNSPEC_MOVU))] - "TARGET_SSE2" -{ - if (MEM_P (operands[0]) && MEM_P (operands[1])) - operands[1] = force_reg (V16QImode, operands[1]); -}) - -(define_insn "*sse2_movdqu" +(define_insn "sse2_movdqu" [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m") (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")] UNSPEC_MOVU))] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 984a01134c3..327205980e6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-14 Uros Bizjak + + * gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings. + * gcc.target/i386/avx256-unaligned-store-[1234].c: Ditto. + 2012-05-03 Michael Meissner Backport from mainline diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c index 023e859b6c1..c1c7517d711 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c @@ -14,6 +14,6 @@ avx_test (void) c[i] = a[i] * b[i+3]; } -/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */ -/* { dg-final { scan-assembler "\\*avx_movups/1" } } */ +/* { dg-final { scan-assembler-not "avx_movups256/1" } } */ +/* { dg-final { scan-assembler "avx_movups/1" } } */ /* { dg-final { scan-assembler "vinsertf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c index 8394e27197b..319cf5e0a01 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c @@ -24,6 +24,6 @@ avx_test (void) } } -/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */ -/* { dg-final { scan-assembler "\\*avx_movdqu/1" } } */ +/* { dg-final { scan-assembler-not "avx_movdqu256/1" } } */ +/* { dg-final { scan-assembler "avx_movdqu/1" } } */ /* { dg-final { scan-assembler "vinsertf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c index ec7d59d53cc..6ac579aa77c 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c @@ -14,6 +14,6 @@ avx_test (void) c[i] = a[i] * b[i+3]; } -/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */ -/* { dg-final { scan-assembler "\\*avx_movupd/1" } } */ +/* { dg-final { scan-assembler-not "avx_movupd256/1" } } */ +/* { dg-final { scan-assembler "avx_movupd/1" } } */ /* { dg-final { scan-assembler "vinsertf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c index 0d3ef333120..7c015a8b90a 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c @@ -14,6 +14,6 @@ avx_test (void) b[i] = a[i+3] * 2; } -/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */ -/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */ +/* { dg-final { scan-assembler "avx_movups256/1" } } */ +/* { dg-final { scan-assembler-not "avx_movups/1" } } */ /* { dg-final { scan-assembler-not "vinsertf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c index 99db55c9d0a..cf1944acab2 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c @@ -17,6 +17,6 @@ avx_test (void) d[i] = c[i] * 20.0; } -/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */ +/* { dg-final { scan-assembler-not "avx_movups256/2" } } */ /* { dg-final { scan-assembler "movups.*\\*avx_movv4sf_internal/3" } } */ /* { dg-final { scan-assembler "vextractf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c index 38ee9e2a45c..5a10ec3a7fb 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c @@ -24,6 +24,6 @@ avx_test (void) } } -/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */ +/* { dg-final { scan-assembler-not "avx_movdqu256/2" } } */ /* { dg-final { scan-assembler "movdqu.*\\*avx_movv16qi_internal/3" } } */ /* { dg-final { scan-assembler "vextractf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c index eaab6fd775b..daea7b0ea81 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c @@ -17,6 +17,6 @@ avx_test (void) d[i] = c[i] * 20.0; } -/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */ +/* { dg-final { scan-assembler-not "avx_movupd256/2" } } */ /* { dg-final { scan-assembler "movupd.*\\*avx_movv2df_internal/3" } } */ /* { dg-final { scan-assembler "vextractf128" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c index 96cca66ae9c..39b6f3bef16 100644 --- a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c +++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c @@ -14,7 +14,7 @@ avx_test (void) b[i+3] = a[i] * c[i]; } -/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */ -/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */ +/* { dg-final { scan-assembler "avx_movups256/2" } } */ +/* { dg-final { scan-assembler-not "avx_movups/2" } } */ /* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */ /* { dg-final { scan-assembler-not "vextractf128" } } */ -- cgit v1.2.1 From d14b16d1f709c9622363b43a928d25748a09accb Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 15 May 2012 00:16:53 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187491 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 19d9b8eeab6..a1ede540d11 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120514 +20120515 -- cgit v1.2.1 From fae78f9d7ca6ff758ab2249747df1116834dd1d5 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 16 May 2012 00:17:06 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187571 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a1ede540d11..ebf0b49a9b0 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120515 +20120516 -- cgit v1.2.1 From dfcf96d297ed1c2f3fe7c7cba92488e85a31c00e Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 16 May 2012 09:19:25 +0000 Subject: * configure: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187583 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/configure | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4563e0aa44b..d124eb64ad0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-05-16 Eric Botcazou + + * configure: Regenerate. + 2012-05-14 Uros Bizjak PR target/46098 diff --git a/gcc/configure b/gcc/configure index 1960d5a845a..ac7145ac259 100755 --- a/gcc/configure +++ b/gcc/configure @@ -4842,7 +4842,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5 $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; } -if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then +if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then have_gnat=yes else have_gnat=no -- cgit v1.2.1 From f18a5fd3e4ec05a44d99de1a10abbf4a9d32a6fc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 17 May 2012 00:16:58 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187618 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ebf0b49a9b0..c649d212b01 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120516 +20120517 -- cgit v1.2.1 From ca1fbdbbaa361fc69d6b4cd148cf3387d607f5f3 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 18 May 2012 00:17:49 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187644 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c649d212b01..b10c437f1a3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120517 +20120518 -- cgit v1.2.1 From b296390922212f729d81fa91e2bf70f180f28920 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 19 May 2012 00:17:34 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187672 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b10c437f1a3..5e52f57b8a4 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120518 +20120519 -- cgit v1.2.1 From a2cf30db2d4f35a05b88e146775e352ddf34ba16 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 20 May 2012 00:17:40 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187686 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5e52f57b8a4..ecef5db1c97 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120519 +20120520 -- cgit v1.2.1 From ae16f38bcb37099c2d06bd375891820259206b61 Mon Sep 17 00:00:00 2001 From: hjl Date: Sun, 20 May 2012 23:19:40 +0000 Subject: Add RDRND, F16C and FSGSBASE support to -march=native Backport from mainline * config/i386/driver-i386.c (host_detect_local_cpu): Support RDRND, F16C and FSGSBASE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187698 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/i386/driver-i386.c | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d124eb64ad0..a4eb0e6f197 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-05-20 H.J. Lu + + Backport from mainline + 2012-05-20 H.J. Lu + + * config/i386/driver-i386.c (host_detect_local_cpu): Support + RDRND, F16C and FSGSBASE. + 2012-05-16 Eric Botcazou * configure: Regenerate. diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 0b5fd99d4d0..1871ae48504 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -397,6 +397,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) unsigned int has_pclmul = 0, has_abm = 0, has_lwp = 0; unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0; unsigned int has_bmi = 0, has_tbm = 0; + unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0; bool arch; @@ -444,6 +445,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) has_aes = ecx & bit_AES; has_pclmul = ecx & bit_PCLMUL; has_fma = ecx & bit_FMA; + has_f16c = ecx & bit_F16C; + has_rdrnd = ecx & bit_RDRND; has_cmpxchg8b = edx & bit_CMPXCHG8B; has_cmov = edx & bit_CMOV; @@ -451,6 +454,13 @@ const char *host_detect_local_cpu (int argc, const char **argv) has_sse = edx & bit_SSE; has_sse2 = edx & bit_SSE2; + if (max_level >= 7) + { + __cpuid_count (7, 0, eax, ebx, ecx, edx); + + has_fsgsbase = ebx & bit_FSGSBASE; + } + /* Check cpuid level of extended features. */ __cpuid (0x80000000, ext_level, ebx, ecx, edx); @@ -711,10 +721,13 @@ const char *host_detect_local_cpu (int argc, const char **argv) const char *avx = has_avx ? " -mavx" : " -mno-avx"; const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-sse4.2"; const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1"; + const char *rdrnd = has_rdrnd ? " -mrdrnd" : " -mno-rdrnd"; + const char *f16c = has_f16c ? " -mf16c" : " -mno-f16c"; + const char *fsgsbase = has_fsgsbase ? " -mfsgsbase" : " -mno-fsgsbase"; options = concat (options, cx16, sahf, movbe, ase, pclmul, popcnt, abm, lwp, fma, fma4, xop, bmi, tbm, - avx, sse4_2, sse4_1, NULL); + avx, sse4_2, sse4_1, rdrnd, f16c, fsgsbase, NULL); } done: -- cgit v1.2.1 From fc206018c5c5db74eb5a6cf289b2611ad053544b Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 21 May 2012 00:17:42 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187701 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ecef5db1c97..794415bdc5a 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120520 +20120521 -- cgit v1.2.1 From 0644e52d9cd1db02c079c296905bc2b087a6d640 Mon Sep 17 00:00:00 2001 From: hjl Date: Mon, 21 May 2012 12:59:53 +0000 Subject: Use unspec_volatile on rdrand_1 gcc/ Backport from mainline PR target/53416 * config/i386/i386.md (UNSPEC_RDRAND): Renamed to ... (UNSPECV_RDRAND): This. (rdrand_1): Updated. gcc/testsuite/ Backport from mainline PR target/53416 * gcc.target/i386/pr53416.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187712 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/i386.md | 10 +++++----- gcc/testsuite/ChangeLog | 9 +++++++++ gcc/testsuite/gcc.target/i386/pr53416.c | 17 +++++++++++++++++ 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr53416.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4eb0e6f197..89d9a2f4404 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-05-21 H.J. Lu + + Backport from mainline + 2012-05-21 H.J. Lu + + PR target/53416 + * config/i386/i386.md (UNSPEC_RDRAND): Renamed to ... + (UNSPECV_RDRAND): This. + (rdrand_1): Updated. + 2012-05-20 H.J. Lu Backport from mainline diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 42efde0d58e..c2db9cece5a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -233,9 +233,6 @@ ;; For BMI support UNSPEC_BEXTR - - ;; For RDRAND support - UNSPEC_RDRAND ]) (define_c_enum "unspecv" [ @@ -270,6 +267,9 @@ UNSPECV_WRFSBASE UNSPECV_WRGSBASE UNSPECV_SPLIT_STACK_RETURN + + ;; For RDRAND support + UNSPECV_RDRAND ]) ;; Constants to represent pcomtrue/pcomfalse variants @@ -18358,9 +18358,9 @@ (define_insn "rdrand_1" [(set (match_operand:SWI248 0 "register_operand" "=r") - (unspec:SWI248 [(const_int 0)] UNSPEC_RDRAND)) + (unspec_volatile:SWI248 [(const_int 0)] UNSPECV_RDRAND)) (set (reg:CCC FLAGS_REG) - (unspec:CCC [(const_int 0)] UNSPEC_RDRAND))] + (unspec_volatile:CCC [(const_int 0)] UNSPECV_RDRAND))] "TARGET_RDRND" "rdrand\t%0" [(set_attr "type" "other") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 327205980e6..bf146b83e52 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-05-21 H.J. Lu + + Backport from mainline + 2012-05-21 Uros Bizjak + H.J. Lu + + PR target/53416 + * gcc.target/i386/pr53416.c: New file. + 2012-05-14 Uros Bizjak * gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings. diff --git a/gcc/testsuite/gcc.target/i386/pr53416.c b/gcc/testsuite/gcc.target/i386/pr53416.c new file mode 100644 index 00000000000..68abe8bddbc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr53416.c @@ -0,0 +1,17 @@ +/* PR target/53416 */ +/* { dg-options "-O2 -mrdrnd" } */ + +int test (void) +{ + unsigned int number = 0; + int result0, result1, result2, result3; + + result0 = __builtin_ia32_rdrand32_step (&number); + result1 = __builtin_ia32_rdrand32_step (&number); + result2 = __builtin_ia32_rdrand32_step (&number); + result3 = __builtin_ia32_rdrand32_step (&number); + + return result0 + result1 +result2 + result3; +} + +/* { dg-final { scan-assembler-times "rdrand" 4 } } */ -- cgit v1.2.1 From dc37235be334ab1ad7abba558f0961e5d4a2a1ed Mon Sep 17 00:00:00 2001 From: jsm28 Date: Mon, 21 May 2012 20:12:05 +0000 Subject: PR c/53418 * c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR from folded operands before wrapping another around the conditional expression. testsuite: * gcc.c-torture/compile/pr53418-1.c, gcc.c-torture/compile/pr53418-2.c: New tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187736 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/c-typeck.c | 5 +++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.c-torture/compile/pr53418-1.c | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr53418-2.c | 5 +++++ 5 files changed, 28 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr53418-1.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr53418-2.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 89d9a2f4404..ca2386388a2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-05-21 Joseph Myers + + PR c/53418 + * c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR + from folded operands before wrapping another around the + conditional expression. + 2012-05-21 H.J. Lu Backport from mainline diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index cd68a05a6cf..22d93a041c2 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -4315,6 +4315,11 @@ build_conditional_expr (location_t colon_loc, tree ifexp, bool ifexp_bcp, ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2); else { + if (int_operands) + { + op1 = remove_c_maybe_const_expr (op1); + op2 = remove_c_maybe_const_expr (op2); + } ret = build3 (COND_EXPR, result_type, ifexp, op1, op2); if (int_operands) ret = note_integer_operands (ret); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bf146b83e52..dc2d3736da0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-05-21 Joseph Myers + + PR c/53418 + * gcc.c-torture/compile/pr53418-1.c, + gcc.c-torture/compile/pr53418-2.c: New tests. + 2012-05-21 H.J. Lu Backport from mainline diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c b/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c new file mode 100644 index 00000000000..721b02d7878 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c @@ -0,0 +1,5 @@ +void +f (void) +{ + int i = (0 ? 1 : 0U / 0); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c b/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c new file mode 100644 index 00000000000..a437b6a0e62 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c @@ -0,0 +1,5 @@ +void +f (void) +{ + int i = (1 ? 0U / 0 : 1); +} -- cgit v1.2.1 From 90bd6b11c27eed1fc1056e429d072b7ba9eb09c6 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 22 May 2012 00:17:36 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187753 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 794415bdc5a..1bb7abc8443 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120521 +20120522 -- cgit v1.2.1 From 3ea6c933ffe6e11c42895e7370d7094660f457b6 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 22 May 2012 09:17:42 +0000 Subject: 2012-05-22 Richard Guenther Backport from mainline 2012-04-12 Richard Guenther PR c/52862 * convert.c (convert_to_pointer): Remove special-casing of zero. * gcc.dg/pr52862.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187762 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/convert.c | 5 ----- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/pr52862.c | 9 +++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr52862.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca2386388a2..2d96e00c1e9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-05-22 Richard Guenther + + Backport from mainline + 2012-04-12 Richard Guenther + + PR c/52862 + * convert.c (convert_to_pointer): Remove special-casing of + zero. + 2012-05-21 Joseph Myers PR c/53418 diff --git a/gcc/convert.c b/gcc/convert.c index 21d09c157eb..765c542dbdb 100644 --- a/gcc/convert.c +++ b/gcc/convert.c @@ -44,11 +44,6 @@ convert_to_pointer (tree type, tree expr) if (TREE_TYPE (expr) == type) return expr; - /* Propagate overflow to the NULL pointer. */ - if (integer_zerop (expr)) - return force_fit_type_double (type, double_int_zero, 0, - TREE_OVERFLOW (expr)); - switch (TREE_CODE (TREE_TYPE (expr))) { case POINTER_TYPE: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dc2d3736da0..710bcf6378f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-05-22 Richard Guenther + + Backport from mainline + 2012-04-12 Richard Guenther + + PR c/52862 + * gcc.dg/pr52862.c: New testcase. + 2012-05-21 Joseph Myers PR c/53418 diff --git a/gcc/testsuite/gcc.dg/pr52862.c b/gcc/testsuite/gcc.dg/pr52862.c new file mode 100644 index 00000000000..febe7a8289b --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr52862.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +void ASMAtomicWritePtrVoid(const void *pv); +void rtThreadDestroy(void) +{ + void * const pvTypeChecked = ((void *)0); + ASMAtomicWritePtrVoid((void *)(pvTypeChecked)); +} -- cgit v1.2.1 From ad15f47da76a00539692a2e7fa5369585e651719 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 22 May 2012 09:20:15 +0000 Subject: 2012-05-22 Richard Guenther Backport from mainline 2012-02-28 Richard Guenther PR target/52407 * config/i386/i386.c (ix86_expand_vector_set): Fix element ordering for the VEC_CONCAT for two element vectors for V2SFmode, V2SImode and V2DImode. * gcc.dg/torture/pr52407.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187763 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/i386.c | 8 ++++---- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/torture/pr52407.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr52407.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2d96e00c1e9..804d20f6826 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-05-22 Richard Guenther + + Backport from mainline + 2012-02-28 Richard Guenther + + PR target/52407 + * config/i386/i386.c (ix86_expand_vector_set): Fix element + ordering for the VEC_CONCAT for two element vectors for + V2SFmode, V2SImode and V2DImode. + 2012-05-22 Richard Guenther Backport from mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 9e2d66cd9ca..0b20d2c1242 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -31430,9 +31430,9 @@ ix86_expand_vector_set (bool mmx_ok, rtx target, rtx val, int elt) tmp = gen_reg_rtx (GET_MODE_INNER (mode)); ix86_expand_vector_extract (true, tmp, target, 1 - elt); if (elt == 0) - tmp = gen_rtx_VEC_CONCAT (mode, tmp, val); - else tmp = gen_rtx_VEC_CONCAT (mode, val, tmp); + else + tmp = gen_rtx_VEC_CONCAT (mode, tmp, val); emit_insn (gen_rtx_SET (VOIDmode, target, tmp)); return; } @@ -31446,9 +31446,9 @@ ix86_expand_vector_set (bool mmx_ok, rtx target, rtx val, int elt) tmp = gen_reg_rtx (GET_MODE_INNER (mode)); ix86_expand_vector_extract (false, tmp, target, 1 - elt); if (elt == 0) - tmp = gen_rtx_VEC_CONCAT (mode, tmp, val); - else tmp = gen_rtx_VEC_CONCAT (mode, val, tmp); + else + tmp = gen_rtx_VEC_CONCAT (mode, tmp, val); emit_insn (gen_rtx_SET (VOIDmode, target, tmp)); return; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 710bcf6378f..c553b926c20 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-05-22 Richard Guenther + + Backport from mainline + 2012-02-28 Richard Guenther + + PR target/52407 + * gcc.dg/torture/pr52407.c: New testcase. + 2012-05-22 Richard Guenther Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr52407.c b/gcc/testsuite/gcc.dg/torture/pr52407.c new file mode 100644 index 00000000000..bb95e51f25b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr52407.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ + +extern void abort (void); + +typedef long long T; +typedef T vl_t __attribute__((vector_size(2 * sizeof (T)))); + +vl_t ul[4], vl[4] = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; + +static void +mul_vl_l(vl_t *u, vl_t *v, T x, int m) +{ + vl_t w; + T *p = (T *)&w; + p[0] = p[1] = x; + while (m--) + *u++ = *v++ * w; +} + +int +main(int argc, char *argv[]) +{ + int i; + T *pl; + + pl = (T *) &ul; + mul_vl_l(ul, vl, 2, 4); + for (i = 0; i < 8; i++) + if (pl[i] != 2 * (i + 1)) + abort (); + + return 0; +} -- cgit v1.2.1 From 3d5d40ab1a65ffee473c3781e1af5fc0b317c22d Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 22 May 2012 09:23:01 +0000 Subject: 2012-05-22 Richard Guenther Backport from mainline 2011-11-10 Richard Guenther PR middle-end/51071 * gimple.c (gimple_has_side_effects): Remove checking code that doesn't belong here. * gcc.dg/torture/pr51071.c: New testcase. * gcc.dg/torture/pr51071-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187764 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++ gcc/gimple.c | 40 ++++---------------------------- gcc/testsuite/ChangeLog | 9 +++++++ gcc/testsuite/gcc.dg/torture/pr51071-2.c | 38 ++++++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/torture/pr51071.c | 33 ++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 36 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr51071-2.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr51071.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 804d20f6826..18396fa29e2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-05-22 Richard Guenther + + Backport from mainline + 2011-11-10 Richard Guenther + + PR middle-end/51071 + * gimple.c (gimple_has_side_effects): Remove checking code + that doesn't belong here. + 2012-05-22 Richard Guenther Backport from mainline diff --git a/gcc/gimple.c b/gcc/gimple.c index bf8cc07e490..12ff7f63995 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -2275,8 +2275,6 @@ gimple_set_modified (gimple s, bool modifiedp) bool gimple_has_side_effects (const_gimple s) { - unsigned i; - if (is_gimple_debug (s)) return false; @@ -2292,45 +2290,15 @@ gimple_has_side_effects (const_gimple s) if (is_gimple_call (s)) { - unsigned nargs = gimple_call_num_args (s); + int flags = gimple_call_flags (s); - if (!(gimple_call_flags (s) & (ECF_CONST | ECF_PURE))) - return true; - else if (gimple_call_flags (s) & ECF_LOOPING_CONST_OR_PURE) - /* An infinite loop is considered a side effect. */ + /* An infinite loop is considered a side effect. */ + if (!(flags & (ECF_CONST | ECF_PURE)) + || (flags & ECF_LOOPING_CONST_OR_PURE)) return true; - if (gimple_call_lhs (s) - && TREE_SIDE_EFFECTS (gimple_call_lhs (s))) - { - gcc_checking_assert (gimple_has_volatile_ops (s)); - return true; - } - - if (TREE_SIDE_EFFECTS (gimple_call_fn (s))) - return true; - - for (i = 0; i < nargs; i++) - if (TREE_SIDE_EFFECTS (gimple_call_arg (s, i))) - { - gcc_checking_assert (gimple_has_volatile_ops (s)); - return true; - } - return false; } - else - { - for (i = 0; i < gimple_num_ops (s); i++) - { - tree op = gimple_op (s, i); - if (op && TREE_SIDE_EFFECTS (op)) - { - gcc_checking_assert (gimple_has_volatile_ops (s)); - return true; - } - } - } return false; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c553b926c20..7e11c70fe82 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-05-22 Richard Guenther + + Backport from mainline + 2011-11-10 Richard Guenther + + PR middle-end/51071 + * gcc.dg/torture/pr51071.c: New testcase. + * gcc.dg/torture/pr51071-2.c: Likewise. + 2012-05-22 Richard Guenther Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr51071-2.c b/gcc/testsuite/gcc.dg/torture/pr51071-2.c new file mode 100644 index 00000000000..f66a89f3958 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr51071-2.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-options "-fno-delete-null-pointer-checks" } */ + +extern struct module __this_module; +static inline void +trace_module_get (struct module *mod, unsigned long ip) { } +struct module; +static inline __attribute__((no_instrument_function)) +int try_module_get(struct module *module) +{ + int ret = 1; + if (module) + { + if (module_is_live(module)) + { + __label__ __here; + asm(""); + __here: + trace_module_get(module, (unsigned long)&&__here); + } + else + ret = 0; + } + return ret; +} +struct net_device; +struct net_device_ops { + int (*ndo_open)(struct net_device *dev); +}; +int t3e3_open(struct net_device *dev) +{ + int ret = hdlc_open(dev); + if (ret) + return ret; + try_module_get((&__this_module)); + return 0; +} +const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open }; diff --git a/gcc/testsuite/gcc.dg/torture/pr51071.c b/gcc/testsuite/gcc.dg/torture/pr51071.c new file mode 100644 index 00000000000..99af9587d05 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr51071.c @@ -0,0 +1,33 @@ +/* { dg-do compile } */ + +void foo (void); +void bar (void *); +extern int t; + +static void kmalloc_large (int size, int flags) +{ + (void) size; + (void) flags; + foo (); + bar (({__here:&&__here;})); +} + +static void kmalloc (int size, int flags) +{ + if (size) + { + if ((unsigned long) size > 0x1000) + kmalloc_large (size, flags); + + if (flags) + bar (({__here:&&__here;})); + } +} + +void compress_file_range (int i, int j, int k) +{ + int nr_pages = ({j < k;}); + + if (i || t) + kmalloc (0x1000UL * nr_pages, 0x40UL); +} -- cgit v1.2.1 From cd9ec58399c9772b28c407e9dd6e3636f28923c3 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 23 May 2012 00:17:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187786 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1bb7abc8443..b4f701c6b37 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120522 +20120523 -- cgit v1.2.1 From 15fcaa3a11c523cea90962668b757d30714cc3e9 Mon Sep 17 00:00:00 2001 From: burnus Date: Wed, 23 May 2012 19:13:27 +0000 Subject: 2012-05-23 Tobias Burnus PR fortran/53389 * trans-array.c (gfc_add_loop_ss_code): Don't evaluate expression, if ss->is_alloc_lhs is set. 2012-05-23 Tobias Burnus PR fortran/53389 * gfortran.dg/realloc_on_assign_15.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187810 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++ gcc/fortran/trans-array.c | 5 +++ gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 | 40 ++++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b5789984b5f..e9d912eb6cf 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-05-23 Tobias Burnus + + PR fortran/53389 + * trans-array.c (gfc_add_loop_ss_code): Don't evaluate + expression, if ss->is_alloc_lhs is set. + 2012-05-02 Tobias Burnus Backport from mainline diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index a4be6e7b165..d0d0900eb1d 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -2056,6 +2056,11 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript, gfc_se se; int n; + /* Don't evaluate the arguments for realloc_lhs_loop_for_fcn_call; otherwise, + arguments could get evaluated multiple times. */ + if (ss->is_alloc_lhs) + return; + /* TODO: This can generate bad code if there are ordering dependencies, e.g., a callee allocated function and an unknown size constructor. */ gcc_assert (ss != NULL); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e11c70fe82..e342cb81f84 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-23 Tobias Burnus + + PR fortran/53389 + * gfortran.dg/realloc_on_assign_15.f90: New. + 2012-05-22 Richard Guenther Backport from mainline diff --git a/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 b/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 new file mode 100644 index 00000000000..2a0e5be9101 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 @@ -0,0 +1,40 @@ +! { dg-do run } +! +! PR fortran/53389 +! +! The program was leaking memory before due to +! realloc on assignment and nested functions. +! +module foo + implicit none + contains + + function filler(array, val) + real, dimension(:), intent(in):: array + real, dimension(size(array)):: filler + real, intent(in):: val + + filler=val + + end function filler +end module + +program test + use foo + implicit none + + real, dimension(:), allocatable:: x, y + integer, parameter:: N=1000 !*1000 + integer:: i + +! allocate( x(N) ) + allocate( y(N) ) + y=0.0 + + do i=1, N +! print *,i + x=filler(filler(y, real(2*i)), real(i)) + y=y+x + end do + +end program test -- cgit v1.2.1 From 954f6c0b3514b0bca133d24827349762d11cd0fc Mon Sep 17 00:00:00 2001 From: michaelh Date: Wed, 23 May 2012 21:29:55 +0000 Subject: 2012-05-23 Michael Hope PR c++/PR52796 * g++.dg/cpp0x/variadic-value1.C: Change selector for explicit options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187813 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/cpp0x/variadic-value1.C | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e342cb81f84..1b2cdf9c7df 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-05-23 Michael Hope + + PR c++/PR52796 + * g++.dg/cpp0x/variadic-value1.C: Change selector for explicit + options. + 2012-05-23 Tobias Burnus PR fortran/53389 diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C b/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C index 179919a5bc7..301bd54631c 100644 --- a/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C +++ b/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C @@ -1,5 +1,5 @@ // PR c++/52796 -// { dg-do run { target c++11 } } +// { dg-options "-std=c++0x -pedantic-errors" } inline void *operator new(__SIZE_TYPE__ s, void *p) { return p; } -- cgit v1.2.1 From 69062d3b739fc7e1d2f0d0550db959f753a38086 Mon Sep 17 00:00:00 2001 From: michaelh Date: Wed, 23 May 2012 21:34:50 +0000 Subject: Fix the PR entry in the ChangeLog. Should be: 2012-05-23 Michael Hope PR c++/52796 * g++.dg/cpp0x/variadic-value1.C: Change selector for explicit options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187816 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1b2cdf9c7df..fdc917250c1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,6 @@ 2012-05-23 Michael Hope - PR c++/PR52796 + PR c++/52796 * g++.dg/cpp0x/variadic-value1.C: Change selector for explicit options. -- cgit v1.2.1 From b991d7fa9f1b69a8b636205116ee40e9f3e7eee0 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 24 May 2012 00:17:47 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187820 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b4f701c6b37..6b2e3b7369e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120523 +20120524 -- cgit v1.2.1 From 2615b7dc58222932218117aa76122fd4526eb1ea Mon Sep 17 00:00:00 2001 From: wschmidt Date: Thu, 24 May 2012 13:52:56 +0000 Subject: 2012-05-24 Bill Schmidt Backport from mainline 2012-05-18 Bill Schmidt PR target/53385 * config/rs6000/rs6000.c (print_operand): Revise code that unsafely relied on signed overflow behavior. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187834 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/rs6000.c | 28 +++++----------------------- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 18396fa29e2..9be8483f8ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-05-24 Bill Schmidt + + Backport from mainline + 2012-05-18 Bill Schmidt + + PR target/53385 + * config/rs6000/rs6000.c (print_operand): Revise code that unsafely + relied on signed overflow behavior. + 2012-05-22 Richard Guenther Backport from mainline diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5c101a51aff..36aba430eb9 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -15822,7 +15822,6 @@ void print_operand (FILE *file, rtx x, int code) { int i; - HOST_WIDE_INT val; unsigned HOST_WIDE_INT uval; switch (code) @@ -16263,34 +16262,17 @@ print_operand (FILE *file, rtx x, int code) case 'W': /* MB value for a PowerPC64 rldic operand. */ - val = (GET_CODE (x) == CONST_INT - ? INTVAL (x) : CONST_DOUBLE_HIGH (x)); - - if (val < 0) - i = -1; - else - for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++) - if ((val <<= 1) < 0) - break; + i = clz_hwi (GET_CODE (x) == CONST_INT + ? INTVAL (x) : CONST_DOUBLE_HIGH (x)); #if HOST_BITS_PER_WIDE_INT == 32 - if (GET_CODE (x) == CONST_INT && i >= 0) + if (GET_CODE (x) == CONST_INT && i > 0) i += 32; /* zero-extend high-part was all 0's */ else if (GET_CODE (x) == CONST_DOUBLE && i == 32) - { - val = CONST_DOUBLE_LOW (x); - - gcc_assert (val); - if (val < 0) - --i; - else - for ( ; i < 64; i++) - if ((val <<= 1) < 0) - break; - } + i = clz_hwi (CONST_DOUBLE_LOW (x)) + 32; #endif - fprintf (file, "%d", i + 1); + fprintf (file, "%d", i); return; case 'x': -- cgit v1.2.1 From c9c4278dea1a0dd42d09e30344b54c192be2043f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 25 May 2012 00:17:05 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187863 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6b2e3b7369e..52f4455ab0d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120524 +20120525 -- cgit v1.2.1 From c4b7793509c0d7f5868857910cd5c84225886abc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 26 May 2012 00:17:45 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187904 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 52f4455ab0d..507b92b695d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120525 +20120526 -- cgit v1.2.1 From cf611e7a7b7e7ea02fe28d89bcca4673fd966fc6 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Sat, 26 May 2012 10:44:06 +0000 Subject: * gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'. (build_variant_list): Adjust to above renaming. (gnat_to_gnu_entity) : Likewise. Give a unique name to the type of the variant containers. (create_variant_part_from): Likewise. Give a unique name to the type of the variant part. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187910 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 9 +++++++++ gcc/ada/gcc-interface/decl.c | 23 +++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index f3c535fd1ba..ec6af72bd9c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,12 @@ +2012-05-26 Eric Botcazou + + * gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'. + (build_variant_list): Adjust to above renaming. + (gnat_to_gnu_entity) : Likewise. Give a unique name + to the type of the variant containers. + (create_variant_part_from): Likewise. Give a unique name to the type + of the variant part. + 2012-03-01 Release Manager * GCC 4.6.3 released. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 9c6831013f8..2394834252f 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -120,8 +120,8 @@ typedef struct variant_desc_d { /* The value of the qualifier. */ tree qual; - /* The record associated with this variant. */ - tree record; + /* The type of the variant after transformation. */ + tree new_type; } variant_desc; DEF_VEC_O(variant_desc); @@ -3157,11 +3157,16 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) { tree old_variant = v->type; tree new_variant = make_node (RECORD_TYPE); + tree suffix + = concat_name (DECL_NAME (gnu_variant_part), + IDENTIFIER_POINTER + (DECL_NAME (v->field))); TYPE_NAME (new_variant) - = DECL_NAME (TYPE_NAME (old_variant)); + = concat_name (TYPE_NAME (gnu_type), + IDENTIFIER_POINTER (suffix)); copy_and_substitute_in_size (new_variant, old_variant, gnu_subst_list); - v->record = new_variant; + v->new_type = new_variant; } } else @@ -3265,7 +3270,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) if (selected_variant) gnu_cont_type = gnu_type; else - gnu_cont_type = v->record; + gnu_cont_type = v->new_type; } else /* The front-end may pass us "ghost" components if @@ -7704,7 +7709,7 @@ build_variant_list (tree qual_union_type, VEC(subst_pair,heap) *subst_list, v->type = variant_type; v->field = gnu_field; v->qual = qual; - v->record = NULL_TREE; + v->new_type = NULL_TREE; /* Recurse on the variant subpart of the variant, if any. */ variant_subpart = get_variant_part (variant_type); @@ -8457,7 +8462,9 @@ create_variant_part_from (tree old_variant_part, /* First create the type of the variant part from that of the old one. */ new_union_type = make_node (QUAL_UNION_TYPE); - TYPE_NAME (new_union_type) = DECL_NAME (TYPE_NAME (old_union_type)); + TYPE_NAME (new_union_type) + = concat_name (TYPE_NAME (record_type), + IDENTIFIER_POINTER (DECL_NAME (old_variant_part))); /* If the position of the variant part is constant, subtract it from the size of the type of the parent to get the new size. This manual CSE @@ -8491,7 +8498,7 @@ create_variant_part_from (tree old_variant_part, continue; /* Retrieve the list of fields already added to the new variant. */ - new_variant = v->record; + new_variant = v->new_type; field_list = TYPE_FIELDS (new_variant); /* If the old variant had a variant subpart, we need to create a new -- cgit v1.2.1 From 656d0ac9af113f92c44800924cfe93de8be84125 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 27 May 2012 00:17:01 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187919 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 507b92b695d..da94e122ae9 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120526 +20120527 -- cgit v1.2.1 From 42007bb0d85a8cdb2668c59ead78f4ff9dfc05d6 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 28 May 2012 00:17:13 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187925 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index da94e122ae9..0a67b502ee8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120527 +20120528 -- cgit v1.2.1 From ee42f7f2a55fb372415cd76fcb235ecab9179d25 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 29 May 2012 00:17:07 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187939 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 0a67b502ee8..0353f11c42f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120528 +20120529 -- cgit v1.2.1 From 2b9d9e45d3e2de435b4a27dd0602b1196e861ca7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 30 May 2012 00:17:14 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@187996 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 0353f11c42f..f41b29c06d5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120529 +20120530 -- cgit v1.2.1 From 1a5cdb2e17c4212d05f73da2b082cb8d5f4ba4dc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 31 May 2012 00:16:59 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188037 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f41b29c06d5..8e37708f2e6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120530 +20120531 -- cgit v1.2.1 From 3ff84a0ae3e3416c524d77bb84f47a98ec1e0246 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 31 May 2012 15:03:37 +0000 Subject: 2012-05-31 Richard Guenther PR middle-end/53541 * tree-pretty-print.c (dump_generic_node): Guard against NULL_TREE TREE_TYPE when dumping MEM_REF offset type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188066 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/tree-pretty-print.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9be8483f8ca..24a9a04c42c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-31 Richard Guenther + + PR middle-end/53541 + * tree-pretty-print.c (dump_generic_node): Guard against + NULL_TREE TREE_TYPE when dumping MEM_REF offset type. + 2012-05-24 Bill Schmidt Backport from mainline diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 12ef38817eb..b9e39af9159 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -805,6 +805,8 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags, infer them and MEM_ATTR caching will share MEM_REFs with differently-typed op0s. */ && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST + /* Released SSA_NAMES have no TREE_TYPE. */ + && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE /* Same pointer types, but ignoring POINTER_TYPE vs. REFERENCE_TYPE. */ && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0))) @@ -1171,6 +1173,8 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags, can't infer them and MEM_ATTR caching will share MEM_REFs with differently-typed op0s. */ && TREE_CODE (TREE_OPERAND (op0, 0)) != INTEGER_CST + /* Released SSA_NAMES have no TREE_TYPE. */ + && TREE_TYPE (TREE_OPERAND (op0, 0)) != NULL_TREE /* Same pointer types, but ignoring POINTER_TYPE vs. REFERENCE_TYPE. */ && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0))) -- cgit v1.2.1 From b2855272bfcffc7c3bc97a866d4624470dcf6d43 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 1 Jun 2012 00:17:17 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188092 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8e37708f2e6..aeed0571740 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120531 +20120601 -- cgit v1.2.1 From 567b6053bd06322791b565e7482346fa4c288de8 Mon Sep 17 00:00:00 2001 From: burnus Date: Fri, 1 Jun 2012 20:06:39 +0000 Subject: 2012-06-01 Tobias Burnus PR fortran/53521 * trans.c (gfc_deallocate_scalar_with_status): Properly handle the case size == 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188124 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans.c | 14 +------------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e9d912eb6cf..c5654f63b69 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-06-01 Tobias Burnus + + PR fortran/53521 + * trans.c (gfc_deallocate_scalar_with_status): Properly + handle the case size == 0. + 2012-05-23 Tobias Burnus PR fortran/53389 diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 27a352ab3bd..0dc82409833 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1005,15 +1005,12 @@ internal_realloc (void *mem, size_t size) if (!res && size != 0) _gfortran_os_error ("Allocation would exceed memory limit"); - if (size == 0) - return NULL; - return res; } */ tree gfc_call_realloc (stmtblock_t * block, tree mem, tree size) { - tree msg, res, nonzero, zero, null_result, tmp; + tree msg, res, nonzero, null_result, tmp; tree type = TREE_TYPE (mem); size = gfc_evaluate_now (size, block); @@ -1044,15 +1041,6 @@ gfc_call_realloc (stmtblock_t * block, tree mem, tree size) build_empty_stmt (input_location)); gfc_add_expr_to_block (block, tmp); - /* if (size == 0) then the result is NULL. */ - tmp = fold_build2_loc (input_location, MODIFY_EXPR, type, res, - build_int_cst (type, 0)); - zero = fold_build1_loc (input_location, TRUTH_NOT_EXPR, boolean_type_node, - nonzero); - tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, zero, tmp, - build_empty_stmt (input_location)); - gfc_add_expr_to_block (block, tmp); - return res; } -- cgit v1.2.1 From ab3d5397faad59fc7e85243dbd270ee439abeb51 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 2 Jun 2012 00:17:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188131 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index aeed0571740..ee0672cce0c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120601 +20120602 -- cgit v1.2.1 From f70b010da1e85a2042bb96127982d5591ac98701 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 3 Jun 2012 00:16:58 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188144 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ee0672cce0c..1681ae64773 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120602 +20120603 -- cgit v1.2.1 From 2cec7bca186bb6f4035ffafe3d91a44933bf9e22 Mon Sep 17 00:00:00 2001 From: danglin Date: Sun, 3 Jun 2012 12:41:02 +0000 Subject: PR target/52999 * config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define. (pa_section_type_flags): New. * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Revert previous change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188150 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/pa/pa.c | 23 +++++++++++++++++++++++ gcc/config/pa/pa.h | 3 ++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 24a9a04c42c..0fd9ac9ecf1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-06-03 John David Anglin + + PR target/52999 + * config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define. + (pa_section_type_flags): New. + * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Revert previous change. + 2012-05-31 Richard Guenther PR middle-end/53541 diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 5e5a0f05b79..6f67ca8ea34 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -185,6 +185,7 @@ static bool pa_can_eliminate (const int, const int); static void pa_conditional_register_usage (void); static enum machine_mode pa_c_mode_for_suffix (char); static section *pa_function_section (tree, enum node_frequency, bool, bool); +static unsigned int pa_section_type_flags (tree, const char *, int); /* The following extra sections are only used for SOM. */ static GTY(()) section *som_readonly_data_section; @@ -400,6 +401,9 @@ static const struct default_options pa_option_optimization_table[] = #undef TARGET_ASM_FUNCTION_SECTION #define TARGET_ASM_FUNCTION_SECTION pa_function_section +#undef TARGET_SECTION_TYPE_FLAGS +#define TARGET_SECTION_TYPE_FLAGS pa_section_type_flags + struct gcc_target targetm = TARGET_INITIALIZER; /* Parse the -mfixed-range= option string. */ @@ -10431,4 +10435,23 @@ pa_function_section (tree decl, enum node_frequency freq, return default_function_section (decl, freq, startup, exit); } +/* Implement TARGET_SECTION_TYPE_FLAGS. */ + +static unsigned int +pa_section_type_flags (tree decl, const char *name, int reloc) +{ + unsigned int flags; + + flags = default_section_type_flags (decl, name, reloc); + + /* Function labels are placed in the constant pool. This can + cause a section conflict if decls are put in ".data.rel.ro" + or ".data.rel.ro.local" using the __attribute__ construct. */ + if (strcmp (name, ".data.rel.ro") == 0 + || strcmp (name, ".data.rel.ro.local") == 0) + flags |= SECTION_WRITE | SECTION_RELRO; + + return flags; +} + #include "gt-pa.h" diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 6c587941b5a..012186854de 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -859,7 +859,8 @@ extern int may_call_alloca; || reload_in_progress \ || reload_completed \ || LEGITIMATE_64BIT_CONST_INT_P (INTVAL (X)) \ - || cint_ok_for_move (INTVAL (X)))) + || cint_ok_for_move (INTVAL (X))) \ + && !function_label_operand (X, VOIDmode)) /* Target flags set on a symbol_ref. */ -- cgit v1.2.1 From 02e029154b3f93cb6470fdd56f50d3da93c6be71 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 4 Jun 2012 00:17:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188158 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1681ae64773..5a98e0ec492 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120603 +20120604 -- cgit v1.2.1 From 7e5b30195f6dfa960a0473afbe56aa6253923ebb Mon Sep 17 00:00:00 2001 From: gjl Date: Mon, 4 Jun 2012 09:53:04 +0000 Subject: Backport from 2012-06-04 mainline r188172 PR target/46261 * config/avr/avr-stdint.h: New file. * config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of newlib-stdint.h git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188174 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++ gcc/config.gcc | 2 +- gcc/config/avr/avr-stdint.h | 66 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 gcc/config/avr/avr-stdint.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0fd9ac9ecf1..c110798b490 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-06-04 Georg-Johann Lay + + Backport from 2012-06-04 mainline r188172 + + PR target/46261 + * config/avr/avr-stdint.h: New file. + * config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of + newlib-stdint.h + 2012-06-03 John David Anglin PR target/52999 diff --git a/gcc/config.gcc b/gcc/config.gcc index 129e7db2b0d..ebd39bcc0e9 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -925,7 +925,7 @@ avr-*-rtems*) extra_objs="avr-devices.o" ;; avr-*-*) - tm_file="avr/avr.h dbxelf.h newlib-stdint.h" + tm_file="avr/avr.h dbxelf.h avr/avr-stdint.h" use_gcc_stdint=wrap extra_gcc_objs="driver-avr.o avr-devices.o" extra_objs="avr-devices.o" diff --git a/gcc/config/avr/avr-stdint.h b/gcc/config/avr/avr-stdint.h new file mode 100644 index 00000000000..c3ec3ce9fd5 --- /dev/null +++ b/gcc/config/avr/avr-stdint.h @@ -0,0 +1,66 @@ +/* Definitions for types on systems using newlib. + Copyright (C) 2012 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; see the file COPYING3. If not see +. */ + +/* + The intention of this file is to supply definitions that work with + avr-gcc's -mint8 that sets int to an 8-bit type. + + This file is intended to yield the same results as newlib-stdint.h, + but there are some differences to newlib-stdint.h: + + - AVR is an 8-bit architecture that cannot access 16-bit values + atomically, this SIG_ATOMIC_TYPE is "char". + + - For the same reason, [u]int_fast8_t is defined as 8-bit type. + +*/ + +#define SIG_ATOMIC_TYPE "char" + +#define INT8_TYPE "signed char" +#define INT16_TYPE (INT_TYPE_SIZE == 16 ? "short int" : "long int") +#define INT32_TYPE (INT_TYPE_SIZE == 16 ? "long int" : "long long int") +#define INT64_TYPE (INT_TYPE_SIZE == 16 ? "long long int" : 0) +#define UINT8_TYPE "unsigned char" +#define UINT16_TYPE (INT_TYPE_SIZE == 16 ? "short unsigned int" : "long unsigned int") +#define UINT32_TYPE (INT_TYPE_SIZE == 16 ? "long unsigned int" : "long long unsigned int") +#define UINT64_TYPE (INT_TYPE_SIZE == 16 ? "long long unsigned int" : 0) + +#define INT_LEAST8_TYPE INT8_TYPE +#define INT_LEAST16_TYPE INT16_TYPE +#define INT_LEAST32_TYPE INT32_TYPE +#define INT_LEAST64_TYPE INT64_TYPE +#define UINT_LEAST8_TYPE UINT8_TYPE +#define UINT_LEAST16_TYPE UINT16_TYPE +#define UINT_LEAST32_TYPE UINT32_TYPE +#define UINT_LEAST64_TYPE UINT64_TYPE + +#define INT_FAST8_TYPE INT8_TYPE +#define INT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "int" : INT16_TYPE) +#define INT_FAST32_TYPE INT32_TYPE +#define INT_FAST64_TYPE INT64_TYPE +#define UINT_FAST8_TYPE UINT8_TYPE +#define UINT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "unsigned int" : UINT16_TYPE) +#define UINT_FAST32_TYPE UINT32_TYPE +#define UINT_FAST64_TYPE UINT64_TYPE + +#define INTPTR_TYPE PTRDIFF_TYPE +#ifndef UINTPTR_TYPE +#define UINTPTR_TYPE SIZE_TYPE +#endif -- cgit v1.2.1 From 6ecb147abe2f8461096703c4a80ba2fb5a0b9a71 Mon Sep 17 00:00:00 2001 From: edmarwjr Date: Mon, 4 Jun 2012 17:42:25 +0000 Subject: 2012-06-04 Edmar Wienskoski PR target/53559 * config/rs6000/altivec.md (altivec_stvlx): Change machine mode of operands. (altivec_stvlxl): Ditto. (altivec_stvrx): Ditto. (altivec_stvrxl): Ditto. gcc/testsuite 2012-06-04 Edmar Wienskoski PR target/53559 * gcc.target/powerpc/cell_builtin_1.c: New test case. * gcc.target/powerpc/cell_builtin_2.c: Ditto. * gcc.target/powerpc/cell_builtin_3.c: Ditto. * gcc.target/powerpc/cell_builtin_4.c: Ditto. * gcc.target/powerpc/cell_builtin_5.c: Ditto. * gcc.target/powerpc/cell_builtin_6.c: Ditto. * gcc.target/powerpc/cell_builtin_7.c: Ditto. * gcc.target/powerpc/cell_builtin_8.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188194 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++ gcc/config/rs6000/altivec.md | 16 ++++---- gcc/testsuite/ChangeLog | 12 ++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c | 48 +++++++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c | 48 +++++++++++++++++++++++ 11 files changed, 413 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c create mode 100644 gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c110798b490..3a78124cdd3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-06-04 Edmar Wienskoski + + PR target/53559 + * config/rs6000/altivec.md (altivec_stvlx): Change machine mode of + operands. + (altivec_stvlxl): Ditto. + (altivec_stvrx): Ditto. + (altivec_stvrxl): Ditto. + 2012-06-04 Georg-Johann Lay Backport from 2012-06-04 mainline r188172 diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md index 80e82cc9c29..9fbced17365 100644 --- a/gcc/config/rs6000/altivec.md +++ b/gcc/config/rs6000/altivec.md @@ -2394,8 +2394,8 @@ (define_insn "altivec_stvlx" [(parallel - [(set (match_operand:V4SI 0 "memory_operand" "=Z") - (match_operand:V4SI 1 "register_operand" "v")) + [(set (match_operand:V16QI 0 "memory_operand" "=Z") + (match_operand:V16QI 1 "register_operand" "v")) (unspec [(const_int 0)] UNSPEC_STVLX)])] "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" "stvlx %1,%y0" @@ -2403,8 +2403,8 @@ (define_insn "altivec_stvlxl" [(parallel - [(set (match_operand:V4SI 0 "memory_operand" "=Z") - (match_operand:V4SI 1 "register_operand" "v")) + [(set (match_operand:V16QI 0 "memory_operand" "=Z") + (match_operand:V16QI 1 "register_operand" "v")) (unspec [(const_int 0)] UNSPEC_STVLXL)])] "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" "stvlxl %1,%y0" @@ -2412,8 +2412,8 @@ (define_insn "altivec_stvrx" [(parallel - [(set (match_operand:V4SI 0 "memory_operand" "=Z") - (match_operand:V4SI 1 "register_operand" "v")) + [(set (match_operand:V16QI 0 "memory_operand" "=Z") + (match_operand:V16QI 1 "register_operand" "v")) (unspec [(const_int 0)] UNSPEC_STVRX)])] "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" "stvrx %1,%y0" @@ -2421,8 +2421,8 @@ (define_insn "altivec_stvrxl" [(parallel - [(set (match_operand:V4SI 0 "memory_operand" "=Z") - (match_operand:V4SI 1 "register_operand" "v")) + [(set (match_operand:V16QI 0 "memory_operand" "=Z") + (match_operand:V16QI 1 "register_operand" "v")) (unspec [(const_int 0)] UNSPEC_STVRXL)])] "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" "stvrxl %1,%y0" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fdc917250c1..c5f0759ca4d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2012-06-04 Edmar Wienskoski + + PR target/53559 + * gcc.target/powerpc/cell_builtin_1.c: New test case. + * gcc.target/powerpc/cell_builtin_2.c: Ditto. + * gcc.target/powerpc/cell_builtin_3.c: Ditto. + * gcc.target/powerpc/cell_builtin_4.c: Ditto. + * gcc.target/powerpc/cell_builtin_5.c: Ditto. + * gcc.target/powerpc/cell_builtin_6.c: Ditto. + * gcc.target/powerpc/cell_builtin_7.c: Ditto. + * gcc.target/powerpc/cell_builtin_8.c: Ditto. + 2012-05-23 Michael Hope PR c++/52796 diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c new file mode 100644 index 00000000000..f2bc7ffb3c4 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "lvlx" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +vsc lc1(long a, void *p) { return __builtin_altivec_lvlx (a,p); } +vsf llx01(long a, vsf *p) { return __builtin_vec_lvlx (a,p); } +vsf llx02(long a, sf *p) { return __builtin_vec_lvlx (a,p); } +vbi llx03(long a, vbi *p) { return __builtin_vec_lvlx (a,p); } +vsi llx04(long a, vsi *p) { return __builtin_vec_lvlx (a,p); } +vsi llx05(long a, si *p) { return __builtin_vec_lvlx (a,p); } +vui llx06(long a, vui *p) { return __builtin_vec_lvlx (a,p); } +vui llx07(long a, ui *p) { return __builtin_vec_lvlx (a,p); } +vbs llx08(long a, vbs *p) { return __builtin_vec_lvlx (a,p); } +vp llx09(long a, vp *p) { return __builtin_vec_lvlx (a,p); } +vss llx10(long a, vss *p) { return __builtin_vec_lvlx (a,p); } +vss llx11(long a, ss *p) { return __builtin_vec_lvlx (a,p); } +vus llx12(long a, vus *p) { return __builtin_vec_lvlx (a,p); } +vus llx13(long a, us *p) { return __builtin_vec_lvlx (a,p); } +vbc llx14(long a, vbc *p) { return __builtin_vec_lvlx (a,p); } +vsc llx15(long a, vsc *p) { return __builtin_vec_lvlx (a,p); } +vsc llx16(long a, sc *p) { return __builtin_vec_lvlx (a,p); } +vuc llx17(long a, vuc *p) { return __builtin_vec_lvlx (a,p); } +vuc llx18(long a, uc *p) { return __builtin_vec_lvlx (a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c new file mode 100644 index 00000000000..220be571659 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "lvlxl" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +vsc lc2(long a, void *p) { return __builtin_altivec_lvlxl (a,p); } +vsf llxl01(long a, vsf *p) { return __builtin_vec_lvlxl (a,p); } +vsf llxl02(long a, sf *p) { return __builtin_vec_lvlxl (a,p); } +vbi llxl03(long a, vbi *p) { return __builtin_vec_lvlxl (a,p); } +vsi llxl04(long a, vsi *p) { return __builtin_vec_lvlxl (a,p); } +vsi llxl05(long a, si *p) { return __builtin_vec_lvlxl (a,p); } +vui llxl06(long a, vui *p) { return __builtin_vec_lvlxl (a,p); } +vui llxl07(long a, ui *p) { return __builtin_vec_lvlxl (a,p); } +vbs llxl08(long a, vbs *p) { return __builtin_vec_lvlxl (a,p); } +vp llxl09(long a, vp *p) { return __builtin_vec_lvlxl (a,p); } +vss llxl10(long a, vss *p) { return __builtin_vec_lvlxl (a,p); } +vss llxl11(long a, ss *p) { return __builtin_vec_lvlxl (a,p); } +vus llxl12(long a, vus *p) { return __builtin_vec_lvlxl (a,p); } +vus llxl13(long a, us *p) { return __builtin_vec_lvlxl (a,p); } +vbc llxl14(long a, vbc *p) { return __builtin_vec_lvlxl (a,p); } +vsc llxl15(long a, vsc *p) { return __builtin_vec_lvlxl (a,p); } +vsc llxl16(long a, sc *p) { return __builtin_vec_lvlxl (a,p); } +vuc llxl17(long a, vuc *p) { return __builtin_vec_lvlxl (a,p); } +vuc llxl18(long a, uc *p) { return __builtin_vec_lvlxl (a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c new file mode 100644 index 00000000000..4b437291ea5 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "lvrx" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +vsc lc3(long a, void *p) { return __builtin_altivec_lvrx (a,p); } +vsf lrx01(long a, vsf *p) { return __builtin_vec_lvrx (a,p); } +vsf lrx02(long a, sf *p) { return __builtin_vec_lvrx (a,p); } +vbi lrx03(long a, vbi *p) { return __builtin_vec_lvrx (a,p); } +vsi lrx04(long a, vsi *p) { return __builtin_vec_lvrx (a,p); } +vsi lrx05(long a, si *p) { return __builtin_vec_lvrx (a,p); } +vui lrx06(long a, vui *p) { return __builtin_vec_lvrx (a,p); } +vui lrx07(long a, ui *p) { return __builtin_vec_lvrx (a,p); } +vbs lrx08(long a, vbs *p) { return __builtin_vec_lvrx (a,p); } +vp lrx09(long a, vp *p) { return __builtin_vec_lvrx (a,p); } +vss lrx10(long a, vss *p) { return __builtin_vec_lvrx (a,p); } +vss lrx11(long a, ss *p) { return __builtin_vec_lvrx (a,p); } +vus lrx12(long a, vus *p) { return __builtin_vec_lvrx (a,p); } +vus lrx13(long a, us *p) { return __builtin_vec_lvrx (a,p); } +vbc lrx14(long a, vbc *p) { return __builtin_vec_lvrx (a,p); } +vsc lrx15(long a, vsc *p) { return __builtin_vec_lvrx (a,p); } +vsc lrx16(long a, sc *p) { return __builtin_vec_lvrx (a,p); } +vuc lrx17(long a, vuc *p) { return __builtin_vec_lvrx (a,p); } +vuc lrx18(long a, uc *p) { return __builtin_vec_lvrx (a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c new file mode 100644 index 00000000000..d73328ac43e --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "lvrxl" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +vsc lc4(long a, void *p) { return __builtin_altivec_lvrxl (a,p); } +vsf lrxl01(long a, vsf *p) { return __builtin_vec_lvrxl (a,p); } +vsf lrxl02(long a, sf *p) { return __builtin_vec_lvrxl (a,p); } +vbi lrxl03(long a, vbi *p) { return __builtin_vec_lvrxl (a,p); } +vsi lrxl04(long a, vsi *p) { return __builtin_vec_lvrxl (a,p); } +vsi lrxl05(long a, si *p) { return __builtin_vec_lvrxl (a,p); } +vui lrxl06(long a, vui *p) { return __builtin_vec_lvrxl (a,p); } +vui lrxl07(long a, ui *p) { return __builtin_vec_lvrxl (a,p); } +vbs lrxl08(long a, vbs *p) { return __builtin_vec_lvrxl (a,p); } +vp lrxl09(long a, vp *p) { return __builtin_vec_lvrxl (a,p); } +vss lrxl10(long a, vss *p) { return __builtin_vec_lvrxl (a,p); } +vss lrxl11(long a, ss *p) { return __builtin_vec_lvrxl (a,p); } +vus lrxl12(long a, vus *p) { return __builtin_vec_lvrxl (a,p); } +vus lrxl13(long a, us *p) { return __builtin_vec_lvrxl (a,p); } +vbc lrxl14(long a, vbc *p) { return __builtin_vec_lvrxl (a,p); } +vsc lrxl15(long a, vsc *p) { return __builtin_vec_lvrxl (a,p); } +vsc lrxl16(long a, sc *p) { return __builtin_vec_lvrxl (a,p); } +vuc lrxl17(long a, vuc *p) { return __builtin_vec_lvrxl (a,p); } +vuc lrxl18(long a, uc *p) { return __builtin_vec_lvrxl (a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c new file mode 100644 index 00000000000..cc6adba8050 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "stvlx" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +void sc1(vsc v, long a, void *p) { __builtin_altivec_stvlx (v,a,p); } +void slx01(vsf v, long a, vsf *p) { __builtin_vec_stvlx (v,a,p); } +void slx02(vsf v, long a, sf *p) { __builtin_vec_stvlx (v,a,p); } +void slx03(vbi v, long a, vbi *p) { __builtin_vec_stvlx (v,a,p); } +void slx04(vsi v, long a, vsi *p) { __builtin_vec_stvlx (v,a,p); } +void slx05(vsi v, long a, si *p) { __builtin_vec_stvlx (v,a,p); } +void slx06(vui v, long a, vui *p) { __builtin_vec_stvlx (v,a,p); } +void slx07(vui v, long a, ui *p) { __builtin_vec_stvlx (v,a,p); } +void slx08(vbs v, long a, vbs *p) { __builtin_vec_stvlx (v,a,p); } +void slx09(vp v, long a, vp *p) { __builtin_vec_stvlx (v,a,p); } +void slx10(vss v, long a, vss *p) { __builtin_vec_stvlx (v,a,p); } +void slx11(vss v, long a, ss *p) { __builtin_vec_stvlx (v,a,p); } +void slx12(vus v, long a, vus *p) { __builtin_vec_stvlx (v,a,p); } +void slx13(vus v, long a, us *p) { __builtin_vec_stvlx (v,a,p); } +void slx14(vbc v, long a, vbc *p) { __builtin_vec_stvlx (v,a,p); } +void slx15(vsc v, long a, vsc *p) { __builtin_vec_stvlx (v,a,p); } +void slx16(vsc v, long a, sc *p) { __builtin_vec_stvlx (v,a,p); } +void slx17(vuc v, long a, vuc *p) { __builtin_vec_stvlx (v,a,p); } +void slx18(vuc v, long a, uc *p) { __builtin_vec_stvlx (v,a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c new file mode 100644 index 00000000000..9c748d973d8 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "stvlxl" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +void sc2(vsc v, long a, void *p) { __builtin_altivec_stvlxl (v,a,p); } +void slxl01(vsf v, long a, vsf *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl02(vsf v, long a, sf *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl03(vbi v, long a, vbi *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl04(vsi v, long a, vsi *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl05(vsi v, long a, si *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl06(vui v, long a, vui *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl07(vui v, long a, ui *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl08(vbs v, long a, vbs *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl09(vp v, long a, vp *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl10(vss v, long a, vss *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl11(vss v, long a, ss *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl12(vus v, long a, vus *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl13(vus v, long a, us *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl14(vbc v, long a, vbc *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl15(vsc v, long a, vsc *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl16(vsc v, long a, sc *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl17(vuc v, long a, vuc *p) { __builtin_vec_stvlxl (v,a,p); } +void slxl18(vuc v, long a, uc *p) { __builtin_vec_stvlxl (v,a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c new file mode 100644 index 00000000000..abdb3b0caf1 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "stvrx" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +void sc3(vsc v, long a, void *p) { __builtin_altivec_stvrx (v,a,p); } +void srx01(vsf v, long a, vsf *p) { __builtin_vec_stvrx (v,a,p); } +void srx02(vsf v, long a, sf *p) { __builtin_vec_stvrx (v,a,p); } +void srx03(vbi v, long a, vbi *p) { __builtin_vec_stvrx (v,a,p); } +void srx04(vsi v, long a, vsi *p) { __builtin_vec_stvrx (v,a,p); } +void srx05(vsi v, long a, si *p) { __builtin_vec_stvrx (v,a,p); } +void srx06(vui v, long a, vui *p) { __builtin_vec_stvrx (v,a,p); } +void srx07(vui v, long a, ui *p) { __builtin_vec_stvrx (v,a,p); } +void srx08(vbs v, long a, vbs *p) { __builtin_vec_stvrx (v,a,p); } +void srx09(vp v, long a, vp *p) { __builtin_vec_stvrx (v,a,p); } +void srx10(vss v, long a, vss *p) { __builtin_vec_stvrx (v,a,p); } +void srx11(vss v, long a, ss *p) { __builtin_vec_stvrx (v,a,p); } +void srx12(vus v, long a, vus *p) { __builtin_vec_stvrx (v,a,p); } +void srx13(vus v, long a, us *p) { __builtin_vec_stvrx (v,a,p); } +void srx14(vbc v, long a, vbc *p) { __builtin_vec_stvrx (v,a,p); } +void srx15(vsc v, long a, vsc *p) { __builtin_vec_stvrx (v,a,p); } +void srx16(vsc v, long a, sc *p) { __builtin_vec_stvrx (v,a,p); } +void srx17(vuc v, long a, vuc *p) { __builtin_vec_stvrx (v,a,p); } +void srx18(vuc v, long a, uc *p) { __builtin_vec_stvrx (v,a,p); } diff --git a/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c b/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c new file mode 100644 index 00000000000..ec7fc3031b4 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c @@ -0,0 +1,48 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-O2 -maltivec -mcpu=cell" } */ +/* { dg-final { scan-assembler-times "stvrxl" 19 } } */ + +#include + +typedef __vector signed char vsc; +typedef __vector signed short vss; +typedef __vector signed int vsi; +typedef __vector unsigned char vuc; +typedef __vector unsigned short vus; +typedef __vector unsigned int vui; +typedef __vector bool char vbc; +typedef __vector bool short vbs; +typedef __vector bool int vbi; +typedef __vector float vsf; +typedef __vector pixel vp; +typedef signed char sc; +typedef signed short ss; +typedef signed int si; +typedef signed long sl; +typedef unsigned char uc; +typedef unsigned short us; +typedef unsigned int ui; +typedef unsigned long ul; +typedef float sf; + +void sc4(vsc v, long a, void *p) { __builtin_altivec_stvrxl (v,a,p); } +void srxl01(vsf v, long a, vsf *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl02(vsf v, long a, sf *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl03(vbi v, long a, vbi *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl04(vsi v, long a, vsi *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl05(vsi v, long a, si *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl06(vui v, long a, vui *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl07(vui v, long a, ui *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl08(vbs v, long a, vbs *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl09(vp v, long a, vp *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl10(vss v, long a, vss *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl11(vss v, long a, ss *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl12(vus v, long a, vus *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl13(vus v, long a, us *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl14(vbc v, long a, vbc *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl15(vsc v, long a, vsc *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl16(vsc v, long a, sc *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl17(vuc v, long a, vuc *p) { __builtin_vec_stvrxl (v,a,p); } +void srxl18(vuc v, long a, uc *p) { __builtin_vec_stvrxl (v,a,p); } -- cgit v1.2.1 From 124d96b83ed8eeb08828d9b14e1925fe4b110eb1 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 5 Jun 2012 00:16:54 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188214 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5a98e0ec492..cdfcaaf6b25 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120604 +20120605 -- cgit v1.2.1 From 393f80401ab3ef6836b2cd0a17e34662b3463aff Mon Sep 17 00:00:00 2001 From: burnus Date: Tue, 5 Jun 2012 13:05:31 +0000 Subject: 2012-06-05 Tobias Burnus PR fortran/50619 * resolve.c (build_default_init_expr): Don't initialize ASSOCIATE names. 2012-06-05 Tobias Burnus PR fortran/50619 * gfortran.dg/init_flag_10.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188237 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 +++++ gcc/fortran/resolve.c | 3 ++- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gfortran.dg/init_flag_10.f90 | 43 ++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/init_flag_10.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c5654f63b69..0d779f93f34 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-06-05 Tobias Burnus + + PR fortran/50619 + * resolve.c (build_default_init_expr): Don't initialize + ASSOCIATE names. + 2012-06-01 Tobias Burnus PR fortran/53521 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 4ee70932bc8..3e795ce1639 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -9700,7 +9700,8 @@ build_default_init_expr (gfc_symbol *sym) || sym->attr.data || sym->module || sym->attr.cray_pointee - || sym->attr.cray_pointer) + || sym->attr.cray_pointer + || sym->assoc) return NULL; /* Now we'll try to build an initializer expression. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c5f0759ca4d..d838f8bfda3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-05 Tobias Burnus + + PR fortran/50619 + * gfortran.dg/init_flag_10.f90: New. + 2012-06-04 Edmar Wienskoski PR target/53559 diff --git a/gcc/testsuite/gfortran.dg/init_flag_10.f90 b/gcc/testsuite/gfortran.dg/init_flag_10.f90 new file mode 100644 index 00000000000..826a34b81ea --- /dev/null +++ b/gcc/testsuite/gfortran.dg/init_flag_10.f90 @@ -0,0 +1,43 @@ +! { dg-do run } +! { dg-options "-finit-real=NAN" } +! { dg-add-options ieee } +! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } } +! +! PR fortran/50619 +! +! Contributed by Fred Krogh +! +! The NaN initialization used to set the associate name to NaN! +! + +module testa2 +type, public :: test_ty + real :: rmult = 1.0e0 +end type test_ty + +contains + subroutine test(e, var1) + type(test_ty) :: e + real :: var1, var2 ! Should get NaN initialized + + ! Should be the default value + if (e%rmult /= 1.0) call abort () + + ! Check that NaN initialization is really turned on + if (var1 == var1) call abort () + if (var2 == var2) call abort () + + ! The following was failing: + associate (rmult=>e%rmult) + if (e%rmult /= 1.0) call abort () + end associate + end subroutine test +end module testa2 + +program testa1 + use testa2 + type(test_ty) :: e + real :: var1 ! Should get NaN initialized + call test(e, var1) + stop +end program testa1 -- cgit v1.2.1 From a62c6c686a8a96beb6d40505cfcb5fc791b354c9 Mon Sep 17 00:00:00 2001 From: bergner Date: Tue, 5 Jun 2012 21:42:30 +0000 Subject: Backport from mainline 2011-08-29 Jakub Jelinek * gthr-posix.h (__gthread_active_p): Do not use preprocessor conditionals and comments inside macro arguments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188250 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/gthr-posix.h | 9 ++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a78124cdd3..901a4ef331a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-06-05 Peter Bergner + + Backport from mainline + 2011-08-29 Jakub Jelinek + + * gthr-posix.h (__gthread_active_p): Do not use preprocessor + conditionals and comments inside macro arguments. + 2012-06-04 Edmar Wienskoski PR target/53559 diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h index ecb06e2f4cb..1de5f4dc2f6 100644 --- a/gcc/gthr-posix.h +++ b/gcc/gthr-posix.h @@ -239,16 +239,15 @@ __gthread_active_p (void) static inline int __gthread_active_p (void) { - static void *const __gthread_active_ptr - = __extension__ (void *) &__gthrw_( /* Android's C library does not provide pthread_cancel, check for `pthread_create' instead. */ #ifndef __BIONIC__ - pthread_cancel + static void *const __gthread_active_ptr + = __extension__ (void *) &__gthrw_(pthread_cancel); #else - pthread_create + static void *const __gthread_active_ptr + = __extension__ (void *) &__gthrw_(pthread_create); #endif - ); return __gthread_active_ptr != 0; } -- cgit v1.2.1 From c6c8df687b3c4d1f6a33803b296264a182229753 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 6 Jun 2012 00:17:45 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188255 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index cdfcaaf6b25..8499434f51f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120605 +20120606 -- cgit v1.2.1 From 65087d57dbc414fcab8196f90ecb51cbe3ffbcb4 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 7 Jun 2012 00:17:43 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188287 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8499434f51f..9abbe4627bc 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120606 +20120607 -- cgit v1.2.1 From ea3ade4deba21cd7c81f8cb724f2564fa0bc5bda Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 8 Jun 2012 00:17:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188320 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9abbe4627bc..4c4e67cbc42 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120607 +20120608 -- cgit v1.2.1 From 0cc2491ff842830d619004435473190254f13cb8 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 9 Jun 2012 00:17:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188352 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 4c4e67cbc42..6eb22e7227d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120608 +20120609 -- cgit v1.2.1 From baef0fc045e672a8eb53699b51310f9c61ffe9b7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 10 Jun 2012 00:16:38 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188368 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6eb22e7227d..312d6b4e27b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120609 +20120610 -- cgit v1.2.1 From f04bfc51abaea3c99fefa334d2da6d261513ffbe Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 11 Jun 2012 00:16:59 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188373 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 312d6b4e27b..096208ca28d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120610 +20120611 -- cgit v1.2.1 From c025b277ca1ed2bc2fe9195274041bfcf8688b08 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 12 Jun 2012 00:18:00 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188407 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 096208ca28d..becb6f4a06f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120611 +20120612 -- cgit v1.2.1 From 4688d28d9e5564d1a2f8082d7c5c2face8db7c85 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 13 Jun 2012 00:17:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188490 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index becb6f4a06f..c197c8c6e95 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120612 +20120613 -- cgit v1.2.1 From c94de819635104efd82a92719e9f75fd9e2694eb Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 14 Jun 2012 00:17:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188542 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c197c8c6e95..3293b05adf1 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120613 +20120614 -- cgit v1.2.1 From fbcbee465e87caf62fa4cfb93cd5366ecc0b6e61 Mon Sep 17 00:00:00 2001 From: chrbr Date: Thu, 14 Jun 2012 08:55:36 +0000 Subject: PR target/53621 * config/sh/sh.c (sh_option_override): Don't force flag_omit_frame_pointer and maccumulate_outgoing_args. * config/sh/sh.opt (maccumulate-outgoing-args): Init as Var. * gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188601 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/sh/sh.c | 11 ++--------- gcc/config/sh/sh.opt | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/stack-usage-1.c | 1 + 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 901a4ef331a..23660deef80 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-06-12 Christian Bruel + + PR target/53621 + * config/sh/sh.c (sh_option_override): Don't force + flag_omit_frame_pointer and maccumulate_outgoing_args. + * config/sh/sh.opt (maccumulate-outgoing-args): Init as Var. + 2012-06-05 Peter Bergner Backport from mainline diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 6ac593e839e..39ef00d265c 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -911,8 +911,6 @@ sh_option_override (void) if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno))) sh_additional_register_names[regno][0] = '\0'; - flag_omit_frame_pointer = (PREFERRED_DEBUGGING_TYPE == DWARF2_DEBUG); - if ((flag_pic && ! TARGET_PREFERGOT) || (TARGET_SHMEDIA && !TARGET_PT_FIXED)) flag_no_function_cse = 1; @@ -944,22 +942,17 @@ sh_option_override (void) flag_schedule_insns = 0; } - if ((target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) == 0) - target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; - /* Unwind info is not correct around the CFG unless either a frame pointer is present or M_A_O_A is set. Fixing this requires rewriting unwind info generation to be aware of the CFG and propagating states around edges. */ if ((flag_unwind_tables || flag_asynchronous_unwind_tables || flag_exceptions || flag_non_call_exceptions) - && flag_omit_frame_pointer - && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)) + && flag_omit_frame_pointer && !TARGET_ACCUMULATE_OUTGOING_ARGS) { - if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) warning (0, "unwind tables currently require either a frame pointer " "or -maccumulate-outgoing-args for correctness"); - target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; + TARGET_ACCUMULATE_OUTGOING_ARGS = 1; } /* Unwinding with -freorder-blocks-and-partition does not work on this diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt index e94f53a5cbd..99a6373e20e 100644 --- a/gcc/config/sh/sh.opt +++ b/gcc/config/sh/sh.opt @@ -202,7 +202,7 @@ Target RejectNegative Condition(SUPPORT_SH5_32MEDIA_NOFPU) Generate FPU-less SHcompact code maccumulate-outgoing-args -Target Report Mask(ACCUMULATE_OUTGOING_ARGS) +Target Report Var(TARGET_ACCUMULATE_OUTGOING_ARGS) Init(1) Reserve space for outgoing arguments in the function prologue madjust-unroll diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d838f8bfda3..7bb2362ff28 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-13 Christian Bruel + + PR target/53621 + * gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH. + 2012-06-05 Tobias Burnus PR fortran/50619 diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c index 1d03a8dc994..89b62ed7dfc 100644 --- a/gcc/testsuite/gcc.dg/stack-usage-1.c +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-fstack-usage" } */ +/* { dg-options "-fstack-usage -fomit-frame-pointer" { target { sh-*-* } } } */ /* This is aimed at testing basic support for -fstack-usage in the back-ends. See the SPARC back-end for an example (grep flag_stack_usage in sparc.c). -- cgit v1.2.1 From 865b95bcd49e1a8d5aef7f8ff52c66fda5b3385d Mon Sep 17 00:00:00 2001 From: burnus Date: Thu, 14 Jun 2012 13:11:27 +0000 Subject: 2012-06-14 Tobias Burnus PR fortran/53597 * decl.c (match_attr_spec): Only mark module variables as SAVE_IMPLICIT for Fortran 2008 and later. 2012-06-14 Tobias Burnus PR fortran/53597 * gfortran.dg/save_4.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188618 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/decl.c | 5 +++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/save_4.f90 | 13 +++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/save_4.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0d779f93f34..b752efb264d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-06-14 Tobias Burnus + + PR fortran/53597 + * decl.c (match_attr_spec): Only mark module variables + as SAVE_IMPLICIT for Fortran 2008 and later. + 2012-06-05 Tobias Burnus PR fortran/50619 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 90693a4b858..26bffb78baf 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -3623,8 +3623,9 @@ match_attr_spec (void) } } - /* Module variables implicitly have the SAVE attribute. */ - if (gfc_current_state () == COMP_MODULE && !current_attr.save) + /* Since Fortran 2008 module variables implicitly have the SAVE attribute. */ + if (gfc_current_state () == COMP_MODULE && !current_attr.save + && (gfc_option.allow_std & GFC_STD_F2008) != 0) current_attr.save = SAVE_IMPLICIT; colon_seen = 1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7bb2362ff28..4faab146528 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-14 Tobias Burnus + + PR fortran/53597 + * gfortran.dg/save_4.f90: New. + 2012-06-13 Christian Bruel PR target/53621 diff --git a/gcc/testsuite/gfortran.dg/save_4.f90 b/gcc/testsuite/gfortran.dg/save_4.f90 new file mode 100644 index 00000000000..74ea6e83531 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/save_4.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-std=f2003" } +! +! PR fortran/53597 +! +MODULE somemodule + IMPLICIT NONE + TYPE sometype + INTEGER :: i + DOUBLE PRECISION, POINTER, DIMENSION(:,:) :: coef => NULL() + END TYPE sometype + TYPE(sometype) :: somevariable ! { dg-error "Fortran 2008: Implied SAVE for module variable 'somevariable' at .1., needed due to the default initialization" } +END MODULE somemodule -- cgit v1.2.1 From fd8cd963ac9d2b567074fa01abd4f8bacf2f9894 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 15 Jun 2012 00:17:50 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188643 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3293b05adf1..d32f7156c7d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120614 +20120615 -- cgit v1.2.1 From 25a58eaf7c3e9e5352d182c09518be1ec051cf18 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 16 Jun 2012 00:16:59 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188687 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index d32f7156c7d..53960e9b8e6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120615 +20120616 -- cgit v1.2.1 From a6352987064b6421c66484763b5df4990867a84c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 17 Jun 2012 00:16:48 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188699 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 53960e9b8e6..c3de3fcccc8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120616 +20120617 -- cgit v1.2.1 From 45689e8d0b56f0db188ddcbc38e5c16cfb9b893e Mon Sep 17 00:00:00 2001 From: danglin Date: Sun, 17 Jun 2012 01:33:06 +0000 Subject: Backport from mainline: 2012-06-03 John David Anglin * config/pa/pa.h (MAX_PCREL17F_OFFSET): Define. * config/pa/pa.c (pa_attr_length_millicode_call): Use MAX_PCREL17F_OFFSET instead of fixed offset. (pa_attr_length_call): Likewise. (pa_attr_length_indirect_call): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188702 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/pa/pa.c | 6 +++--- gcc/config/pa/pa.h | 9 +++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 23660deef80..3ead1f150f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2012-06-16 John David Anglin + + Backport from mainline: + 2012-06-03 John David Anglin + + * config/pa/pa.h (MAX_PCREL17F_OFFSET): Define. + * config/pa/pa.c (pa_attr_length_millicode_call): Use + MAX_PCREL17F_OFFSET instead of fixed offset. + (pa_attr_length_call): Likewise. + (pa_attr_length_indirect_call): Likewise. + 2012-06-12 Christian Bruel PR target/53621 diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 6f67ca8ea34..83e6e859e78 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -7544,7 +7544,7 @@ attr_length_millicode_call (rtx insn) return 24; else { - if (!TARGET_LONG_CALLS && distance < 240000) + if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET) return 8; if (TARGET_LONG_ABS_CALL && !flag_pic) @@ -7757,7 +7757,7 @@ attr_length_call (rtx insn, int sibcall) /* pc-relative branch. */ if (!TARGET_LONG_CALLS && ((TARGET_PA_20 && !sibcall && distance < 7600000) - || distance < 240000)) + || distance < MAX_PCREL17F_OFFSET)) length += 8; /* 64-bit plabel sequence. */ @@ -8116,7 +8116,7 @@ attr_length_indirect_call (rtx insn) if (TARGET_FAST_INDIRECT_CALLS || (!TARGET_PORTABLE_RUNTIME && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000) - || distance < 240000))) + || distance < MAX_PCREL17F_OFFSET))) return 8; if (flag_pic) diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 012186854de..e59cd5d4578 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1563,3 +1563,12 @@ do { \ #undef TARGET_HAVE_TLS #define TARGET_HAVE_TLS true #endif + +/* The maximum offset in bytes for a PA 1.X pc-relative call to the + head of the preceding stub table. The selected offsets have been + chosen so that approximately one call stub is allocated for every + 86.7 instructions. A long branch stub is two instructions when + not generating PIC code. For HP-UX and ELF targets, PIC stubs are + seven and four instructions, respectively. */ +#define MAX_PCREL17F_OFFSET \ + (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000) -- cgit v1.2.1 From ad810771a6ff737ff1eb7e3bc76fdaadffe61a52 Mon Sep 17 00:00:00 2001 From: uros Date: Sun, 17 Jun 2012 14:09:00 +0000 Subject: 2012-06-17 Uros Bizjak Backport from mainline: 2012-06-17 Uros Bizjak * config/i386/sse.md (vcvtph2ps): Fix vec_select selector. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188707 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 +++++++++--- gcc/config/i386/sse.md | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3ead1f150f8..943fcd5a84d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-06-17 Uros Bizjak + + Backport from mainline: + 2012-06-17 Uros Bizjak + + * config/i386/sse.md (vcvtph2ps): Fix vec_select selector. + 2012-06-16 John David Anglin Backport from mainline: @@ -58,7 +65,7 @@ 2012-05-24 Bill Schmidt Backport from mainline - 2012-05-18 Bill Schmidt + 2012-05-18 Bill Schmidt PR target/53385 * config/rs6000/rs6000.c (print_operand): Revise code that unsafely @@ -89,8 +96,7 @@ 2012-04-12 Richard Guenther PR c/52862 - * convert.c (convert_to_pointer): Remove special-casing of - zero. + * convert.c (convert_to_pointer): Remove special-casing of zero. 2012-05-21 Joseph Myers diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index b0dc3d8db80..2463985f8df 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -12052,7 +12052,7 @@ (unspec:V8SF [(match_operand:V8HI 1 "register_operand" "x")] UNSPEC_VCVTPH2PS) (parallel [(const_int 0) (const_int 1) - (const_int 1) (const_int 2)])))] + (const_int 2) (const_int 3)])))] "TARGET_F16C" "vcvtph2ps\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") -- cgit v1.2.1 From adcad7902e6deb3c474da550c84c3a2e2d558487 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 18 Jun 2012 00:17:34 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188719 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c3de3fcccc8..35d3f76ad44 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120617 +20120618 -- cgit v1.2.1 From 36e7ba345b4d340ec1df29beba525fe158bb5760 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 19 Jun 2012 00:18:41 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188762 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 35d3f76ad44..6929d4ab168 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120618 +20120619 -- cgit v1.2.1 From 494c27b7eefcd39177a45b40df82c20add893619 Mon Sep 17 00:00:00 2001 From: jye2 Date: Tue, 19 Jun 2012 03:01:10 +0000 Subject: 2012-06-18 Joey Ye Backported from mainline 2011-10-14 David Alan Gilbert PR target/48126 * config/arm/arm.c (arm_output_sync_loop): Move label before barrier. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188766 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/arm/arm.c | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 943fcd5a84d..6a30d39d8d5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-06-18 Joey Ye + + Backported from mainline + 2011-10-14 David Alan Gilbert + + PR target/48126 + * config/arm/arm.c (arm_output_sync_loop): Move label before barrier. + 2012-06-17 Uros Bizjak Backport from mainline: diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a5edf04b9ed..db2d723ba97 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -23423,8 +23423,11 @@ arm_output_sync_loop (emit_f emit, } } - arm_process_output_memory_barrier (emit, NULL); + /* Note: label is before barrier so that in cmp failure case we still get + a barrier to stop subsequent loads floating upwards past the ldrex + PR target/48126. */ arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX); + arm_process_output_memory_barrier (emit, NULL); } static rtx -- cgit v1.2.1 From 59ced34d9357f7b22c57333fccf86a708ab3b3cf Mon Sep 17 00:00:00 2001 From: jye2 Date: Tue, 19 Jun 2012 12:30:17 +0000 Subject: 2012-06-19 Joey Ye Backported from mainline 2011-10-14 David Alan Gilbert * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188774 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/arm/arm.h | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a30d39d8d5..868f0468043 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-06-19 Joey Ye + + Backported from mainline + 2011-10-14 David Alan Gilbert + + * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1. + 2012-06-18 Joey Ye Backported from mainline diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 151d3141381..292b48f96de 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -294,7 +294,8 @@ extern void (*arm_lang_output_object_attributes_hook)(void); #define TARGET_HAVE_DMB (arm_arch7) /* Nonzero if this chip implements a memory barrier via CP15. */ -#define TARGET_HAVE_DMB_MCR (arm_arch6k && ! TARGET_HAVE_DMB) +#define TARGET_HAVE_DMB_MCR (arm_arch6 && ! TARGET_HAVE_DMB \ + && ! TARGET_THUMB1) /* Nonzero if this chip implements a memory barrier instruction. */ #define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR) -- cgit v1.2.1 From 6812537e3977ed0f96562c7bec94119e9b580d61 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 20 Jun 2012 00:17:49 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188800 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6929d4ab168..1cd63142c5a 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120619 +20120620 -- cgit v1.2.1 From 751cdea3592c003a6a965fa8adde8add688dd007 Mon Sep 17 00:00:00 2001 From: kkojima Date: Wed, 20 Jun 2012 07:54:17 +0000 Subject: * gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets and add __sh__ case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188817 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/stack-usage-1.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4faab146528..a4fb57c915c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-19 Kaz Kojima + + * gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets + and add __sh__ case. + 2012-06-14 Tobias Burnus PR fortran/53597 diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c index 89b62ed7dfc..7de282df26a 100644 --- a/gcc/testsuite/gcc.dg/stack-usage-1.c +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fstack-usage" } */ -/* { dg-options "-fstack-usage -fomit-frame-pointer" { target { sh-*-* } } } */ /* This is aimed at testing basic support for -fstack-usage in the back-ends. See the SPARC back-end for an example (grep flag_stack_usage in sparc.c). @@ -42,6 +41,8 @@ # define SIZE 160 /* 256 - 96 bytes for register save area */ #elif defined (__SPU__) # define SIZE 224 +#elif defined (__sh__) +# define SIZE 252 #else # define SIZE 256 #endif -- cgit v1.2.1 From b96fd63252ced3375c138ff0157190793f9f63d4 Mon Sep 17 00:00:00 2001 From: redi Date: Wed, 20 Jun 2012 08:30:55 +0000 Subject: =?UTF-8?q?2012-06-20=20=20J=C3=B6rg=20Sonnenberger=20=20=09=20=20=20=20Jonathan=20Wakely=20=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR libstdc++/53678 * config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U. * testsuite/22_locale/ctype_base/53678.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188819 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 7 ++++++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h | 6 ++--- .../testsuite/22_locale/ctype_base/53678.cc | 28 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d8fc4bfbcff..ff20cb1a197 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2012-06-20 Jörg Sonnenberger + Jonathan Wakely + + PR libstdc++/53678 + * config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U. + * testsuite/22_locale/ctype_base/53678.cc: New. + 2012-04-12 Jeffrey Yasskin PR libstdc++/52822 diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h index d75cb79aaf6..cd654d685c5 100644 --- a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h +++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 2000, 2009 Free Software Foundation, Inc. +// Copyright (C) 2000, 2009, 2011, 2012 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 @@ -31,8 +31,6 @@ // anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h // See www.netbsd.org for details of access. -#include - namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -47,7 +45,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // on the mask type. Because of this, we don't use an enum. typedef unsigned char mask; -#if __NetBSD_Version__ < 599004100 +#ifndef _CTYPE_U static const mask upper = _U; static const mask lower = _L; static const mask alpha = _U | _L; diff --git a/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc b/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc new file mode 100644 index 00000000000..e4a9f071b92 --- /dev/null +++ b/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc @@ -0,0 +1,28 @@ +// Copyright (C) 2012 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 +// . + +// { dg-do compile } + +// 22.2.1 The ctype category + +#include + +// libstdc++/53678 +void test01() +{ + bool NetBSD __attribute__((unused)) = true; +} -- cgit v1.2.1 From bb95412858b9ff5a63ecac7f04fb6374ebef2fe0 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 21 Jun 2012 00:17:48 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188845 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1cd63142c5a..8401a8798aa 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120620 +20120621 -- cgit v1.2.1 From cd13d7a18c866fb8dfdaba19d881437a9a3da65f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 22 Jun 2012 00:17:57 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188863 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8401a8798aa..7c80a329442 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120621 +20120622 -- cgit v1.2.1 From ce73e7f4daafd17467cfaf02ff67eba3a2c092d1 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 22 Jun 2012 08:14:03 +0000 Subject: 2012-06-22 Richard Guenther PR gcov-profile/53744 * gcov-iov.c (main): Treat "" and "prerelease" the same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188878 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/gcov-iov.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 868f0468043..d1efe1f5992 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-06-22 Richard Guenther + + PR gcov-profile/53744 + * gcov-iov.c (main): Treat "" and "prerelease" the same. + 2012-06-19 Joey Ye Backported from mainline diff --git a/gcc/gcov-iov.c b/gcc/gcov-iov.c index 9a73cd5b2b2..bd062e7b11c 100644 --- a/gcc/gcov-iov.c +++ b/gcc/gcov-iov.c @@ -48,8 +48,14 @@ main (int argc, char **argv) if (*ptr == '.') minor = strtoul (ptr + 1, 0, 10); + /* For releases the development phase is an empty string, for + prerelease versions on a release branch it is "prerelease". + Consider both equal as patch-level releases do not change + the GCOV version either. + On the trunk the development phase is "experimental". */ phase = argv[2][0]; - if (phase == '\0') + if (phase == '\0' + || strcmp (argv[2], "prerelease") == 0) phase = '*'; v[0] = (major < 10 ? '0' : 'A' - 10) + major; -- cgit v1.2.1 From 64a19c9b9963eca383560e8832c4b9d9993fd93c Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 22 Jun 2012 12:32:34 +0000 Subject: 2012-06-22 Richard Guenther * gcov-iov.c: Include bconfig.h and system.h. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188886 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/gcov-iov.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d1efe1f5992..740f812e498 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-06-22 Richard Guenther + + * gcov-iov.c: Include bconfig.h and system.h. + 2012-06-22 Richard Guenther PR gcov-profile/53744 diff --git a/gcc/gcov-iov.c b/gcc/gcov-iov.c index bd062e7b11c..59109c1f912 100644 --- a/gcc/gcov-iov.c +++ b/gcc/gcov-iov.c @@ -19,8 +19,8 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ -#include -#include +#include "bconfig.h" +#include "system.h" /* Command line arguments are the base GCC version and the development phase (the latter may be an empty string). */ -- cgit v1.2.1 From 40c36716c6057e89fc1cabdadd29b8db3a85b94e Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 23 Jun 2012 00:17:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188904 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7c80a329442..e451121052e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120622 +20120623 -- cgit v1.2.1 From 1d3eebd9f4f811f9008302e4f76eb0aa65758f2c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 24 Jun 2012 00:17:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188911 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e451121052e..9500c639559 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120623 +20120624 -- cgit v1.2.1 From 096e860fecb64ab08c498ddaf5b4123cae011ffb Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 25 Jun 2012 00:17:16 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188920 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9500c639559..e4358776d66 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120624 +20120625 -- cgit v1.2.1 From 36ed82d2030520fd33c5306655939d7c8cd39a51 Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 25 Jun 2012 20:37:14 +0000 Subject: PR c++/52988 * typeck.c (decay_conversion): Don't discard side-effects from expressions of nullptr_t. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188953 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/typeck.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/nullptr28.C | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/nullptr28.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 87870dfcf74..c5387511679 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2012-06-25 Jason Merrill + + PR c++/52988 + * typeck.c (decay_conversion): Don't discard side-effects from + expressions of nullptr_t. + 2012-04-04 Steve Ellcey Backported from mainline. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index deb895111b6..b2a08a3b9e8 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1822,7 +1822,7 @@ decay_conversion (tree exp) if (error_operand_p (exp)) return error_mark_node; - if (NULLPTR_TYPE_P (type)) + if (NULLPTR_TYPE_P (type) && !TREE_SIDE_EFFECTS (exp)) return nullptr_node; /* build_c_cast puts on a NOP_EXPR to make the result not an lvalue. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a4fb57c915c..33920f8651a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-25 Jason Merrill + + PR c++/52988 + * g++.dg/cpp0x/nullptr28.C: New. + 2012-06-19 Kaz Kojima * gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr28.C b/gcc/testsuite/g++.dg/cpp0x/nullptr28.C new file mode 100644 index 00000000000..05fbe57b197 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/nullptr28.C @@ -0,0 +1,16 @@ +// { dg-do run { target c++11 } } + +typedef decltype(nullptr) nullptr_t; + +int i; +nullptr_t n; +const nullptr_t& f() { ++i; return n; } + +nullptr_t g() { return f(); } + +int main() +{ + g(); + if (i != 1) + __builtin_abort (); +} -- cgit v1.2.1 From ad29bc7a3bd276c44379f4808b75f8449e0ee150 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 26 Jun 2012 00:17:11 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@188969 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e4358776d66..1ed50cddbb3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120625 +20120626 -- cgit v1.2.1