[patch, fortran] PR 56867

2014-12-25 Thread Thomas Koenig
Hello world,

Merry Christmas everybody!

This patch resolves one of the remaining F95 bugs by introducing a
temporary for the case

c(:)(1:2) = c(2)(2:3)

It does have the disadvantage that

c(:)(1:2) = c(2)(3:4)

now also creates an unnecessary temporary because gfc_check_dependency
is not smart about substrings.  However, I think this is OK for fixing
a wrong-code bug.

I would downgrade the PR to an enhancement request after commiting this
fix, and look at fixing the substring handling.

OK for trunk?  What about the other open branches?

Thomas


2014-12-25  Thomas Koenig  

PR fortran/56867
* trans-array.c (gfc_conv_resolve_dependencies):  Also check
dependencies when there may be substrings of character arrays.

2014-12-25  Thomas Koenig  

PR fortran/56867
* gfortran.dg/dependency_45.f90:  New test.
Index: trans-array.c
===
--- trans-array.c	(Revision 219011)
+++ trans-array.c	(Arbeitskopie)
@@ -4355,6 +4355,13 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop
 	  && ss_expr->rank)
 	nDepend = gfc_check_dependency (dest_expr, ss_expr, true);
 
+	  /* Check for cases like   c(:)(1:2) = c(2)(2:3)  */
+	  if (!nDepend && dest_expr->rank > 0
+	  && dest_expr->ts.type == BT_CHARACTER
+	  && ss_expr->expr_type == EXPR_VARIABLE)
+	
+	nDepend = gfc_check_dependency (dest_expr, ss_expr, false);
+
 	  continue;
 	}
 
! { dg-do run }
! { dg-options "-Warray-temporaries" }
! PR 56867 - substrings were not checked for dependency.
program main
  character(len=4) :: a
  character(len=4) :: c(3)
  c(1) = 'abcd'
  c(2) = '1234'
  c(3) = 'wxyz'
  c(:)(1:2) = c(2)(2:3)   ! { dg-warning "temporary array" }
  if (c(3) .ne. '23yz') call abort
end program main


Re: [patch, fortran] PR 56867

2014-12-25 Thread Dominique Dhumieres
> OK for trunk?  What about the other open branches?

The patch looks good. In the test "temporary array" should be
replaced with "array temporary".

Thanks for the patch and Merry Christmas,

Dominique


Re: PATCH: PR target/61296: Excessive alignment in ix86_data_alignment

2014-12-25 Thread Gerald Pfeifer
On Wednesday 2014-12-17 06:49, H.J. Lu wrote:
> Index: gcc-5/changes.html
> ===
> RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
> retrieving revision 1.52
> diff -u -p -r1.52 changes.html
> --- gcc-5/changes.html15 Dec 2014 19:55:08 -  1.52
> +++ gcc-5/changes.html17 Dec 2014 14:48:21 -
> @@ -444,6 +444,13 @@ void operator delete[] (void *, std::siz
>   place of the __fentry__ or mcount call, so that a call per function
>   can be later patched in. This can be used for low overhead tracing or
>   hot code patching.
> +  The new -malign-data= option to control how
> + GCC aligns variables.

Let's make this "...option controls how..."

This is fine with this change and considering the genuine question 
below.

>  -malign-data=compat uses
> + increased alignment value compatible with GCC 4.8 and earlier,
> + -malign-data=abi uses alignment value as specified by
> + the psABI, and -malign-data=cacheline uses increased
> + alignment value to match the cache line size.
> + -malign-data=compat is the default.

Here, and in the .texi documentation, would it be appropriate to
just say "alignment" instead of "alignment value" throughout, or
is there particular reason to say the latter?

Gerald


Re: [PATCH] X86-64: Add -mskip-rax-setup

2014-12-25 Thread Gerald Pfeifer
On Thursday 2014-12-18 11:35, H.J. Lu wrote:
> Updated.

"the RAX register" (i.e., add "the"), and I suggest to make
this a sentence, similar to my previous mail for the other
update.

This is fine with these changes.

Thank you -- and that's a nice hack (in the positive sense)!

Gerald


[PATCHv3][PING] New check and updates in check_GNU_style script

2014-12-25 Thread Yury Gribov

On 12/19/2014 11:14 AM, Yury Gribov wrote:

Hi all,

Attached patch adds new check (all blocks of 8 spaces are replaced with
tabs) to contrib/check_GNU_style.sh. It also changes the script to allow
reading patches from stdin and strengthens the "Dot, space, space, new
sentence." check.

Is this ok to commit?


Ping.

>From c099086a7325d5feca28630be5a569a7de027c93 Mon Sep 17 00:00:00 2001
From: Yury Gribov 
Date: Thu, 11 Dec 2014 13:19:59 +0300
Subject: [PATCH] 2014-12-11  Yury Gribov  

	check_GNU_style.sh: Support patches coming from stdin,
	check that spaces are converted to tabs and make
	double-space-after-dot check more precice.
---
 contrib/check_GNU_style.sh |   49 ++--
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh
index 5f90190..cf6081e 100755
--- a/contrib/check_GNU_style.sh
+++ b/contrib/check_GNU_style.sh
@@ -23,6 +23,8 @@ usage() {
 check_GNU_style.sh [patch]...
 
 Checks the patches for some of the GNU style formatting problems.
+When FILE is -, read standard input.
+
 Please note that these checks are not always accurate, and
 complete.  The reference documentation of the GNU Coding Standards
 can be found here: http://www.gnu.org/prep/standards_toc.html
@@ -35,19 +37,22 @@ EOF
 
 test $# -eq 0 && usage
 
+inp=check_GNU_style.inp
 tmp=check_GNU_style.tmp
 
 # Remove $tmp on exit and various signals.
-trap "rm -f $tmp" 0
-trap "rm -f $tmp ; exit 1" 1 2 3 5 9 13 15
+trap "rm -f $inp $tmp" 0
+trap "rm -f $inp $tmp ; exit 1" 1 2 3 5 9 13 15
+
+grep -nH '^+' $* \
+	| grep -v ':+++' \
+	> $inp
 
 # Grep
 g (){
 msg="$1"
 arg="$2"
-shift 2
-grep -nH '^+' $* \
-	| grep -v ':+++' \
+cat $inp \
 	| egrep --color=always -- "$arg" \
 	> $tmp && printf "\n$msg\n"
 cat $tmp
@@ -58,9 +63,7 @@ ag (){
 msg="$1"
 arg1="$2"
 arg2="$3"
-shift 3
-grep -nH '^+' $* \
-	| grep -v ':+++' \
+cat $inp \
 	| egrep --color=always -- "$arg1" \
 	| egrep --color=always -- "$arg2" \
 	> $tmp && printf "\n$msg\n"
@@ -72,9 +75,7 @@ vg (){
 msg="$1"
 varg="$2"
 arg="$3"
-shift 3
-grep -nH '^+' $* \
-	| grep -v ':+++' \
+cat $inp \
 	| egrep -v -- "$varg" \
 	| egrep --color=always -- "$arg" \
 	> $tmp && printf "\n$msg\n"
@@ -83,9 +84,7 @@ vg (){
 
 col (){
 msg="$1"
-shift 1
-grep -nH '^+' $* \
-	| grep -v ':+++' \
+cat $inp \
 	| cut -f 2 -d '+' \
 	| awk '{ if (length ($0) > 80) print $0 }' \
 	> $tmp
@@ -95,30 +94,32 @@ col (){
 fi
 }
 
-col 'Lines should not exceed 80 characters.' $*
+col 'Lines should not exceed 80 characters.'
+
+g 'Blocks of 8 spaces should be replaced with tabs.' \
+' {8}'
 
 g 'Trailing whitespace.' \
-'[[:space:]]$' $*
+'[[:space:]]$'
 
 g 'Space before dot.' \
-'[[:alnum:]][[:blank:]]+\.' $*
+'[[:alnum:]][[:blank:]]+\.'
 
 g 'Dot, space, space, new sentence.' \
-'[[:alnum:]]\.([[:blank:]]|[[:blank:]]{3,})[[:alnum:]]' $*
+'[[:alnum:]]\.([[:blank:]]|[[:blank:]]{3,})[A-Z0-9]'
 
 g 'Dot, space, space, end of comment.' \
-'[[:alnum:]]\.([[:blank:]]{0,1}|[[:blank:]]{3,})\*/' $*
+'[[:alnum:]]\.([[:blank:]]{0,1}|[[:blank:]]{3,})\*/'
 
 g 'Sentences should end with a dot.  Dot, space, space, end of the comment.' \
-'[[:alnum:]][[:blank:]]*\*/' $*
+'[[:alnum:]][[:blank:]]*\*/'
 
 vg 'There should be exactly one space between function name and parentheses.' \
-'\#define' '[[:alnum:]]([[:blank:]]{2,})?\(' $*
+'\#define' '[[:alnum:]]([[:blank:]]{2,})?\('
 
 g 'There should be no space before closing parentheses.' \
-'[[:graph:]][[:blank:]]+\)' $*
+'[[:graph:]][[:blank:]]+\)'
 
 ag 'Braces should be on a separate line.' \
-'\{' 'if[[:blank:]]\(|while[[:blank:]]\(|switch[[:blank:]]\(' $*
-
+'\{' 'if[[:blank:]]\(|while[[:blank:]]\(|switch[[:blank:]]\('
 
-- 
1.7.9.5