[committed] Update Makefile.in copyright
This one got left out of the earlier patch due to a scripting bug. Tested on x86_64-linux-gnu and committed as obvious. Richard gcc/ * Makefile.in: Update copyright. Index: gcc/Makefile.in === --- gcc/Makefile.in 2013-01-13 08:05:06.701397766 + +++ gcc/Makefile.in 2013-01-13 08:10:41.872765977 + @@ -1,9 +1,7 @@ # Makefile for GNU Compiler Collection # Run 'configure' to generate Makefile from Makefile.in -# Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, -# 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +# Copyright (C) 1987-2013 Free Software Foundation, Inc. #This file is part of GCC.
RFA: Update copyright for libgcc
Here's the result of running the copyright script on libcc/. Tested on x86_64-linux-gnu. OK to install? Richard libgcc/ Update copyright years auto-copyright-libgcc.diff.bz2 Description: BZip2 compressed data
RFA: Update copyright for libcpp
Here's the result of running the copyright script on libcpp/. It's nice and short, but for consistency with the other patches, I've not listed out every file in the changelog. Tested on x86_64-linux-gnu. OK to install? Richard libcpp/ Update copyright years Index: libcpp/Makefile.in === --- libcpp/Makefile.in 2013-01-13 08:05:06.004393059 + +++ libcpp/Makefile.in 2013-01-13 08:15:46.807012235 + @@ -1,7 +1,7 @@ # @configure_input@ # Makefile for libcpp. Run 'configure' to generate Makefile from Makefile.in -# Copyright (C) 2004, 2008, 2009, 2010 Free Software Foundation, Inc. +# Copyright (C) 2004-2013 Free Software Foundation, Inc. #This file is part of libcpp. Index: libcpp/charset.c === --- libcpp/charset.c2013-01-13 08:05:06.004393059 + +++ libcpp/charset.c2013-01-13 08:15:46.188009166 + @@ -1,6 +1,5 @@ /* CPP Library - charsets - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2008, 2009, - 2010, 2012 Free Software Foundation, Inc. + Copyright (C) 1998-2013 Free Software Foundation, Inc. Broken out of c-lex.c Apr 2003, adding valid C99 UCN ranges. Index: libcpp/directives-only.c === --- libcpp/directives-only.c2013-01-13 08:05:06.004393059 + +++ libcpp/directives-only.c2013-01-13 08:15:46.194009196 + @@ -1,6 +1,5 @@ /* CPP Library - directive only preprocessing for distributed compilation. - Copyright (C) 2007, 2009 - Free Software Foundation, Inc. + Copyright (C) 2007-2013 Free Software Foundation, Inc. Contributed by Ollie Wild . This program is free software; you can redistribute it and/or modify it Index: libcpp/directives.c === --- libcpp/directives.c 2013-01-13 08:05:06.004393059 + +++ libcpp/directives.c 2013-01-13 08:15:46.292009682 + @@ -1,5 +1,5 @@ /* CPP Library. (Directive handling.) - Copyright (C) 1986-2012 Free Software Foundation, Inc. + Copyright (C) 1986-2013 Free Software Foundation, Inc. Contributed by Per Bothner, 1994-95. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 Index: libcpp/errors.c === --- libcpp/errors.c 2013-01-13 08:05:06.005393065 + +++ libcpp/errors.c 2013-01-13 08:15:46.39721 + @@ -1,6 +1,5 @@ /* Default error handlers for CPP Library. - Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998, 1999, 2000, - 2001, 2002, 2004, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 1986-2013 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 Index: libcpp/expr.c === --- libcpp/expr.c 2013-01-13 08:05:06.003393053 + +++ libcpp/expr.c 2013-01-13 08:15:46.307009756 + @@ -1,6 +1,5 @@ /* Parse C expressions for cpplib. - Copyright (C) 1987, 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2001, - 2002, 2004, 2008, 2009, 2010, 2011 Free Software Foundation. + Copyright (C) 1987-2013 Free Software Foundation, Inc. Contributed by Per Bothner, 1994. This program is free software; you can redistribute it and/or modify it Index: libcpp/files.c === --- libcpp/files.c 2013-01-13 08:05:06.003393053 + +++ libcpp/files.c 2013-01-13 08:15:46.358010009 + @@ -1,7 +1,5 @@ /* Part of CPP library. File handling. - Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1986-2013 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 Index: libcpp/identifiers.c === --- libcpp/identifiers.c2013-01-13 08:05:06.002393046 + +++ libcpp/identifiers.c2013-01-13 08:15:46.411010272 + @@ -1,6 +1,5 @@ /* Hash tables for the CPP library. - Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 1986-2013 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 Index: libcpp/include/cpp-id-data.h === --- libcpp/include/cpp-id-data.h2013-01-13 08:05:06.016393141 + +++
RFA: Update copyright for libada
Here's the result of running the copyright script on libada/. Again, it's very short, but I've kept with the idiom of not listing every file. Tested on x86_64-linux-gnu (with Ada enabled). OK to install? Richard libada/ Update copyright years Index: libada/ChangeLog === --- libada/ChangeLog2013-01-13 08:05:05.912392436 + +++ libada/ChangeLog2013-01-13 08:18:49.441207175 + @@ -310,7 +310,7 @@ * New directory, new ChangeLog. -Copyright 2003, 2004 Free Software Foundation, Inc. +Copyright (C) 2003-2013 Free Software Foundation, Inc. This ChangeLog is free software; the Free Software Foundation gives unlimited permission to copy, distribute, and modify it. Index: libada/Makefile.in === --- libada/Makefile.in 2013-01-13 08:05:05.912392436 + +++ libada/Makefile.in 2013-01-13 08:18:49.464207260 + @@ -1,5 +1,5 @@ # Makefile for libada. -# Copyright 2003, 2004, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by Index: libada/configure.ac === --- libada/configure.ac 2013-01-13 08:05:05.912392436 + +++ libada/configure.ac 2013-01-13 08:18:49.449207204 + @@ -1,5 +1,5 @@ # Configure script for libada. -# Copyright 2003, 2004, 2009, 2011 Free Software Foundation, Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by
RFA: Update copyright for libatomic
Here's the result of running the copyright script on libatomic/. Tested on x86_64-linux-gnu. OK to install? Richard libatomic/ Update copyright years Index: libatomic/Makefile.am === --- libatomic/Makefile.am 2013-01-13 08:05:05.845391981 + +++ libatomic/Makefile.am 2013-01-13 08:23:22.737792156 + @@ -1,4 +1,4 @@ -## Copyright (C) 2012 Free Software Foundation, Inc. +## Copyright (C) 2012-2013 Free Software Foundation, Inc. ## Contributed by Richard Henderson . ## ## This file is part of the GNU Atomic Library (libatomic). Index: libatomic/cas_n.c === --- libatomic/cas_n.c 2013-01-13 08:05:05.846391987 + +++ libatomic/cas_n.c 2013-01-13 08:23:22.741792176 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/arm/arm-config.h === --- libatomic/config/arm/arm-config.h 2013-01-13 08:05:05.844391975 + +++ libatomic/config/arm/arm-config.h 2013-01-13 08:23:22.756792250 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/arm/exch_n.c === --- libatomic/config/arm/exch_n.c 2013-01-13 08:05:05.844391975 + +++ libatomic/config/arm/exch_n.c 2013-01-13 08:23:22.765792293 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/linux/arm/host-config.h === --- libatomic/config/linux/arm/host-config.h2013-01-13 08:05:05.845391981 + +++ libatomic/config/linux/arm/host-config.h2013-01-13 08:23:22.773792334 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/linux/arm/init.c === --- libatomic/config/linux/arm/init.c 2013-01-13 08:05:05.845391981 + +++ libatomic/config/linux/arm/init.c 2013-01-13 08:23:22.781792374 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/linux/arm/load_n.c === --- libatomic/config/linux/arm/load_n.c 2013-01-13 08:05:05.845391981 + +++ libatomic/config/linux/arm/load_n.c 2013-01-13 08:23:22.799792463 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/linux/arm/store_n.c === --- libatomic/config/linux/arm/store_n.c2013-01-13 08:05:05.845391981 + +++ libatomic/config/linux/arm/store_n.c2013-01-13 08:23:22.808792507 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/posix/host-config.h === --- libatomic/config/posix/host-config.h2013-01-13 08:05:05.844391975 + +++ libatomic/config/posix/host-config.h2013-01-13 08:23:22.842792676 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU Atomic Library (libatomic). Index: libatomic/config/posix/lock.c === --- libatomic/config/posix/lock.c 2013-01-13 08:05:05.844391975 + +++ libatomic/config/posix/lock.c 2013-01-13 08:23:22.842792676 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2012 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. Contributed by Richard
RFA: Update copyright for libbacktrace
Here's the result of running the copyright script on libbacktrace/. Tested on x86_64-linux-gnu. OK to install? Richard libbacktrace/ Update copyright years Index: libbacktrace/Makefile.am === --- libbacktrace/Makefile.am2013-01-13 08:05:05.756391376 + +++ libbacktrace/Makefile.am2013-01-13 08:25:25.695716704 + @@ -1,5 +1,5 @@ # Makefile.am -- Backtrace Makefile. -# Copyright (C) 2012 Free Software Foundation, Inc. +# Copyright (C) 2012-2013 Free Software Foundation, Inc. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are Index: libbacktrace/alloc.c === --- libbacktrace/alloc.c2013-01-13 08:05:05.756391376 + +++ libbacktrace/alloc.c2013-01-13 08:25:25.702716746 + @@ -1,5 +1,5 @@ /* alloc.c -- Memory allocation without mmap. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in source and binary forms, with or without Index: libbacktrace/backtrace-supported.h.in === --- libbacktrace/backtrace-supported.h.in 2013-01-13 08:05:05.757391384 + +++ libbacktrace/backtrace-supported.h.in 2013-01-13 08:25:25.786717249 + @@ -1,5 +1,5 @@ /* backtrace-supported.h.in -- Whether stack backtrace is supported. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in source and binary forms, with or without Index: libbacktrace/backtrace.c === --- libbacktrace/backtrace.c2013-01-13 08:05:05.757391384 + +++ libbacktrace/backtrace.c2013-01-13 08:25:25.847717615 + @@ -1,5 +1,5 @@ /* backtrace.c -- Entry point for stack backtrace library. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in source and binary forms, with or without Index: libbacktrace/backtrace.h === --- libbacktrace/backtrace.h2013-01-13 08:05:05.757391384 + +++ libbacktrace/backtrace.h2013-01-13 08:25:25.903717950 + @@ -1,5 +1,5 @@ /* backtrace.h -- Public header file for stack backtrace library. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in source and binary forms, with or without Index: libbacktrace/btest.c === --- libbacktrace/btest.c2013-01-13 08:05:05.756391376 + +++ libbacktrace/btest.c2013-01-13 08:25:25.904717956 + @@ -1,5 +1,5 @@ /* btest.c -- Test for libbacktrace library - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in source and binary forms, with or without Index: libbacktrace/configure.ac === --- libbacktrace/configure.ac 2013-01-13 08:05:05.758391391 + +++ libbacktrace/configure.ac 2013-01-13 08:25:25.905717962 + @@ -1,5 +1,5 @@ # configure.ac -- Backtrace configure script. -# Copyright (C) 2012 Free Software Foundation, Inc. +# Copyright (C) 2012-2013 Free Software Foundation, Inc. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are Index: libbacktrace/dwarf.c === --- libbacktrace/dwarf.c2013-01-13 08:05:05.757391384 + +++ libbacktrace/dwarf.c2013-01-13 08:25:25.909717986 + @@ -1,5 +1,5 @@ /* dwarf.c -- Get file/line information from DWARF for backtraces. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in source and binary forms, with or without Index: libbacktrace/elf.c === --- libbacktrace/elf.c 2013-01-13 08:05:05.757391384 + +++ libbacktrace/elf.c 2013-01-13 08:25:25.917718034 + @@ -1,5 +1,5 @@ /* elf.c -- Get debug data from an ELF file for backtraces. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2013 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. Redistribution and use in sour
RFA: Update copyright for libdecnumber
Here's the result of running the copyright script on libdecnumber/. Tested on x86_64-linux-gnu. OK to install? Richard libdecnumber/ Update copyright years Index: libdecnumber/Makefile.in === --- libdecnumber/Makefile.in2013-01-13 08:05:05.725391166 + +++ libdecnumber/Makefile.in2013-01-13 08:27:01.124182954 + @@ -1,8 +1,7 @@ # @configure_input@ # Makefile for libdecnumber. Run 'configure' to generate Makefile from Makefile.in -# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. +# Copyright (C) 2005-2013 Free Software Foundation, Inc. #This file is part of GCC. Index: libdecnumber/bid/bid-dpd.h === --- libdecnumber/bid/bid-dpd.h 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/bid-dpd.h 2013-01-13 08:27:01.125182959 + @@ -1,5 +1,4 @@ -/* Copyright (C) 2007, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/bid2dpd_dpd2bid.c === --- libdecnumber/bid/bid2dpd_dpd2bid.c 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/bid2dpd_dpd2bid.c 2013-01-13 08:27:01.144183050 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/bid2dpd_dpd2bid.h === --- libdecnumber/bid/bid2dpd_dpd2bid.h 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/bid2dpd_dpd2bid.h 2013-01-13 08:27:01.344184012 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/decimal128.c === --- libdecnumber/bid/decimal128.c 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/decimal128.c 2013-01-13 08:27:01.353184055 + @@ -1,5 +1,4 @@ -/* Copyright (C) 2007, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/decimal32.c === --- libdecnumber/bid/decimal32.c2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/decimal32.c2013-01-13 08:27:01.507184793 + @@ -1,5 +1,4 @@ -/* Copyright (C) 2007, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/decimal64.c === --- libdecnumber/bid/decimal64.c2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/decimal64.c2013-01-13 08:27:01.508184798 + @@ -1,5 +1,4 @@ -/* Copyright (C) 2007, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/host-ieee128.c === --- libdecnumber/bid/host-ieee128.c 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/host-ieee128.c 2013-01-13 08:27:01.521184861 + @@ -1,5 +1,5 @@ /* This is a software decimal floating point library. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/host-ieee32.c === --- libdecnumber/bid/host-ieee32.c 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/host-ieee32.c 2013-01-13 08:27:01.663185542 + @@ -1,5 +1,5 @@ /* This is a software decimal floating point library. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/bid/host-ieee64.c === --- libdecnumber/bid/host-ieee64.c 2013-01-13 08:05:05.706391041 + +++ libdecnumber/bid/host-ieee64.c 2013-01-13 08:27:01.671185582 + @@ -1,5 +1,5 @@ /* This is a software decimal floating point library. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of GCC. Index: libdecnumber/configure.ac === --- libdecnumber/configure.ac 2013-01-13 08:05:05.725391166 + +++ libdecnumber/configure.ac 2013-01-13 08:27:01.729185860 + @@ -1,7 +1,7 @@ # configure.ac for libdecnumber
RFA: Update copyright for libgomp
Here's the result of running the copyright script on libgomp/. Tested on x86_64-linux-gnu. OK to install? Richard libgomp/ Update copyright years Index: libgomp/alloc.c === --- libgomp/alloc.c 2013-01-13 08:05:05.481389519 + +++ libgomp/alloc.c 2013-01-13 08:28:38.56775 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/barrier.c === --- libgomp/barrier.c 2013-01-13 08:05:05.515389751 + +++ libgomp/barrier.c 2013-01-13 08:28:38.575666717 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/bsd/proc.c === --- libgomp/config/bsd/proc.c 2013-01-13 08:05:05.481389519 + +++ libgomp/config/bsd/proc.c 2013-01-13 08:28:38.595666821 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/affinity.c === --- libgomp/config/linux/affinity.c 2013-01-13 08:05:05.482389527 + +++ libgomp/config/linux/affinity.c 2013-01-13 08:28:38.747667609 + @@ -1,5 +1,4 @@ -/* Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. +/* Copyright (C) 2006-2013 Free Software Foundation, Inc. Contributed by Jakub Jelinek . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/alpha/futex.h === --- libgomp/config/linux/alpha/futex.h 2013-01-13 08:05:05.483389534 + +++ libgomp/config/linux/alpha/futex.h 2013-01-13 08:28:38.756667655 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/bar.c === --- libgomp/config/linux/bar.c 2013-01-13 08:05:05.482389527 + +++ libgomp/config/linux/bar.c 2013-01-13 08:28:38.909668447 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2008, 2009, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/bar.h === --- libgomp/config/linux/bar.h 2013-01-13 08:05:05.483389534 + +++ libgomp/config/linux/bar.h 2013-01-13 08:28:38.910668453 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2008, 2009, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/futex.h === --- libgomp/config/linux/futex.h2013-01-13 08:05:05.482389527 + +++ libgomp/config/linux/futex.h2013-01-13 08:28:38.910668453 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2010-2013 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/ia64/futex.h === --- libgomp/config/linux/ia64/futex.h 2013-01-13 08:05:05.482389527 + +++ libgomp/config/linux/ia64/futex.h 2013-01-13 08:28:38.918668494 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). Index: libgomp/config/linux/lock.c === --- libgomp/config/linux/lock.c 2013-01-13 08:05:05.482389527 + +++ libgomp/config/linux/lock.c 2013-01-13 08:28:38.926668536 + @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. +/* Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp
RFA: Update copyright for libgfortran
Here's the result of running the copyright script on libgfortran/. The script also updates libgfortran/generated, but I checked that that part of the patch is the same as you'd get with the normal --enable-maintainer-mode stuff. Tested on x86_64-linux-gnu. OK to install? Richard libgfortran/ Update copyright years auto-copyright-libgfortran.diff.bz2 Description: BZip2 compressed data
[committed] Update ssa-dom-thread-4.c for MIPS
ssa-dom-thread-4.c has been failing on MIPS for some time, because we now copy the header of the inner while loop. This patch updates the test accordingly. Maybe at some point I should just admit that it would be better to skip the thing on MIPS, like we do for Cortex-M0. Tested on mips64-linux-gnu and mipsisa64-elf. Applied. Richard gcc/testsuite/ * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected results for MIPS. Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c === --- gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c2013-01-13 08:05:03.428375740 + +++ gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c2013-01-13 08:43:53.217750773 + @@ -62,8 +62,25 @@ bitmap_ior_and_compl (bitmap dst, const_ /* ARM Cortex-M0 defined LOGICAL_OP_NON_SHORT_CIRCUIT to false, so skip below test. */ /* { dg-final { scan-tree-dump-times "Threaded" 3 "dom1" { target { ! { mips*-*-* || { arm_cortex_m && arm_thumb1 } } } } } } */ -/* MIPS defines LOGICAL_OP_NON_SHORT_CIRCUIT to 0, so we split var1 || var2 - into two conditions, rather than use (var1 != 0) | (var2 != 0). */ -/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target mips*-*-* } } } */ +/* MIPS defines LOGICAL_OP_NON_SHORT_CIRCUIT to 0, so we split both + "a_elt || b_elt" and "b_elt && kill_elt" into two conditions each, + rather than using "(var1 != 0) op (var2 != 0)". Also, as on other targets, + we duplicate the header of the inner "while" loop. There are then + 6 threading opportunities: + + 1x "!a_elt && b_elt" in the outer "while" loop + -> the start of the inner "while" loop, +skipping the known-true "b_elt" in the first condition. + 1x "!b_elt" in the first condition + -> the outer "while" loop's continuation point, +skipping the known-false "b_elt" in the second condition. + 2x "!kill_elt" in the inner "while" loop + -> the outer "while" loop's continuation point, +skipping the known-false "b_elt && kill_elt" in the second condition + 2x "kill_elt->indx < b_elt->indx" in the first "while" loop + -> "kill_elt->indx == b_elt->indx" in the second condition, +skipping the known-true "b_elt && kill_elt" in the second +condition. */ +/* { dg-final { scan-tree-dump-times "Threaded" 6 "dom1" { target mips*-*-* } } } */ /* { dg-final { cleanup-tree-dump "dom1" } } */
RFA: Allow widening multiplication in tree-ssa/slsr-8.c
gcc.dg/tree-ssa/slsr-8.c does "(int) index * (size_t) element_size", which on LP64 targets can use a widening multiplication. Of course, for simple element sizes like these, we end up using a shift instead, but that's a decision that's rightly made later. Tested on x86_64-linux-gnu, mips64-linux-gnu and mipsisa64-elf. OK to install? Richard gcc/testsuite/ * gcc.dg/tree-ssa/slsr-8.c: Allow widening multiplications. Index: gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c === --- gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c 2013-01-13 08:05:03.403375571 + +++ gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c 2013-01-13 08:46:05.246550444 + @@ -18,6 +18,7 @@ f (int s, int *c) } /* There are 4 ' * ' instances in the decls (since "int * iftmp.0;" is - added), 1 parm, 2 in the code. */ -/* { dg-final { scan-tree-dump-times " \\* " 7 "optimized" } } */ + added), 1 parm, 2 in the code. The second one in the code can be + a widening mult. */ +/* { dg-final { scan-tree-dump-times " w?\\* " 7 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */
[committed] Add nomips16 attributes to gcc.dg/unroll_5.c
gcc.dg/unroll_5.c fails on MIPS16 because we don't recognise the MIPS16 XOR-based equality comparisons as being equality comparisons. I suppose that might be worth handling in principle, but unrolling isn't something that MIPS16 users are likely to want anyway, so it's not really an interesting use case. Ideally we'd XFAIL this for MIPS16, but that's difficult because of -mflip-mips16, which will cause one function to be compiled normally (and work) and another to be compiled as -mips16 (and fail). In the past I've added nomips16 attributes instead, so I've done the same here. Tested on x86_64-linux-gnu, mipsisa64-elf and mips64-linux-gnu. Applied. Richard gcc/testsuite/ * gcc.dg/unroll_5.c: Add nomips16 attributes. Index: gcc/testsuite/gcc.dg/unroll_5.c === --- gcc/testsuite/gcc.dg/unroll_5.c 2012-11-27 18:52:27.0 + +++ gcc/testsuite/gcc.dg/unroll_5.c 2013-01-12 12:43:37.086146761 + @@ -4,6 +4,11 @@ void abort (void); int *a; +/* Fails on MIPS16 because equality checks are implemented using XOR. + It's unlikely MIPS16 users would want unrolling anyway. */ +#ifdef __mips +__attribute__((nomips16)) +#endif int t() { int i; @@ -12,6 +17,9 @@ int t() return 1; return 0; } +#ifdef __mips +__attribute__((nomips16)) +#endif int t2() { int i;
Re: [Patch, fortran] PR54286 - [4.8 Regression] Accepts invalid proc-pointer assignments involving proc-ptr function result
Dear Janus (and Dominique), Thanks for the review. I found that the symmetrization is necessary experimentally :-) I did not think anything of it, since I have encountered such asymmetries elsewhere in interface.c. When I have a quiet moment, I'll try to understand why this is necessary for this patch. Committed as r195133. Overnight, class_optional_2.f90 started failing at -Os. I double checked that this patch did not cause the regression. If somebody else does not beat me to it, I'll investigate tonight. Cheers Paul On 12 January 2013 20:35, Janus Weil wrote: > Hi Paul, > >> It is something of an exaggeration to say that this PR is a regession, >> although it is true that gcc-4.7 gives error messages for the testcase >> in the correct places. In fact, these messages disappear if IMPLICIT >> INTEGER (a) at the start of the testcase. >> >> The fix ensures that the interfaces are selected and checked >> symmetrically in gfc_compare_interfaces. >> >> The submitted testcase only checks the errors. The other tests in the >> testsuite adequately check the functionality of procedure pointer >> assignments. >> >> Bootstrapped and regtested on FC17/i86_64 - OK for trunk > > thanks for the patch. It looks mostly good to me. > > Just one question: Why is the symmetrization actually needed? I.e. in > what respect is 'gfc_compare_interfaces' asymmetric? I don't directly > see that. To the contrary, it seems to me that gfc_compare_interfaces > is (at least in parts) already symmetrized internally, as e.g. in: > > if (count_types_test (f1, f2, p1, p2) > || count_types_test (f2, f1, p2, p1)) > return 0; > if (generic_correspondence (f1, f2, p1, p2) > || generic_correspondence (f2, f1, p2, p1)) > return 0; > > Also, note that gfc_compare_interfaces is never really called in a > symmetrized fashion elsewhere. Would we need this symmetrization in > other places too? > > Cheers, > Janus > > > >> 2013-01-12 Paul Thomas >> >> PR fortran/54286 >> * expr.c (gfc_check_pointer_assign): Ensure that both lvalue >> and rvalue interfaces are presented to gfc_compare_interfaces. >> Simplify references to interface names by using the symbols >> themselves. Call gfc_compare_interfaces with s1 and s2 inter- >> changed to overcome the asymmetry of this function. Do not >> repeat the check for the presence of s1 and s2. >> >> 2013-01-12 Paul Thomas >> >> PR fortran/54286 >> * gfortran.dg/proc_ptr_result_8.f90 : New test. -- The knack of flying is learning how to throw yourself at the ground and miss. --Hitchhikers Guide to the Galaxy
Re: RFA: Update copyright for libada
> Here's the result of running the copyright script on libada/. > Again, it's very short, but I've kept with the idiom of not > listing every file. > > Tested on x86_64-linux-gnu (with Ada enabled). OK to install? OK, thanks.
RE: [RFC] New feature to reuse one multilib among different targets
> -Original Message- > From: Joseph Myers [mailto:jos...@codesourcery.com] > Sent: Tuesday, January 08, 2013 12:13 AM > To: Terry Guo > Cc: gcc-patches@gcc.gnu.org > Subject: RE: [RFC] New feature to reuse one multilib among different targets > > On Fri, 7 Dec 2012, Terry Guo wrote: > > > 2012-12-07 Terry Guo > > > > * gcc/Makefile.in (s-mlib): New argument MULTILIB_REUSE. > > * gcc/doc/fragments.texi: Document MULTILIB_REUSE. > > * gcc/gcc.c (multilib_reuse): New internal spec. > > (set_multilib_dir): Also search multilib from multilib_reuse. > > * gcc/genmultilib (tmpmultilib3): Refactor code. > > (tmpmultilib4): Ditto. > > (multilib_reuse): New multilib argument. > > This patch is OK. > Thanks very much for review. Since there is no objection over the past days, I just committed those patches to trunk. BR, Terry
Re: RFA: Update copyright for libgfortran
Dear Richard, Yes, please do. Thanks for doing this. Paul On 13 January 2013 09:35, Richard Sandiford wrote: > Here's the result of running the copyright script on libgfortran/. > The script also updates libgfortran/generated, but I checked that > that part of the patch is the same as you'd get with the normal > --enable-maintainer-mode stuff. > > Tested on x86_64-linux-gnu. OK to install? > > Richard > > > libgfortran/ > Update copyright years > -- The knack of flying is learning how to throw yourself at the ground and miss. --Hitchhikers Guide to the Galaxy
Re: RFA: Update copyright for libgomp
On Sun, Jan 13, 2013 at 08:30:16AM +, Richard Sandiford wrote: > libgomp/ > Update copyright years Ok, thanks. Jakub
Re: Support for MIPS r5900
Hello Maciej, > Now if that failed for you, then it's a plain bug in GAS that should be > fixed. Can you therefore check whether a piece like: > > .setmips2 > ll $2, ($3) > > assembles correctly with -march=r5900? This seems to work. I didn't know that this would work. I thought it would never be possible to generate ll and sc. > Please note that the issue of LLD and SCD remains open -- these > instructions are a part of the base MIPS III 64-bit ISA and therefore they > are assumed by glibc and elsewhere to be present, and they are not > emulated by Linux. So not only you'll have to fix up glibc to surround > their use with .set mips3 for the n64 and n32 ABIs (please note that .set > mips3 is needed for LL and SC for these ABIs as well to avoid a > miscalculation of addresses where applicable), but you'll have to add > emulation code to Linux as well. I didn't see any code yet that uses lld/scd, so it doesn't seem to be a problem. I will create a patch which includes tests that will ensure that .set mips3 will work. > > So the FPU needs to be disabled and completely emulated by the kernel, > > because then all FPU instructions lead to an exception. This is working > > with Linux 2.6 on PS2. > > Naturally, as long as they got the Coprocessor Unusable exception right. Yes, this exception is also working for instructions with undefined behavior. > > There are even more problems when running unchanged code from official > > Fedora 12 on PS2, because of some different opcode encoding. The users > > of my PS2 Linux 2.6 complain about low speed, because many instructions > > are emulated. I need some fast implementation, even if the size of the > > floating point data types is smaller. So 32 bit FPU must be default for > > r5900. > > That sounds weird -- why would anyone want to use a non-standard encoding > for any instructions? The base MIPS III 64-bit ISA was set as far back as > in 1991. Is R5900 documentation publicly available BTW? The documentation for r5900 is available on the first DVD of Sony's Linux Toolkit and in the SDK for the PS2 which is only available for people which I would call "verified Sony customers". The TX79 core is similar to the r5900: http://www.lukasz.dk/files/tx79architecture.pdf But the TX79 has a 64 Bit FPU, so there are no real problems with opcode encoding. This document also says that mips isa III is supported, but not ll,sc,lld,scd,dmult and ddiv. In binutils/opcodes/mips-opc.c you can see the different opcode encoding for c.lt.s and trunc.w.s, the missing c.olt.s and cvt.w.s instructions. These are caused by the FPU. This is no problem on the TX79. For Fedora 12 I need to disable the FPU and emulate everything. One of the biggest problem is that most Linux programs use the rdhwr instruction (0x7c03e83b). I don't know any MIPS CPU which supports this instruction. This has the same encoding as the "sq v1,-6085(zero)" instruction on the r5900. Luckily this always leads to an alignment exception which is handled correctly by my Linux kernel to emulate rdhwr. Here is some information from the EE core user's manual regarding FPU: This unit is not IEEE 754 compatible. Supports single-precision format as defined in the IEEE 754 specification. Plus/Minus "0" in line with IEEE 754 specification are supported. NaNs and plus/minus infinities are not supported. No hardware exception mechanism to affect instruction execution. The FPU only supports "Rounding towards 0". ... the results may differ from the IEEE 754 Rounding to 0. This difference is usually restricted to the least significant bit only. NaN, +inf, -inf and denormalized numbers are not supported The FPU does not use the Guard, Round and Sticky bits during computations. Invalid Operation exceptions due to NaN, +/-inf and Inexact exceptions are not supported. Operations with different results: - 0/0 - Sqrt (negative number) - Division by zero - Exponent overflow - Exponent underflow - Conversion of Floating-point to Integer Overflow Best regards Jürgen
Re: RFA: Update copyright for libbacktrace
Richard Sandiford writes: > Here's the result of running the copyright script on libbacktrace/. > Tested on x86_64-linux-gnu. OK to install? > > Richard > > > libbacktrace/ > Update copyright years This is OK. Thanks. Ian
[PATCH, i386]: Fix memory model calculation in i386/sync.md patterns
Hello! While looking at recent Andi's atomic patches, I noticed that memory model operand is not properly masked in a couple of i386 sync.md patterns. 2013-01-13 Uros Bizjak * config/i386/sync.md (mem_thread_fence): Mask operands[0] with MEMMODEL_MASK to determine memory model. (atomic_store): Ditto from operands[2]. * config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool. Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN as obvious. The patch will be also committed to 4.7 branch. Uros. Index: i386.c === --- i386.c (revision 195133) +++ i386.c (working copy) @@ -42082,7 +42082,7 @@ static unsigned HOST_WIDE_INT ix86_memmodel_check (unsigned HOST_WIDE_INT val) { unsigned HOST_WIDE_INT model = val & MEMMODEL_MASK; - unsigned HOST_WIDE_INT strong; + bool strong; if (val & ~(unsigned HOST_WIDE_INT)(IX86_HLE_ACQUIRE|IX86_HLE_RELEASE |MEMMODEL_MASK) Index: sync.md === --- sync.md (revision 195133) +++ sync.md (working copy) @@ -101,9 +101,11 @@ [(match_operand:SI 0 "const_int_operand")] ;; model "" { + enum memmodel model = (enum memmodel) (INTVAL (operands[0]) & MEMMODEL_MASK); + /* Unless this is a SEQ_CST fence, the i386 memory model is strong enough not to require barriers of any kind. */ - if (INTVAL (operands[0]) == MEMMODEL_SEQ_CST) + if (model == MEMMODEL_SEQ_CST) { rtx (*mfence_insn)(rtx); rtx mem; @@ -200,7 +202,7 @@ UNSPEC_MOVA))] "" { - enum memmodel model = (enum memmodel) INTVAL (operands[2]); + enum memmodel model = (enum memmodel) (INTVAL (operands[2]) & MEMMODEL_MASK); if (mode == DImode && !TARGET_64BIT) {
Re: [PATCH 2/2] Support __ATOMIC_HLE_RELEASE for __atomic_clear/store_n
Hello! > __atomic_clear and __atomic_store_n didn't have code to generate > the TSX HLE RELEASE prefix. Add this plus test cases. +(define_insn "atomic_store_hle_release" + [(set (match_operand:ATOMIC 0 "memory_operand") + (unspec:ATOMIC [(match_operand:ATOMIC 1 "register_operand") + (match_operand:SI 2 "const_int_operand")] + UNSPEC_MOVA_RELEASE))] + "" + "%K2mov{}\t{%1, %0|%0, %1}") This pattern doesn't have any constraints! Also, mov insn can store immediates directly. + if (model & IX86_HLE_RELEASE) +{ + emit_insn (gen_atomic_store_hle_release (operands[0], operands[1], +operands[2])); + DONE; +} + /* For seq-cst stores, when we lack MFENCE, use XCHG. */ if (model == MEMMODEL_SEQ_CST && !(TARGET_64BIT || TARGET_SSE2)) What about __ATOMIC_SEQ_CST; should __atomic_clear (p, __ATOMIC_SEQ_CST | __ATOMIC_HLE_RELEASE); emit a mfence at the end; in case of for your test: xrelease movb $0, (%rdi) mfence ret ? + +void +hle_clear (int *p, int v) hle_clear (char *p) This argument should correspond to a bool, please see documentation. I have also attached the patch that implements sync.md fixes. Uros. Index: config/i386/sync.md === --- config/i386/sync.md (revision 195137) +++ config/i386/sync.md (working copy) @@ -224,8 +224,12 @@ DONE; } - /* Otherwise use a normal store. */ - emit_move_insn (operands[0], operands[1]); + /* Otherwise use a store... */ + if (INTVAL (operands[2]) & IX86_HLE_RELEASE) + emit_insn (gen_atomic_store_1 (operands[0], operands[1], +operands[2])); + else + emit_move_insn (operands[0], operands[1]); } /* ... followed by an MFENCE, if required. */ if (model == MEMMODEL_SEQ_CST) @@ -233,6 +237,14 @@ DONE; }) +(define_insn "atomic_store_1" + [(set (match_operand:ATOMIC 0 "memory_operand" "=m") + (unspec:ATOMIC [(match_operand:ATOMIC 1 "" "") + (match_operand:SI 2 "const_int_operand")] + UNSPEC_MOVA))] + "" + "%K2mov{}\t{%1, %0|%0, %1}") + (define_insn_and_split "atomic_storedi_fpu" [(set (match_operand:DI 0 "memory_operand" "=m,m,m") (unspec:DI [(match_operand:DI 1 "register_operand" "x,m,?r")]
Re: testsuite: missing or wrong dg-* directives?
On 01/12/13 22:02, Mikael Morin wrote: Le 08/01/2013 22:32, Harald Anlauf a écrit : On 12/28/12 21:49, Harald Anlauf wrote: Hello all, is there a default directive that is assumed when the testsuite is run? Running an "fgrep -L" on the fortran testsuite, I found several files that are missing either dg-do compile or run. I also found a funny typo in gomp/appendix-a/a.11.2.f90 ! { do-do compile } find gfortran.dg -name "*.[fF]90" -o -name "*.[fF]" | \ xargs fgrep -w -L 'dg-do' | \ xargs head -1 -v and manual inspection of the resulting output results in: - Typos [...] - Possibly missing { dg-do run } [...] Mind sending patch and changelog to @gcc-patches ? Here we go. No failures, but additional passes because of the dg-do run's. Somebody please take care of it? Harald 2013-01-13 Harald Anlauf * gfortran.dg/aint_anint_1.f90: Add dg-do run. * gfortran.dg/bounds_check_4.f90: Likewise. * gfortran.dg/inquire_10.f90: Likewise. * gfortran.dg/minloc_3.f90: Likewise. * gfortran.dg/minlocval_3.f90: Likewise. * gfortran.dg/module_double_reuse.f90: Likewise. * gfortran.dg/mvbits_1.f90: Likewise. * gfortran.dg/oldstyle_1.f90: Likewise. * gfortran.dg/pr20163-2.f: Likewise. * gfortran.dg/save_1.f90: Likewise. * gfortran.dg/scan_1.f90: Likewise. * gfortran.dg/select_char_1.f90: Likewise. * gfortran.dg/shape_4.f90: Likewise. * gfortran.dg/coarray_29_2.f90: Fix dg-do directive. * gfortran.dg/function_optimize_10.f90: Likewise. * gfortran.dg/gomp/appendix-a/a.11.2.f90: Likewise. * gfortran.dg/used_types_17.f90: Likewise. * gfortran.dg/used_types_18.f90: Likewise. Index: gcc/testsuite/gfortran.dg/oldstyle_1.f90 === --- gcc/testsuite/gfortran.dg/oldstyle_1.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/oldstyle_1.f90 (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } integer i, j /1/, g/2/, h ! { dg-warning "" "" } integer k, l(3) /2*2,1/ ! { dg-warning "" "" } real pi /3.1416/, e ! { dg-warning "" "" } Index: gcc/testsuite/gfortran.dg/scan_1.f90 === --- gcc/testsuite/gfortran.dg/scan_1.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/scan_1.f90 (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } program b integer w character(len=2) s, t Index: gcc/testsuite/gfortran.dg/aint_anint_1.f90 === --- gcc/testsuite/gfortran.dg/aint_anint_1.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/aint_anint_1.f90 (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } program aint_anint_1 implicit none Index: gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.2.f90 === --- gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.2.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.2.f90 (working copy) @@ -1,4 +1,4 @@ -! { do-do compile } +! { dg-do compile } SUBROUTINE A11_2(AA, BB, CC, DD, EE, FF, N) INTEGER N Index: gcc/testsuite/gfortran.dg/bounds_check_4.f90 === --- gcc/testsuite/gfortran.dg/bounds_check_4.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/bounds_check_4.f90 (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } subroutine foo(n,x) implicit none integer, intent(in) :: n Index: gcc/testsuite/gfortran.dg/save_1.f90 === --- gcc/testsuite/gfortran.dg/save_1.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/save_1.f90 (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } ! { dg-options "-O2 -fno-automatic" } subroutine foo (b) logical b Index: gcc/testsuite/gfortran.dg/coarray_29_2.f90 === --- gcc/testsuite/gfortran.dg/coarray_29_2.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/coarray_29_2.f90 (working copy) @@ -1,4 +1,4 @@ -! { dg-compile } +! { dg-do compile } ! { dg-options "-fcoarray=single" } ! Requires that coarray_29.f90 has been compiled before Index: gcc/testsuite/gfortran.dg/pr20163-2.f === --- gcc/testsuite/gfortran.dg/pr20163-2.f (revision 195136) +++ gcc/testsuite/gfortran.dg/pr20163-2.f (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } open(10,status="foo",err=100) ! { dg-warning "STATUS specifier in OPEN statement .* has invalid value" } call abort 100 continue Index: gcc/testsuite/gfortran.dg/minloc_3.f90 === --- gcc/testsuite/gfortran.dg/minloc_3.f90 (revision 195136) +++ gcc/testsuite/gfortran.dg/minloc_3.f90 (working copy) @@ -1,3 +1,4 @@ +! { dg-do run } real :: a(3
Re: [PATCH 2/2] Support __ATOMIC_HLE_RELEASE for __atomic_clear/store_n
On Sun, Jan 13, 2013 at 08:59:15PM +0100, Uros Bizjak wrote: > Hello! > > > __atomic_clear and __atomic_store_n didn't have code to generate > > the TSX HLE RELEASE prefix. Add this plus test cases. > > +(define_insn "atomic_store_hle_release" > + [(set (match_operand:ATOMIC 0 "memory_operand") > + (unspec:ATOMIC [(match_operand:ATOMIC 1 "register_operand") > + (match_operand:SI 2 "const_int_operand")] > +UNSPEC_MOVA_RELEASE))] > + "" > + "%K2mov{}\t{%1, %0|%0, %1}") > > This pattern doesn't have any constraints! Also, mov insn can store > immediates directly. Can you suggest a better pattern? > > + if (model & IX86_HLE_RELEASE) > +{ > + emit_insn (gen_atomic_store_hle_release (operands[0], > operands[1], > + operands[2])); > + DONE; > +} > + >/* For seq-cst stores, when we lack MFENCE, use XCHG. */ >if (model == MEMMODEL_SEQ_CST && !(TARGET_64BIT || TARGET_SSE2)) > > What about __ATOMIC_SEQ_CST; should > > __atomic_clear (p, __ATOMIC_SEQ_CST | __ATOMIC_HLE_RELEASE); > > emit a mfence at the end; in case of for your test: Originally I thought not, but now on reconsideration it's needed for older CPUs that don't know about the XRELEASE. And it may be even needed with TSX for the non transactional fallback execution. I'll fix the patch. > + > +void > +hle_clear (int *p, int v) > > hle_clear (char *p) > > This argument should correspond to a bool, please see documentation. Not sure I understand? Which documentation? This is just a random test case >DONE; > }) > > +(define_insn "atomic_store_1" > + [(set (match_operand:ATOMIC 0 "memory_operand" "=m") > + (unspec:ATOMIC [(match_operand:ATOMIC 1 "" "") > + (match_operand:SI 2 "const_int_operand")] > +UNSPEC_MOVA))] > + "" > + "%K2mov{}\t{%1, %0|%0, %1}") Is that the updated pattern you wanted? It looks similar to mine. -Andi -- a...@linux.intel.com -- Speaking for myself only.
Re: [PATCH 2/2] Support __ATOMIC_HLE_RELEASE for __atomic_clear/store_n
On Sun, Jan 13, 2013 at 9:36 PM, Andi Kleen wrote: >> > __atomic_clear and __atomic_store_n didn't have code to generate >> > the TSX HLE RELEASE prefix. Add this plus test cases. >> >> +(define_insn "atomic_store_hle_release" >> + [(set (match_operand:ATOMIC 0 "memory_operand") >> + (unspec:ATOMIC [(match_operand:ATOMIC 1 "register_operand") >> + (match_operand:SI 2 "const_int_operand")] >> +UNSPEC_MOVA_RELEASE))] >> + "" >> + "%K2mov{}\t{%1, %0|%0, %1}") >> >> This pattern doesn't have any constraints! Also, mov insn can store >> immediates directly. > > Can you suggest a better pattern? It is implemented in the patch, attached to my previous message. >> >> + if (model & IX86_HLE_RELEASE) >> +{ >> + emit_insn (gen_atomic_store_hle_release (operands[0], >> operands[1], >> + operands[2])); >> + DONE; >> +} >> + >>/* For seq-cst stores, when we lack MFENCE, use XCHG. */ >>if (model == MEMMODEL_SEQ_CST && !(TARGET_64BIT || TARGET_SSE2)) >> >> What about __ATOMIC_SEQ_CST; should >> >> __atomic_clear (p, __ATOMIC_SEQ_CST | __ATOMIC_HLE_RELEASE); >> >> emit a mfence at the end; in case of for your test: > > Originally I thought not, but now on reconsideration it's needed for > older CPUs that don't know about the XRELEASE. And it may be even needed > with TSX for the non transactional fallback execution. I'll fix the patch. Also fixed in my patch. It emits mfence at the end. >> + >> +void >> +hle_clear (int *p, int v) >> >> hle_clear (char *p) >> >> This argument should correspond to a bool, please see documentation. > > > Not sure I understand? Which documentation? This is just a random test case Ah, I was referring to the gcc documentation about __atomic_clear. >> +(define_insn "atomic_store_1" >> + [(set (match_operand:ATOMIC 0 "memory_operand" "=m") >> + (unspec:ATOMIC [(match_operand:ATOMIC 1 "" "") >> + (match_operand:SI 2 "const_int_operand")] >> +UNSPEC_MOVA))] >> + "" >> + "%K2mov{}\t{%1, %0|%0, %1}") > > Is that the updated pattern you wanted? It looks similar to mine. Yes the attached patch actually implements all proposed fixes. Uros.
Re: [PATCH 2/2] Support __ATOMIC_HLE_RELEASE for __atomic_clear/store_n
> >> +(define_insn "atomic_store_1" > >> + [(set (match_operand:ATOMIC 0 "memory_operand" "=m") > >> + (unspec:ATOMIC [(match_operand:ATOMIC 1 "" > >> "") > >> + (match_operand:SI 2 "const_int_operand")] > >> +UNSPEC_MOVA))] > >> + "" > >> + "%K2mov{}\t{%1, %0|%0, %1}") > > > > Is that the updated pattern you wanted? It looks similar to mine. > > Yes the attached patch actually implements all proposed fixes. Ok great. Can you just commit it then? It looks good to me. -Andi -- a...@linux.intel.com -- Speaking for myself only.
Re: [patch, Fortran] PR 55806 - Inefficient ANY with array constructors
Hi Mikael, thanks a lot for your comments! + actual_arglist->expr = gfc_copy_expr (e); + actual_arglist->next = gfc_get_actual_arglist (); Another one is needed. I get a segmentation fault with SUM. Fixed by using gfc_build_intrisic_call. I have also put SUM into the test case. + if (dim != NULL) +{ Minor, but I think you can assume dim != NULL. Same for mask. Fixed. + /* We changed things from under the expression walker. Walking the + old tree would mess up things, so let's not do that. */ + return 1; I think this prevents any further reduction optimization. The following variant of your test case doesn't avoid the temporary: You're right; I also could not come up with a test case where this didn't work. I have put this do i=1,3 if (any([abs(a(i,1) - b(i,1)) > acc, & (j==i+1,j=3,8)])) cycle if (any([abs(a(i,2) - b(i,2)) > acc, & abs(a(i,3) - b(i,3)) > acc, lo(i,:)])) cycle c = c + i end do into the test case. Updated test case and patch attached. OK for trunk? Thomas 2013-01-13 Thomas Koenig PR fortran/55806 * frontend-passes.c (optimize_reduction): New function, including prototype. (callback_reduction): Likewise. (gfc_run_passes): Also run optimize_reduction. (copy_walk_reduction_arg): New function. (dummy_code_callback): New function. 2013-01-13 Thomas Koenig PR fortran/55806 * gfortran.dg/array_constructor_40.f90: New test. Index: frontend-passes.c === --- frontend-passes.c (Revision 195136) +++ frontend-passes.c (Arbeitskopie) @@ -40,6 +40,8 @@ static bool optimize_lexical_comparison (gfc_expr static void optimize_minmaxloc (gfc_expr **); static bool is_empty_string (gfc_expr *e); static void doloop_warn (gfc_namespace *); +static void optimize_reduction (gfc_namespace *); +static int callback_reduction (gfc_expr **, int *, void *); /* How deep we are inside an argument list. */ @@ -107,6 +109,7 @@ gfc_run_passes (gfc_namespace *ns) expr_array = XNEWVEC(gfc_expr **, expr_size); optimize_namespace (ns); + optimize_reduction (ns); if (gfc_option.dump_fortran_optimized) gfc_dump_parse_tree (ns, stdout); @@ -180,7 +183,144 @@ optimize_expr (gfc_expr **e, int *walk_subtrees AT return 0; } +/* Auxiliary function to handle the arguments to reduction intrnisics. If the + function is a scalar, just copy it; otherwise returns the new element, the + old one can be freed. */ +static gfc_expr * +copy_walk_reduction_arg (gfc_expr *e, gfc_expr *fn) +{ + gfc_expr *fcn; + gfc_isym_id id; + + if (e->rank == 0 || e->expr_type == EXPR_FUNCTION) +fcn = gfc_copy_expr (e); + else +{ + id = fn->value.function.isym->id; + + if (id == GFC_ISYM_SUM || id == GFC_ISYM_PRODUCT) + fcn = gfc_build_intrinsic_call (current_ns, + fn->value.function.isym->id, + fn->value.function.isym->name, + fn->where, 3, gfc_copy_expr (e), + NULL, NULL); + else if (id == GFC_ISYM_ANY || id == GFC_ISYM_ALL) + fcn = gfc_build_intrinsic_call (current_ns, + fn->value.function.isym->id, + fn->value.function.isym->name, + fn->where, 2, gfc_copy_expr (e), + NULL); + else + gfc_error ("Illegal id in copy_walk_reduction_arg"); + + fcn->symtree->n.sym->attr.access = ACCESS_PRIVATE; +} + + (void) gfc_expr_walker (&fcn, callback_reduction, NULL); + + return fcn; +} + +/* Callback function for optimzation of reductions to scalars. Transform ANY + ([f1,f2,f3, ...]) to f1 .or. f2 .or. f3 .or. ..., with ANY, SUM and PRODUCT + correspondingly. Handly only the simple cases without MASK and DIM. */ + +static int +callback_reduction (gfc_expr **e, int *walk_subtrees ATTRIBUTE_UNUSED, + void *data ATTRIBUTE_UNUSED) +{ + gfc_expr *fn, *arg; + gfc_intrinsic_op op; + gfc_isym_id id; + gfc_actual_arglist *a; + gfc_actual_arglist *dim; + gfc_constructor *c; + gfc_expr *res, *new_expr; + gfc_actual_arglist *mask; + + fn = *e; + + if (fn->rank != 0 || fn->expr_type != EXPR_FUNCTION + || fn->value.function.isym == NULL) +return 0; + + id = fn->value.function.isym->id; + + if (id != GFC_ISYM_SUM && id != GFC_ISYM_PRODUCT + && id != GFC_ISYM_ANY && id != GFC_ISYM_ALL) +return 0; + + a = fn->value.function.actual; + + /* Don't handle MASK or DIM. */ + + dim = a->next; + + if (dim->expr != NULL) +return 0; + + mask = dim->next; + if (mask != NULL) +if ( mask->expr != NULL) + return 0; + + arg = a->expr; + + if (arg->expr_type != EXPR_ARRAY) +return 0; + + switch (id) +{ +case GFC_ISYM_SUM: + op = INTRINSIC_PLUS; + break; + +case GFC_ISYM_PRODUCT: + op = INTRINSIC_TIMES; + break; + +case GFC_ISYM_ANY: + op = INTRINSIC_OR; + break; + +case GFC_ISYM_ALL: + op
Re: [PATCH 2/2] Support __ATOMIC_HLE_RELEASE for __atomic_clear/store_n
On Sun, Jan 13, 2013 at 11:12 PM, Andi Kleen wrote: >> >> +(define_insn "atomic_store_1" >> >> + [(set (match_operand:ATOMIC 0 "memory_operand" "=m") >> >> + (unspec:ATOMIC [(match_operand:ATOMIC 1 "" >> >> "") >> >> + (match_operand:SI 2 "const_int_operand")] >> >> +UNSPEC_MOVA))] >> >> + "" >> >> + "%K2mov{}\t{%1, %0|%0, %1}") >> > >> > Is that the updated pattern you wanted? It looks similar to mine. >> >> Yes the attached patch actually implements all proposed fixes. > > Ok great. Can you just commit it then? It looks good to me. No problem, but what about this part: diff --git a/gcc/builtins.c b/gcc/builtins.c index 2b615a1..c283869 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -5556,6 +5556,8 @@ expand_builtin_atomic_clear (tree exp) return const0_rtx; } + /* need target hook there to check for not hle acquire */ + if (HAVE_atomic_clear) { emit_insn (gen_atomic_clear (mem, model)); Middle-end support should be implemented before target support is committed. So, please figure out how to emit correct error on unsupported models and get middle-end patch reviewed first. We do get "Error: instruction `mov' after `xacquire' not allowed" assembler error with "xacquire movb $0,mem" asm, though. Uros.
Re: [PATCH 2/2] Support __ATOMIC_HLE_RELEASE for __atomic_clear/store_n
On Sun, Jan 13, 2013 at 11:23:24PM +0100, Uros Bizjak wrote: > On Sun, Jan 13, 2013 at 11:12 PM, Andi Kleen wrote: > >> >> +(define_insn "atomic_store_1" > >> >> + [(set (match_operand:ATOMIC 0 "memory_operand" "=m") > >> >> + (unspec:ATOMIC [(match_operand:ATOMIC 1 "" > >> >> "") > >> >> + (match_operand:SI 2 "const_int_operand")] > >> >> +UNSPEC_MOVA))] > >> >> + "" > >> >> + "%K2mov{}\t{%1, %0|%0, %1}") > >> > > >> > Is that the updated pattern you wanted? It looks similar to mine. > >> > >> Yes the attached patch actually implements all proposed fixes. > > > > Ok great. Can you just commit it then? It looks good to me. > > No problem, but what about this part: Right now it just means its silently ignored, no wrong code generated. If people are ok with a new target hook I can add one. There are some more bugs in this area, like PR55947 Giving a warning is imho less important than supporting this at all. So I would prefer to not delay this patch. > > diff --git a/gcc/builtins.c b/gcc/builtins.c > index 2b615a1..c283869 100644 > --- a/gcc/builtins.c > +++ b/gcc/builtins.c > @@ -5556,6 +5556,8 @@ expand_builtin_atomic_clear (tree exp) >return const0_rtx; > } > > + /* need target hook there to check for not hle acquire */ > + >if (HAVE_atomic_clear) > { >emit_insn (gen_atomic_clear (mem, model)); > > Middle-end support should be implemented before target support is > committed. So, please figure out how to emit correct error on > unsupported models and get middle-end patch reviewed first. We do get > "Error: instruction `mov' after `xacquire' not allowed" assembler > error with "xacquire movb $0,mem" asm, though. The sync.md code is only called for the acquire bit. The only case where it may happen I guess if someone sets both. -Andi -- a...@linux.intel.com -- Speaking for myself only.
Fix Thumb-1 jump table alignment length calculation (PR target/43961)
Bug 43961 (a regression in 4.5 and later) is the ARM back end generating an out-of-range Thumb-1 branch because the calculation (in architecture-independent code) of the size of a jump table fails to allow for alignment. Jump table alignment should be allowed for through ADDR_VEC_ALIGN, but the ASM back end has a comment /* Jump table alignment is explicit in ASM_OUTPUT_CASE_LABEL. */ and defines ADDR_VEC_ALIGN to 0, so meaning that calculations relating to branch ranges fail to allow for the alignment. Bug 43961 has an old patch attached to define ADDR_VEC_ALIGN properly. Although that fixes the Thumb-1 issue, it introduces other problems for Thumb-2 jump tables because of an interaction between ADDR_VEC_ALIGN and CASE_VECTOR_SHORTEN_MODE. When CASE_VECTOR_SHORTEN_MODE is defined, the size of jump table entries, and so the alignment required for the jump table, can be changed in shorten_branches, but the alignment of the label before the jump table has already been computed based on the original mode, and is not then updated for the changed mode. This results in alignment being used before a Thumb-2 tbb jump table, which needs to follow the tbb instruction immediately. This patch arranges for shorten_branches to recalculate the alignments of labels before jump tables if CASE_VECTOR_SHORTEN_MODE. The recalculation logic may not match the logic for the original calculation in all cases - doing so would probably require additional information to be stored at the time of the original calculation so it is still available for the recalculation. But I believe the recalculated value based on ADDR_VEC_ALIGN should always work - and in the cases where, as for the Thumb-2 tbb case, overalignment will not work, only the recalculated value is going to be correct. (There is no testcase in this patch because this sort of thing is always extremely sensitive to slight changes in code generation between compiler versions and tends to require large, version-dependent testcases.) Tested with no regressions with cross to arm-none-linux-gnueabi (both default configuration, testing both -marm and -mthumb, and v7-A, again testing both -marm and -mthumb). OK to commit? 2013-01-13 Joseph Myers Mikael Pettersson PR target/43961 * config/arm/arm.h (ADDR_VEC_ALIGN): Align SImode jump tables for Thumb. (ASM_OUTPUT_CASE_LABEL): Remove. (ASM_OUTPUT_BEFORE_CASE_LABEL): Define to empty. * final.c (shorten_branches): Update alignment of labels before jump tables if CASE_VECTOR_SHORTEN_MODE. Index: gcc/final.c === --- gcc/final.c (revision 195098) +++ gcc/final.c (working copy) @@ -1182,6 +1182,29 @@ shorten_branches (rtx first) if (LABEL_P (insn)) { int log = LABEL_TO_ALIGNMENT (insn); + +#ifdef CASE_VECTOR_SHORTEN_MODE + /* If the mode of a following jump table was changed, we +may need to update the alignment of this label. */ + rtx next; + bool next_is_jumptable; + + next = next_nonnote_insn (insn); + next_is_jumptable = next && JUMP_TABLE_DATA_P (next); + if ((JUMP_TABLES_IN_TEXT_SECTION + || readonly_data_section == text_section) + && next_is_jumptable) + { + int newlog = ADDR_VEC_ALIGN (next); + if (newlog != log) + { + log = newlog; + LABEL_TO_ALIGNMENT (insn) = log; + something_changed = 1; + } + } +#endif + if (log > insn_current_align) { int align = 1 << log; Index: gcc/config/arm/arm.h === --- gcc/config/arm/arm.h(revision 195098) +++ gcc/config/arm/arm.h(working copy) @@ -2129,20 +2129,13 @@ extern int making_const_table; asm_fprintf (STREAM, "\tpop {%r}\n", REGNO);\ } while (0) -/* Jump table alignment is explicit in ASM_OUTPUT_CASE_LABEL. */ -#define ADDR_VEC_ALIGN(JUMPTABLE) 0 +#define ADDR_VEC_ALIGN(JUMPTABLE) \ + ((TARGET_THUMB && GET_MODE (PATTERN (JUMPTABLE)) == SImode) ? 2 : 0) -/* This is how to output a label which precedes a jumptable. Since - Thumb instructions are 2 bytes, we may need explicit alignment here. */ -#undef ASM_OUTPUT_CASE_LABEL -#define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, JUMPTABLE)\ - do \ -{ \ - if (TARGET_THUMB && GET_MODE (PATTERN (JUMPTABLE)) == SImode)\ -ASM_OUTPUT_ALIGN (FILE, 2);\ - (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM); \ -}
Re: [Patch, libfortran] Improve performance of byte swapped IO
PING**1.2 Yet another slightly updated patch attached. Compared to the previous version, now with specializations for size 12 and 16 as well. For the real(10) benchmark, with the previous v3 patch (please disregard the absolute values in the post quoted below, there were wrong due to a bug): Unformatted sequential write/read performance test Record size Write MB/s Read MB/s == 4 80.578833140738340127.33074266188656 8 137.61682156650559184.49033790407984 16 202.72871312800621275.98801561061816 32 275.33538767460863413.43956672052303 64 341.04488670485119555.13744525826564 128 384.77917051919820671.44655208024699 256 410.97208129045833763.97660513918527 512 425.76619227779878826.41086693364593 1024 430.77035999730009840.30757120448550 2048 438.30318459339475885.50033810296600 4096 455.79422809097599919.78265920652086 8192 465.74499205886326959.06963983370918 16384 472.48133493971142991.11244162081744 32768 471.000246195676031015.7428144049615 65536 474.912352809499851021.2150519080892 131072 475.186644874409011006.3701982554830 262144 478.00435092846868985.17141300594039 524288 476.72837201590363991.74226579987987 With the new v4 patch: Unformatted sequential write/read performance test Record size Write MB/s Read MB/s == 4 87.353141847504133145.09410391177835 8 166.95093628370549223.60877830048437 16 272.20937208187746364.91673986840277 32 415.26016354252715599.41744252952310 64 592.97676703528009900.53345964312450 128 748.272185471476861189.7131837787238 256 874.830985067143841561.3649529261234 512 935.694944811442841823.1760143164879 1024 983.516894918132151931.8773088107300 2048 1009.54917616513961971.6978586130062 4096 1115.58620276585522119.4151169997808 8192 1172.94002295682872184.1403983641089 16384 1222.66592841531682258.5490449229878 32768 1242.24176266972932251.8159046253918 65536 1227.9967943962313.4106672387143 131072 1204.42956565440522129.1309150039478 262144 1135.79056143784582154.7146453789856 524288 1075.57690744026402170.5151501933169 On Fri, Jan 11, 2013 at 10:41 PM, Janne Blomqvist wrote: > PING. > > Slightly updated patch attached, which further improves the generic > size fallback that is used when the element size is not 2/4/8 bytes. > Changing the us_perf benchmark to use real(10), with the v2 patch the > performance is: > > Unformatted sequential write/read performance test > Record size Write MB/s Read MB/s > == >4 59.02855042952208586.019754350948787 >8 79.02832706313059095.803502000733374 > 16 99.980457395413296138.68367462874946 > 32 122.56886206338788180.05609910155042 > 64 152.00478266944486212.69931319407567 > 128 197.74137934940202235.19728791956828 > 256 155.36245780017779244.60578379215929 > 512 157.13385845966246245.07467397691480 > 1024 177.26553799130201260.44908357795623 > 2048 208.22852888945587260.21587143113527 > 4096 222.88410474980634262.66162209490591 > 8192 226.71167580652920265.81191407123663 >16384 206.51818241747065263.59395165591724 >32768 230.18707026455866265.88990325026526 >65536 229.19783089391504268.04485112932684 > 131072 231.1221566209267.40543904427710 > 262144 230.72012123598142267.60086931504122 > 524288 230.48959460456055268.78750211303725 > > With the new v3 patch I get > > Unformatted sequential write/read performance test > Record size Write MB/s Read MB/s > == >4 59.77906112123994192.777125264010024 >8 92.727504266051341126.64775563782673 > 16 128.94793911163904184.69194300482837 > 32 169.78916283536847267.06752001266767 > 64 209.50296476919556341.60515130910238 > 128 236.36709738360679416.73212655
Re: testsuite: missing or wrong dg-* directives?
Am 13.01.2013 21:30, schrieb Harald Anlauf: On 01/12/13 22:02, Mikael Morin wrote: Le 08/01/2013 22:32, Harald Anlauf a écrit : On 12/28/12 21:49, Harald Anlauf wrote: Hello all, is there a default directive that is assumed when the testsuite is run? Running an "fgrep -L" on the fortran testsuite, I found several files that are missing either dg-do compile or run. I also found a funny typo in gomp/appendix-a/a.11.2.f90 ! { do-do compile } There are several other oddities: d_g-final, braces have to be separated by spaces. Not sure about the double braces in lto, I guess they act simply as single braces. class_array_10.f03:! { dg-do compile} coarray_lib_token_4.f90:! { d_g-final { scan-tree-dump-times "bar \\(&parm.\[0-9\]+, caf_token.\[0-9\]+, \\(\\(integer\\(kind=.\\) parm.\[0-9\]+.data - \\(integer\\(kind=.\\)\\) x.\[0-9\]+\\) \\+ caf_offset.\[0-9\]+\\);" 1 "original" } } continuation_9.f90:! { dg-warning "not allowed by itself in line 3" "" {target "*-*-*"} 0 } continuation_9.f90:! { dg-warning "not allowed by itself in line 4" "" {target "*-*-*"} 0 } continuation_9.f90:! { dg-warning "not allowed by itself in line 5" "" {target "*-*-*"} 0 } extends_11.f03:! { dg-final { scan-tree-dump-times " +recruit\\.service\\.education\\.person\\.ss =" 8 "original"} } lto/20091016-1_0.f90:! { dg-lto-options {{-flto -g -fPIC -r -nostdlib} {-O -flto -g -fPIC -r -nostdlib}} } lto/20100110-1_0.f90:! { dg-lto-options {{ -O1 -flto }} } lto/pr41521_0.f90:! { dg-lto-options {{-g -flto} {-g -O -flto}} } lto/pr46036_0.f90:! { dg-lto-options {{ -O -flto -ftree-vectorize }} } lto/pr46629_0.f90:! { dg-lto-options {{ -O2 -flto -ftree-vectorize -march=x86-64 }} { target i?86-*-* x86_64-*-* } } lto/pr46629_0.f90:! { dg-lto-options {{ -O2 -flto -ftree-vectorize }} } lto/pr46911_0.f:! { dg-lto-options {{ -O2 -flto -g }} } lto/pr47839_0.f90:! { dg-lto-options {{ -g -flto }} } move_alloc_13.f90:! { dg-do run} structure_constructor_11.f90:! { dg-do run} tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 10" "Nonconforming tab" {target "*-*-*"} 0 } tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 11" "Nonconforming tab" {target "*-*-*"} 0 } tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 8" "Nonconforming tab" {target "*-*-*"} 0 } tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 9" "Nonconforming tab" {target "*-*-*"} 0 } vect/vect-2.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" {target { vect_no_align || { { ! vector_alignment_reachable } && { ! vect_hw_misalign } } } } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable}} } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vect_no_align} && { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || { ! vector_alignment_reachable} } } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vect_no_align} && { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } vect/vect-4.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } vect/vect-4.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } vect/vect-4.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } vect/vect-5.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } vect/vect-5.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } warning-directive-2.F90:! { dg-message "some warnings being treated as errors" "" {target "*-*-*"} 0 } cheers, Manfred find gfortran.dg -name "*.[fF]90" -o -name "*.[fF]" | \ xargs fgrep -w -L 'dg-do' | \ xargs head -1 -v and manual inspection of the resulting output results in: - Typos [...] - Possibly missing { dg-do run } [...] Mind sending patch and changelog to @gcc-patches ? Here we go. No failures, but additional passes because of the dg-do run's. Somebody please take care of it? Harald 2013-01-13 Harald Anlauf * gfortran.dg/aint_anint_1.f90: Add dg-do run. * gfortran.dg/bounds_check_4.f90: Likewise. * gfortran.dg/inquire_10.f90: L
Re: testsuite: missing or wrong dg-* directives?
Am 14.01.2013 00:10, schrieb Manfred Schwarb: Am 13.01.2013 21:30, schrieb Harald Anlauf: On 01/12/13 22:02, Mikael Morin wrote: Le 08/01/2013 22:32, Harald Anlauf a écrit : On 12/28/12 21:49, Harald Anlauf wrote: Hello all, is there a default directive that is assumed when the testsuite is run? Running an "fgrep -L" on the fortran testsuite, I found several files that are missing either dg-do compile or run. I also found a funny typo in gomp/appendix-a/a.11.2.f90 ! { do-do compile } There are several other oddities: d_g-final, braces have to be separated by spaces. Not sure about the double braces in lto, I guess they act simply as single braces. Oh, and then there is the "dg-do run" hack (two spaces, see cray_pointers_2.f90). I guess the other occurrences are not intended: default_initialization_5.f90:! { dg-do run } io_real_boz_3.f90:! { dg-do run } io_real_boz_4.f90:! { dg-do run } io_real_boz_5.f90:! { dg-do run } class_array_10.f03:! { dg-do compile} coarray_lib_token_4.f90:! { d_g-final { scan-tree-dump-times "bar \\(&parm.\[0-9\]+, caf_token.\[0-9\]+, \\(\\(integer\\(kind=.\\) parm.\[0-9\]+.data - \\(integer\\(kind=.\\)\\) x.\[0-9\]+\\) \\+ caf_offset.\[0-9\]+\\);" 1 "original" } } continuation_9.f90:! { dg-warning "not allowed by itself in line 3" "" {target "*-*-*"} 0 } continuation_9.f90:! { dg-warning "not allowed by itself in line 4" "" {target "*-*-*"} 0 } continuation_9.f90:! { dg-warning "not allowed by itself in line 5" "" {target "*-*-*"} 0 } extends_11.f03:! { dg-final { scan-tree-dump-times " +recruit\\.service\\.education\\.person\\.ss =" 8 "original"} } lto/20091016-1_0.f90:! { dg-lto-options {{-flto -g -fPIC -r -nostdlib} {-O -flto -g -fPIC -r -nostdlib}} } lto/20100110-1_0.f90:! { dg-lto-options {{ -O1 -flto }} } lto/pr41521_0.f90:! { dg-lto-options {{-g -flto} {-g -O -flto}} } lto/pr46036_0.f90:! { dg-lto-options {{ -O -flto -ftree-vectorize }} } lto/pr46629_0.f90:! { dg-lto-options {{ -O2 -flto -ftree-vectorize -march=x86-64 }} { target i?86-*-* x86_64-*-* } } lto/pr46629_0.f90:! { dg-lto-options {{ -O2 -flto -ftree-vectorize }} } lto/pr46911_0.f:! { dg-lto-options {{ -O2 -flto -g }} } lto/pr47839_0.f90:! { dg-lto-options {{ -g -flto }} } move_alloc_13.f90:! { dg-do run} structure_constructor_11.f90:! { dg-do run} tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 10" "Nonconforming tab" {target "*-*-*"} 0 } tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 11" "Nonconforming tab" {target "*-*-*"} 0 } tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 8" "Nonconforming tab" {target "*-*-*"} 0 } tab_continuation.f:! { dg-warning "Nonconforming tab character in column 1 of line 9" "Nonconforming tab" {target "*-*-*"} 0 } vect/vect-2.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" {target { vect_no_align || { { ! vector_alignment_reachable } && { ! vect_hw_misalign } } } } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable}} } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vect_no_align} && { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || { ! vector_alignment_reachable} } } } } vect/vect-3.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vect_no_align} && { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } vect/vect-4.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } vect/vect-4.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } vect/vect-4.f90:! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } vect/vect-5.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } vect/vect-5.f90:! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } warning-directive-2.F90:! { dg-message "some warnings being treated as errors" "" {target "*-*-*"} 0 } cheers, Manfred find gfortran.dg -name "*.[fF]90" -o -name "*.[fF]" | \ xargs fgrep -w -L 'dg-do' | \ xargs head -1 -v and manual inspection of the resulting output results in: - Typos [...] - Possibly missing { dg-do run } [...] Min
[PATCH] libstdc++: Add mem_order_hle_acquire/release to atomic.h v2
From: Andi Kleen The underlying compiler supports additional __ATOMIC_HLE_ACQUIRE/RELEASE memmodel flags for TSX, but this was not exposed to the C++ wrapper. Handle it there. These are additional flags, so some of assert checks need to mask off the flags before checking the memory model type. This is a reworked version over the version last year, including using operator overloading as suggested by Jonathan Wakely and a real test case Needs the earlier __atomic_clear/store HLE fix patch to make the test case succeed. Passes bootstrap and testsuite on x86_64-linux. libstdc++/: 2013-01-12 Andi Kleen Jonathan Wakely PR libstdc++/55223 * include/bits/atomic_base.h (__memory_order_modifier): Add __memory_order_mask, __memory_order_modifier_mask, __memory_order_hle_acquire, __memory_order_hle_release. (operator|,operator&): Add. (__cmpexch_failure_order): Rename to __cmpexch_failure_order2. (__cmpexch_failure_order): Add. (clear, store, load, compare_exchange_weak, compare_exchange_strong): Handle flags. * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Add. --- libstdc++-v3/include/bits/atomic_base.h| 142 +--- .../atomic_flag/test_and_set/explicit-hle.cc | 120 + 2 files changed, 217 insertions(+), 45 deletions(-) create mode 100644 libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 8ce5553..d69bc76 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -59,14 +59,41 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order_seq_cst } memory_order; + enum __memory_order_modifier +{ + __memory_order_mask = 0x0, + __memory_order_modifier_mask = 0x, + __memory_order_hle_acquire = 0x1, + __memory_order_hle_release = 0x2 +}; + + constexpr memory_order + operator|(memory_order __m, __memory_order_modifier __mod) + { +return memory_order(__m | int(__mod)); + } + + constexpr memory_order + operator&(memory_order __m, __memory_order_modifier __mod) + { +return memory_order(__m & int(__mod)); + } + // Drop release ordering as per [atomics.types.operations.req]/21 constexpr memory_order - __cmpexch_failure_order(memory_order __m) noexcept + __cmpexch_failure_order2(memory_order __m) noexcept { return __m == memory_order_acq_rel ? memory_order_acquire : __m == memory_order_release ? memory_order_relaxed : __m; } + constexpr memory_order + __cmpexch_failure_order(memory_order __m) noexcept + { +return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) + | (__m & __memory_order_modifier_mask)); + } + inline void atomic_thread_fence(memory_order __m) noexcept { __atomic_thread_fence(__m); } @@ -268,9 +295,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void clear(memory_order __m = memory_order_seq_cst) noexcept { - __glibcxx_assert(__m != memory_order_consume); - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_consume); + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); __atomic_clear (&_M_i, __m); } @@ -278,9 +306,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void clear(memory_order __m = memory_order_seq_cst) volatile noexcept { - __glibcxx_assert(__m != memory_order_consume); - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_consume); + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); __atomic_clear (&_M_i, __m); } @@ -431,9 +460,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); +memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + __glibcxx_assert(__b != memory_order_consume); __atomic_store_n(&_M_i, __i, __m); } @@ -442,9 +472,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile noexcept { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_