Make shift argument to eoshift0 and eoshift2 be of type index_type
Test case that requires 4 GB RAM that exercises eoshift0: program main implicit none integer(1) :: line(2_8**31+10) line = 42 line = eoshift(line, 2_8**31+7) print *, line(1:4) print *, line((ubound(line, 1, kind=8)-4):ubound(line, 1, kind=8)) end program main Before patch: ❯ ./a.out 0 0 0 0 42 42 42 42 42 With patch: ❯ ./a.out 42 42 42 0 0 0 0 0 0 Regtested on x86_64-pc-linux-gnu. libgfortran/ChangeLog: 2017-11-22 Janne Blomqvist <jb@gcc.gnu.org> * intrinsics/eoshift0.c (eoshift0): Make shift an index_type. * intrinsics/eoshift2.c (eoshift2): Make shift an index_type. From-SVN: r255077
This commit is contained in:
parent
ce95abc41e
commit
a97ae55991
@ -1,3 +1,8 @@
|
||||
2017-11-22 Janne Blomqvist <jb@gcc.gnu.org>
|
||||
|
||||
* intrinsics/eoshift0.c (eoshift0): Make shift an index_type.
|
||||
* intrinsics/eoshift2.c (eoshift2): Make shift an index_type.
|
||||
|
||||
2017-11-22 Janne Blomqvist <jb@gcc.gnu.org>
|
||||
|
||||
PR libfortran/83097
|
||||
|
@ -26,12 +26,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "libgfortran.h"
|
||||
#include <string.h>
|
||||
|
||||
/* TODO: make this work for large shifts when
|
||||
sizeof(int) < sizeof (index_type). */
|
||||
|
||||
static void
|
||||
eoshift0 (gfc_array_char * ret, const gfc_array_char * array,
|
||||
int shift, const char * pbound, int which, index_type size,
|
||||
index_type shift, const char * pbound, int which, index_type size,
|
||||
const char *filler, index_type filler_len)
|
||||
{
|
||||
/* r.* indicates the return array. */
|
||||
|
@ -26,12 +26,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "libgfortran.h"
|
||||
#include <string.h>
|
||||
|
||||
/* TODO: make this work for large shifts when
|
||||
sizeof(int) < sizeof (index_type). */
|
||||
|
||||
static void
|
||||
eoshift2 (gfc_array_char *ret, const gfc_array_char *array,
|
||||
int shift, const gfc_array_char *bound, int which,
|
||||
index_type shift, const gfc_array_char *bound, int which,
|
||||
const char *filler, index_type filler_len)
|
||||
{
|
||||
/* r.* indicates the return array. */
|
||||
|
Loading…
Reference in New Issue
Block a user