diff -Nru gcc-avr-5.4.0+Atmel3.6.1/debian/changelog gcc-avr-5.4.0+Atmel3.6.2/debian/changelog --- gcc-avr-5.4.0+Atmel3.6.1/debian/changelog 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/debian/changelog 2020-11-11 01:18:06.000000000 +0000 @@ -1,8 +1,8 @@ -gcc-avr (1:5.4.0+Atmel3.6.1-2build1) focal; urgency=medium +gcc-avr (1:5.4.0+Atmel3.6.2-1) unstable; urgency=medium - * No-change rebuild for libgcc-s1 package name change. + * New upstream release - -- Matthias Klose Sun, 22 Mar 2020 16:41:30 +0100 + -- Hakan Ardo Tue, 14 Jan 2020 20:31:47 +0100 gcc-avr (1:5.4.0+Atmel3.6.1-2) unstable; urgency=medium diff -Nru gcc-avr-5.4.0+Atmel3.6.1/debian/control gcc-avr-5.4.0+Atmel3.6.2/debian/control --- gcc-avr-5.4.0+Atmel3.6.1/debian/control 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/debian/control 2020-11-11 01:18:06.000000000 +0000 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Hakan Ardo Standards-Version: 3.9.5 -Build-Depends: m4, autoconf2.64, libtool, gawk, bzip2, binutils-avr (>= 2.26.20160125+Atmel3.6.1), bison, flex, gettext, texinfo, zlib1g-dev, debhelper (>= 4.2.10), tar (>= 1.13.18), automake1.11, libmpfr-dev, lsb-release, patchutils, libmpc-dev, dpkg (>= 1.16.2), dh-autoreconf +Build-Depends: m4, autoconf2.64, libtool, gawk, bzip2, binutils-avr (>= 2.26.20160125+Atmel3.6.2), bison, flex, gettext, texinfo, zlib1g-dev, debhelper (>= 4.2.10), tar (>= 1.13.18), automake1.11, libmpfr-dev, lsb-release, patchutils, libmpc-dev, dpkg (>= 1.16.2), dh-autoreconf Build-Conflicts: libgcc0, libgcc300 Vcs-Browser: https://salsa.debian.org/debian/gcc-avr Vcs-Git: https://salsa.debian.org/debian/gcc-avr.git @@ -12,9 +12,9 @@ Architecture: any Section: devel Conflicts: avr-libc(<=1:1.7.1-2) -Depends: ${shlibs:Depends}, ${misc:Depends}, binutils-avr (>= 2.26.20160125+Atmel3.6.1) +Depends: ${shlibs:Depends}, ${misc:Depends}, binutils-avr (>= 2.26.20160125+Atmel3.6.2) Provides: c-compiler-avr -Suggests: gcc-doc (>= 4:4.8), gcc (>= 4:4.8), avr-libc(>=1:1.8.0-4) +Suggests: gcc-doc (>= 4:4.8), gcc (>= 4:4.8), avr-libc(>=1:2.0.0+Atmel3.6.2) Description: GNU C compiler (cross compiler for avr) This is the GNU C compiler, a fairly portable optimizing compiler which supports multiple languages. This package includes support for C. diff -Nru gcc-avr-5.4.0+Atmel3.6.1/debian/copyright gcc-avr-5.4.0+Atmel3.6.2/debian/copyright --- gcc-avr-5.4.0+Atmel3.6.1/debian/copyright 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/debian/copyright 2020-11-11 01:18:06.000000000 +0000 @@ -1,7 +1,8 @@ This is a debian pakcage of the GNU gcc compiler compiled as an avr crosscompiler. It is created from a patched version provided by Atmel at: - http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.4.4/ + https://www.microchip.com/mplab/avr-support/avr-and-sam-downloads-archive + https://www.microchip.com/mymicrochip/filehandler.aspx?ddocname=en611560 GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/ChangeLog gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/ChangeLog --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/ChangeLog 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/ChangeLog 2020-01-14 19:31:39.000000000 +0000 @@ -1,3 +1,13 @@ +2018-12-17 Senthil Kumar Selvaraj + + PR rtl-optimization/88253 + * combine.c (combine_simplify_rtx): Test for side-effects before + substituting by zero. + +2016-06-09 Eric Botcazou + + * df-problems.c (df_note_bb_compute): Guard use of DF_INSN_INFO_GET. + 2017-06-13 Georg-Johann Lay PR target/81072 diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/combine.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/combine.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/combine.c 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/combine.c 2020-01-14 19:31:39.000000000 +0000 @@ -5700,8 +5700,9 @@ && GET_MODE_PRECISION (mode) < GET_MODE_PRECISION (op0_mode) && subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x) && HWI_COMPUTABLE_MODE_P (op0_mode) - && (nonzero_bits (SUBREG_REG (x), op0_mode) - & GET_MODE_MASK (mode)) == 0) + && ((nonzero_bits (SUBREG_REG (x), op0_mode) + & GET_MODE_MASK (mode)) == 0) + && !side_effects_p (SUBREG_REG (x))) return CONST0_RTX (mode); } diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/config/avr/avr-mcus.def gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/config/avr/avr-mcus.def --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/config/avr/avr-mcus.def 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/config/avr/avr-mcus.def 2020-01-14 19:31:39.000000000 +0000 @@ -316,7 +316,6 @@ AVR_MCU ("attiny1614", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATtiny1614__", 0x3800, 0x0, 0, 0x4000) AVR_MCU ("attiny1616", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATtiny1616__", 0x3800, 0x0, 0, 0x4000) AVR_MCU ("attiny1617", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATtiny1617__", 0x3800, 0x0, 0, 0x4000) -AVR_MCU ("attiny3214", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATtiny3214__", 0x3800, 0x0, 0, 0x8000) AVR_MCU ("attiny3216", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATtiny3216__", 0x3800, 0x0, 0, 0x8000) AVR_MCU ("attiny3217", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATtiny3217__", 0x3800, 0x0, 0, 0x8000) /* Xmega, 64K < Flash <= 128K, RAM <= 64K */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/config/avr/gen-avr-mmcu-specs.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/config/avr/gen-avr-mmcu-specs.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/config/avr/gen-avr-mmcu-specs.c 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/config/avr/gen-avr-mmcu-specs.c 2020-01-14 19:31:39.000000000 +0000 @@ -282,7 +282,7 @@ if (is_device) { fprintf (f, "*self_spec:\n"); - fprintf (f, "\t%%{!mmcu=avr*: %%name); + fprintf (f, "\t%%name); fprintf (f, "%s ", rcall_spec); fprintf (f, "%s\n\n", sp8_spec); diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/df-problems.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/df-problems.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/df-problems.c 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/df-problems.c 2020-01-14 19:31:39.000000000 +0000 @@ -3119,13 +3119,13 @@ FOR_BB_INSNS_REVERSE (bb, insn) { + if (!INSN_P (insn)) + continue; + df_insn_info *insn_info = DF_INSN_INFO_GET (insn); df_mw_hardreg *mw; int debug_insn; - if (!INSN_P (insn)) - continue; - debug_insn = DEBUG_INSN_P (insn); bitmap_clear (do_not_gen); diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/ChangeLog gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/ChangeLog --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/ChangeLog 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/ChangeLog 2020-01-14 19:31:39.000000000 +0000 @@ -1,3 +1,8 @@ +2018-12-17 Senthil Kumar Selvaraj + + PR rtl-optimization/88253 + * gcc.target/avr/pr88253.c: New test. + 2016-11-14 Georg-Johann Lay PR target/78093 diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/torture/pr65517.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/torture/pr65517.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/torture/pr65517.c 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/torture/pr65517.c 2020-01-14 19:31:39.000000000 +0000 @@ -1,17 +1,17 @@ -/* { dg-do compile } */ - -typedef void (*argmatch_exit_fn)(); -int a; -void __argmatch_die () { __builtin_exit (0); } - -int -main () -{ - while (1) - { - argmatch_exit_fn b = __argmatch_die; - if (a) - b (); - } - return 0; -} +/* { dg-do compile } */ + +typedef void (*argmatch_exit_fn)(); +int a; +void __argmatch_die () { __builtin_exit (0); } + +int +main () +{ + while (1) + { + argmatch_exit_fn b = __argmatch_die; + if (a) + b (); + } + return 0; +} diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c 2020-01-14 19:31:39.000000000 +0000 @@ -1,53 +1,53 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -funroll-loops -fno-tree-vectorize -fdump-tree-cunroll-details" } */ - -#define N 8 -#define M 14 -typedef unsigned char e_u8; -e_u8 x[256]; -#define MAX(a,b) ((a)>=(b)?(a):(b)) -#define btype int - -static inline void bar1(e_u8 a[4][N], e_u8 b[4][N], btype n) -{ - int i, j; - - for(i = 0; i < 4; i++) - for(j = 0; j < n; j++) - a[i][j] ^= b[i][j]; -} - -static inline void bar2(e_u8 a[4][N], e_u8 b[256], btype n) -{ - int i, j; - - for(i = 0; i < 4; i++) - for(j = 0; j < n; j++) - a[i][j] = b[a[i][j]] ; -} - -int foo1 (e_u8 a[4][N], int b1, int b2, e_u8 b[M+1][4][N]) -{ - btype n; - int r, m; - - switch (b2) { - case 128: n = 4; break; - case 192: n = 6; break; - case 256: n = 8; break; - default : return (-2); - } - switch (MAX(b1,b2)) { - case 128: m = 10; break; - case 192: m = 12; break; - case 256: m = 14; break; - default : return (-3); - } - bar1(a,b[m],n); - bar2(a,x,n); - return 0; -} - -/* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 2 "cunroll" } } */ -/* { dg-final { scan-tree-dump-times "loop with 8 iterations completely unrolled" 2 "cunroll" } } */ -/* { dg-final { cleanup-tree-dump "cunroll" } } */ +/* { dg-do compile } */ +/* { dg-options "-O3 -funroll-loops -fno-tree-vectorize -fdump-tree-cunroll-details" } */ + +#define N 8 +#define M 14 +typedef unsigned char e_u8; +e_u8 x[256]; +#define MAX(a,b) ((a)>=(b)?(a):(b)) +#define btype int + +static inline void bar1(e_u8 a[4][N], e_u8 b[4][N], btype n) +{ + int i, j; + + for(i = 0; i < 4; i++) + for(j = 0; j < n; j++) + a[i][j] ^= b[i][j]; +} + +static inline void bar2(e_u8 a[4][N], e_u8 b[256], btype n) +{ + int i, j; + + for(i = 0; i < 4; i++) + for(j = 0; j < n; j++) + a[i][j] = b[a[i][j]] ; +} + +int foo1 (e_u8 a[4][N], int b1, int b2, e_u8 b[M+1][4][N]) +{ + btype n; + int r, m; + + switch (b2) { + case 128: n = 4; break; + case 192: n = 6; break; + case 256: n = 8; break; + default : return (-2); + } + switch (MAX(b1,b2)) { + case 128: m = 10; break; + case 192: m = 12; break; + case 256: m = 14; break; + default : return (-3); + } + bar1(a,b[m],n); + bar2(a,x,n); + return 0; +} + +/* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 2 "cunroll" } } */ +/* { dg-final { scan-tree-dump-times "loop with 8 iterations completely unrolled" 2 "cunroll" } } */ +/* { dg-final { cleanup-tree-dump "cunroll" } } */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c 2020-01-14 19:31:39.000000000 +0000 @@ -1,53 +1,53 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -funroll-loops -fno-tree-vectorize -fdump-tree-cunroll-details" } */ - -#define N 8 -#define M 14 -typedef unsigned char e_u8; -e_u8 x[256]; -#define MAX(a,b) ((a)>=(b)?(a):(b)) -#define btype e_u8 - -static inline void bar1(e_u8 a[4][N], e_u8 b[4][N], btype n) -{ - int i, j; - - for(i = 0; i < 4; i++) - for(j = 0; j < n; j++) - a[i][j] ^= b[i][j]; -} - -static inline void bar2(e_u8 a[4][N], e_u8 b[256], btype n) -{ - int i, j; - - for(i = 0; i < 4; i++) - for(j = 0; j < n; j++) - a[i][j] = b[a[i][j]] ; -} - -int foo1 (e_u8 a[4][N], int b1, int b2, e_u8 b[M+1][4][N]) -{ - btype n; - int r, m; - - switch (b2) { - case 128: n = 4; break; - case 192: n = 6; break; - case 256: n = 8; break; - default : return (-2); - } - switch (MAX(b1,b2)) { - case 128: m = 10; break; - case 192: m = 12; break; - case 256: m = 14; break; - default : return (-3); - } - bar1(a,b[m],n); - bar2(a,x,n); - return 0; -} - -/* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 2 "cunroll" } } */ -/* { dg-final { scan-tree-dump-times "loop with 8 iterations completely unrolled" 2 "cunroll" } } */ -/* { dg-final { cleanup-tree-dump "cunroll" } } */ +/* { dg-do compile } */ +/* { dg-options "-O3 -funroll-loops -fno-tree-vectorize -fdump-tree-cunroll-details" } */ + +#define N 8 +#define M 14 +typedef unsigned char e_u8; +e_u8 x[256]; +#define MAX(a,b) ((a)>=(b)?(a):(b)) +#define btype e_u8 + +static inline void bar1(e_u8 a[4][N], e_u8 b[4][N], btype n) +{ + int i, j; + + for(i = 0; i < 4; i++) + for(j = 0; j < n; j++) + a[i][j] ^= b[i][j]; +} + +static inline void bar2(e_u8 a[4][N], e_u8 b[256], btype n) +{ + int i, j; + + for(i = 0; i < 4; i++) + for(j = 0; j < n; j++) + a[i][j] = b[a[i][j]] ; +} + +int foo1 (e_u8 a[4][N], int b1, int b2, e_u8 b[M+1][4][N]) +{ + btype n; + int r, m; + + switch (b2) { + case 128: n = 4; break; + case 192: n = 6; break; + case 256: n = 8; break; + default : return (-2); + } + switch (MAX(b1,b2)) { + case 128: m = 10; break; + case 192: m = 12; break; + case 256: m = 14; break; + default : return (-3); + } + bar1(a,b[m],n); + bar2(a,x,n); + return 0; +} + +/* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 2 "cunroll" } } */ +/* { dg-final { scan-tree-dump-times "loop with 8 iterations completely unrolled" 2 "cunroll" } } */ +/* { dg-final { cleanup-tree-dump "cunroll" } } */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/uninit-19.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/uninit-19.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/uninit-19.c 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/uninit-19.c 2020-01-14 19:31:39.000000000 +0000 @@ -1,26 +1,26 @@ -/* { dg-do compile } */ -/* { dg-options "-O -Wuninitialized" } */ - -int a, l, m; -float *b; -float c, d, e, g, h; -unsigned char i, k; -void -fn1 (int p1, float *f1, float *f2, float *f3, unsigned char *c1, float *f4, - unsigned char *c2, float *p10) -{ - if (p1 & 8) - b[3] = p10[a]; /* 13. */ -} - -void -fn2 () -{ - float *n; - if (l & 6) - n = &c + m; - fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 22. */ -} - -/* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 13 } */ -/* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 22 } */ +/* { dg-do compile } */ +/* { dg-options "-O -Wuninitialized" } */ + +int a, l, m; +float *b; +float c, d, e, g, h; +unsigned char i, k; +void +fn1 (int p1, float *f1, float *f2, float *f3, unsigned char *c1, float *f4, + unsigned char *c2, float *p10) +{ + if (p1 & 8) + b[3] = p10[a]; /* 13. */ +} + +void +fn2 () +{ + float *n; + if (l & 6) + n = &c + m; + fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 22. */ +} + +/* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 13 } */ +/* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 22 } */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/vect/pr65494.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/vect/pr65494.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/vect/pr65494.c 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/vect/pr65494.c 2020-01-14 19:31:39.000000000 +0000 @@ -1,28 +1,28 @@ -/* { dg-do compile } */ -/* { dg-additional-options "-Ofast -funroll-loops" } */ - -typedef unsigned char uchar; -typedef struct rgb_ {uchar r; uchar g; uchar b;} rgb; -#define N 512 -rgb in[N], out[N]; -float c[N]; -void foo(int n) -{ - int i, j; - for (i = 0; i < n; i++) //in and out are RGB byte arrays - { - float r = 0, g = 0, b = 0; - for (j = 0; j < 5; j++) - { - r += (float)in[i + j].r * c[j]; - g += (float)in[i + j].g * c[j]; - b += (float)in[i + j].b * c[j]; - } - out[i].r = (uchar)r; - out[i].g = (uchar)g; - out[i].b = (uchar)b; - } -} - -/* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { target { vect_float && vect_intfloat_cvt } } } } */ -/* { dg-final { cleanup-tree-dump "vect" } } */ +/* { dg-do compile } */ +/* { dg-additional-options "-Ofast -funroll-loops" } */ + +typedef unsigned char uchar; +typedef struct rgb_ {uchar r; uchar g; uchar b;} rgb; +#define N 512 +rgb in[N], out[N]; +float c[N]; +void foo(int n) +{ + int i, j; + for (i = 0; i < n; i++) //in and out are RGB byte arrays + { + float r = 0, g = 0, b = 0; + for (j = 0; j < 5; j++) + { + r += (float)in[i + j].r * c[j]; + g += (float)in[i + j].g * c[j]; + b += (float)in[i + j].b * c[j]; + } + out[i].r = (uchar)r; + out[i].g = (uchar)g; + out[i].b = (uchar)b; + } +} + +/* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { target { vect_float && vect_intfloat_cvt } } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/vect/pr65518.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/vect/pr65518.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.dg/vect/pr65518.c 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.dg/vect/pr65518.c 2020-01-14 19:31:39.000000000 +0000 @@ -1,43 +1,43 @@ -/* { dg-do run } */ - -extern void abort (void); - -typedef struct giga -{ - unsigned int g[16]; -} giga; - -unsigned long __attribute__((noinline,noclone)) -addfst(giga const *gptr, int num) -{ - unsigned int retval = 0; - int i; - for (i = 0; i < num; i++) - retval += gptr[i].g[0]; - return retval; -} - -int main () -{ - struct giga g[8]; - unsigned int n = 1; - int i, j; - for (i = 0; i < 8; ++i) - for (j = 0; j < 16; ++j) - { - g[i].g[j] = n++; - __asm__ volatile (""); - } - if (addfst (g, 8) != 456) - abort (); - return 0; -} - -/* We don't want to vectorize the single-element interleaving in the way - we currently do that (without ignoring not needed vectors in the - gap between gptr[0].g[0] and gptr[1].g[0]), because that's very - sub-optimal and causes memory explosion (even though the cost model - should reject that in the end). */ - -/* { dg-final { scan-tree-dump-times "vectorized 0 loops in function" 2 "vect" } } */ -/* { dg-final { cleanup-tree-dump "vect" } } */ +/* { dg-do run } */ + +extern void abort (void); + +typedef struct giga +{ + unsigned int g[16]; +} giga; + +unsigned long __attribute__((noinline,noclone)) +addfst(giga const *gptr, int num) +{ + unsigned int retval = 0; + int i; + for (i = 0; i < num; i++) + retval += gptr[i].g[0]; + return retval; +} + +int main () +{ + struct giga g[8]; + unsigned int n = 1; + int i, j; + for (i = 0; i < 8; ++i) + for (j = 0; j < 16; ++j) + { + g[i].g[j] = n++; + __asm__ volatile (""); + } + if (addfst (g, 8) != 456) + abort (); + return 0; +} + +/* We don't want to vectorize the single-element interleaving in the way + we currently do that (without ignoring not needed vectors in the + gap between gptr[0].g[0] and gptr[1].g[0]), because that's very + sub-optimal and causes memory explosion (even though the cost model + should reject that in the end). */ + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops in function" 2 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.target/avr/pr88253.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.target/avr/pr88253.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gcc.target/avr/pr88253.c 1970-01-01 00:00:00.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gcc.target/avr/pr88253.c 2020-01-14 19:31:39.000000000 +0000 @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-Os -w" } */ + +static int aRead() __attribute__((always_inline)); +static int aRead() { + unsigned char h,l; + l = (*(volatile unsigned char *)(0x78)) ; + h = (*(volatile unsigned char *)(0x79)) ; + return (h<<8) | l; +} + +int main() { + volatile unsigned char x; + x = aRead()^42; + } + /* { dg-final { scan-assembler "lds r\\d+,121" } } */ diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gfortran.dg/extends_16.f90 gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gfortran.dg/extends_16.f90 --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gfortran.dg/extends_16.f90 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gfortran.dg/extends_16.f90 2020-01-14 19:31:39.000000000 +0000 @@ -1,25 +1,25 @@ -! { dg-do run } -! -! PR 57562: [OOP] ICE due to extended derived type with PARAMETER attribute -! -! Contributed by - - type :: Parent - integer :: member1 = 0 - end type - - type, extends(Parent) :: Child - integer :: member2 = 0 - end type - - type, extends(Child) :: Grandchild - integer :: member3 = 0 - end type - - type(Grandchild), parameter :: object = Grandchild(23, 42, -99) - - if (object%member1 /= 23) call abort - if (object%member2 /= 42) call abort - if (object%member3 /= -99) call abort - -end +! { dg-do run } +! +! PR 57562: [OOP] ICE due to extended derived type with PARAMETER attribute +! +! Contributed by + + type :: Parent + integer :: member1 = 0 + end type + + type, extends(Parent) :: Child + integer :: member2 = 0 + end type + + type, extends(Child) :: Grandchild + integer :: member3 = 0 + end type + + type(Grandchild), parameter :: object = Grandchild(23, 42, -99) + + if (object%member1 /= 23) call abort + if (object%member2 /= 42) call abort + if (object%member3 /= -99) call abort + +end diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gnat.dg/opt37.ads gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gnat.dg/opt37.ads --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gnat.dg/opt37.ads 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gnat.dg/opt37.ads 2020-01-14 19:31:39.000000000 +0000 @@ -1,18 +1,18 @@ -package Opt37 is - - type T_Bit is range 0 .. 1; - for T_Bit'Size use 1; - - type Positive is range 0 .. (2 ** 31) - 1; - type Unsigned32 is mod 2 ** 32; - - subtype T_Bit_Count is Positive; - subtype T_Bit_Index is T_Bit_Count range 1 .. T_Bit_Count'Last; - - type T_Bit_Array is array (T_Bit_Count range <>) of T_Bit; - pragma Pack (T_Bit_Array); - - function Func (Bit_Array : in T_Bit_Array; - Bit_Index : in T_Bit_Index) return Positive; - -end Opt37; +package Opt37 is + + type T_Bit is range 0 .. 1; + for T_Bit'Size use 1; + + type Positive is range 0 .. (2 ** 31) - 1; + type Unsigned32 is mod 2 ** 32; + + subtype T_Bit_Count is Positive; + subtype T_Bit_Index is T_Bit_Count range 1 .. T_Bit_Count'Last; + + type T_Bit_Array is array (T_Bit_Count range <>) of T_Bit; + pragma Pack (T_Bit_Array); + + function Func (Bit_Array : in T_Bit_Array; + Bit_Index : in T_Bit_Index) return Positive; + +end Opt37; diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gnat.dg/opt45.adb gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gnat.dg/opt45.adb --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gnat.dg/opt45.adb 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gnat.dg/opt45.adb 2020-01-14 19:31:39.000000000 +0000 @@ -1,38 +1,38 @@ --- { dg-do compile } --- { dg-options "-O3" } - -procedure Opt45 is - - type Index_T is mod 2 ** 32; - for Index_T'Size use 32; - for Index_T'Alignment use 1; - - type Array_T is array (Index_T range <>) of Natural; - type Array_Ptr_T is access all Array_T; - - My_Array_1 : aliased Array_T := (1, 2); - My_Array_2 : aliased Array_T := (3, 4); - - Array_Ptr : Array_Ptr_T := null; - Index : Index_T := Index_T'First; - - My_Value : Natural := Natural'First; - - procedure Proc (Selection : Positive) is - begin - if Selection = 1 then - Array_Ptr := My_Array_1'Access; - Index := My_Array_1'First; - else - Array_Ptr := My_Array_2'Access; - Index := My_Array_2'First; - end if; - - if My_Value = Natural'First then - My_Value := Array_Ptr.all (Index); - end if; - end; - -begin - Proc (2); -end; +-- { dg-do compile } +-- { dg-options "-O3" } + +procedure Opt45 is + + type Index_T is mod 2 ** 32; + for Index_T'Size use 32; + for Index_T'Alignment use 1; + + type Array_T is array (Index_T range <>) of Natural; + type Array_Ptr_T is access all Array_T; + + My_Array_1 : aliased Array_T := (1, 2); + My_Array_2 : aliased Array_T := (3, 4); + + Array_Ptr : Array_Ptr_T := null; + Index : Index_T := Index_T'First; + + My_Value : Natural := Natural'First; + + procedure Proc (Selection : Positive) is + begin + if Selection = 1 then + Array_Ptr := My_Array_1'Access; + Index := My_Array_1'First; + else + Array_Ptr := My_Array_2'Access; + Index := My_Array_2'First; + end if; + + if My_Value = Natural'First then + My_Value := Array_Ptr.all (Index); + end if; + end; + +begin + Proc (2); +end; diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gnat.dg/specs/private2_pkg.ads gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gnat.dg/specs/private2_pkg.ads --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/testsuite/gnat.dg/specs/private2_pkg.ads 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/testsuite/gnat.dg/specs/private2_pkg.ads 2020-01-14 19:31:39.000000000 +0000 @@ -1,11 +1,11 @@ -package Private2_Pkg is - - type Rec2 (D : Natural) is private; - -private - - type Rec1 (D : Natural) is null record; - - type Rec2 (D : Natural) is new Rec1 (D); - -end Private2_Pkg; +package Private2_Pkg is + + type Rec2 (D : Natural) is private; + +private + + type Rec1 (D : Natural) is null record; + + type Rec2 (D : Natural) is new Rec1 (D); + +end Private2_Pkg; diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/tree-ssa-loop-ivopts.c gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/tree-ssa-loop-ivopts.c --- gcc-avr-5.4.0+Atmel3.6.1/gcc/gcc/tree-ssa-loop-ivopts.c 2018-06-26 06:45:08.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/gcc/tree-ssa-loop-ivopts.c 2020-01-14 19:31:39.000000000 +0000 @@ -4173,6 +4173,9 @@ *depends_on = NULL; + if (can_autoinc) + *can_autoinc = false; + /* Only consider real candidates. */ if (!cand->iv) return infinite_cost; diff -Nru gcc-avr-5.4.0+Atmel3.6.1/gcc/libgo/go/cmd/gofmt/testdata/crlf.input gcc-avr-5.4.0+Atmel3.6.2/gcc/libgo/go/cmd/gofmt/testdata/crlf.input --- gcc-avr-5.4.0+Atmel3.6.1/gcc/libgo/go/cmd/gofmt/testdata/crlf.input 2020-11-11 01:17:55.000000000 +0000 +++ gcc-avr-5.4.0+Atmel3.6.2/gcc/libgo/go/cmd/gofmt/testdata/crlf.input 2020-01-14 19:31:39.000000000 +0000 @@ -1,13 +1,13 @@ -/* - Source containing CR/LF line endings. - The gofmt'ed output must only have LF - line endings. - Test case for issue 3961. -*/ -package main - -func main() { - // line comment - println("hello, world!") // another line comment - println() -} +/* + Source containing CR/LF line endings. + The gofmt'ed output must only have LF + line endings. + Test case for issue 3961. +*/ +package main + +func main() { + // line comment + println("hello, world!") // another line comment + println() +}