Skip to content

Commit

Permalink
2018-10-25 Richard Biener <rguenther@suse.de>
Browse files Browse the repository at this point in the history
	PR tree-optimization/87665
	PR tree-optimization/87745
	* tree-vectorizer.h (get_earlier_stmt): Remove.
	(get_later_stmt): Pick up UID from the original non-pattern stmt.

	* gfortran.dg/20181025-1.f: New testcase.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265481 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
rguenth committed Oct 25, 2018
1 parent d62e160 commit eeab9fc
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 32 deletions.
7 changes: 7 additions & 0 deletions gcc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2018-10-25 Richard Biener <rguenther@suse.de>

PR tree-optimization/87665
PR tree-optimization/87745
* tree-vectorizer.h (get_earlier_stmt): Remove.
(get_later_stmt): Pick up UID from the original non-pattern stmt.

2018-10-25 Sam Tebbs <sam.tebbs@arm.com>

* options.texi (Deprecated): Move list to Var section.
Expand Down
6 changes: 6 additions & 0 deletions gcc/testsuite/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2018-10-25 Richard Biener <rguenther@suse.de>

PR tree-optimization/87665
PR tree-optimization/87745
* gfortran.dg/20181025-1.f: New testcase.

2018-10-25 Jakub Jelinek <jakub@redhat.com>

PR fortran/87725
Expand Down
28 changes: 28 additions & 0 deletions gcc/testsuite/gfortran.dg/20181025-1.f
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
! { dg-do compile }
! { dg-options "-Ofast" }
! { dg-additional-options "-mavx2" { target { x86_64-*-* i?86-*-* } } }
SUBROUTINE FOO(EF3,CA,ZA,NATA,IC4,NFRGPT)
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
PARAMETER (MXATM=500)
COMMON DE(3,MXATM)
DIMENSION CA(3,NATA)
DIMENSION ZA(NATA)
DIMENSION EF3(3,NFRGPT)
DO II = 1,NATA
XII = XJ - CA(1,II)
YII = YJ - CA(2,II)
ZII = ZJ - CA(3,II)
RJII = SQRT(XII*XII + YII*YII + ZII*ZII)
R3 = RJII*RJII*RJII
IF (IC4.EQ.0) THEN
DE(1,II) = DE(1,II) - S2*ZA(II)*XII/R3
DE(2,II) = DE(2,II) - S2*ZA(II)*YII/R3
DE(3,II) = DE(3,II) - S2*ZA(II)*ZII/R3
ELSE
EF3(1,IC4+II) = EF3(1,IC4+II) - S2*ZA(II)*XII/R3
EF3(2,IC4+II) = EF3(2,IC4+II) - S2*ZA(II)*YII/R3
EF3(3,IC4+II) = EF3(3,IC4+II) - S2*ZA(II)*ZII/R3
END IF
END DO
RETURN
END
44 changes: 12 additions & 32 deletions gcc/tree-vectorizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -1085,38 +1085,6 @@ nested_in_vect_loop_p (struct loop *loop, stmt_vec_info stmt_info)
&& (loop->inner == (gimple_bb (stmt_info->stmt))->loop_father));
}

/* Return the earlier statement between STMT1_INFO and STMT2_INFO. */

static inline stmt_vec_info
get_earlier_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
{
gcc_checking_assert ((STMT_VINFO_IN_PATTERN_P (stmt1_info)
|| !STMT_VINFO_RELATED_STMT (stmt1_info))
&& (STMT_VINFO_IN_PATTERN_P (stmt2_info)
|| !STMT_VINFO_RELATED_STMT (stmt2_info)));

if (gimple_uid (stmt1_info->stmt) < gimple_uid (stmt2_info->stmt))
return stmt1_info;
else
return stmt2_info;
}

/* Return the later statement between STMT1_INFO and STMT2_INFO. */

static inline stmt_vec_info
get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
{
gcc_checking_assert ((STMT_VINFO_IN_PATTERN_P (stmt1_info)
|| !STMT_VINFO_RELATED_STMT (stmt1_info))
&& (STMT_VINFO_IN_PATTERN_P (stmt2_info)
|| !STMT_VINFO_RELATED_STMT (stmt2_info)));

if (gimple_uid (stmt1_info->stmt) > gimple_uid (stmt2_info->stmt))
return stmt1_info;
else
return stmt2_info;
}

/* Return TRUE if a statement represented by STMT_INFO is a part of a
pattern. */

Expand All @@ -1137,6 +1105,18 @@ vect_orig_stmt (stmt_vec_info stmt_info)
return stmt_info;
}

/* Return the later statement between STMT1_INFO and STMT2_INFO. */

static inline stmt_vec_info
get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
{
if (gimple_uid (vect_orig_stmt (stmt1_info)->stmt)
> gimple_uid (vect_orig_stmt (stmt2_info)->stmt))
return stmt1_info;
else
return stmt2_info;
}

/* If STMT_INFO has been replaced by a pattern statement, return the
replacement statement, otherwise return STMT_INFO itself. */

Expand Down

0 comments on commit eeab9fc

Please sign in to comment.