re PR target/65296 ([avr] fix various issues with specs file generation)
authorGeorg-Johann Lay <avr@gjlay.de>
Wed, 11 Mar 2015 18:51:09 +0000 (18:51 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Wed, 11 Mar 2015 18:51:09 +0000 (18:51 +0000)
gcc/
PR target/65296
* configure.ac [avr]: Check as for options -mrmw, --mlink-relax.
* configure: Regenerate.
* config.in: Regenerate.
* doc/invoke.texi (AVR Options) [-mrmw]: Document it.
[-mn-flash]: Document it.
[__AVR_ARCH__]: Document avrtiny.
* config/avr/gen-avr-mmcu-specs.c (config.h): Include it.
(*asm_relax): Only define spec if HAVE_AS_AVR_MLINK_RELAX_OPTION.
(*asm_rmw): Only define spec if HAVE_AS_AVR_MRMW_OPTION.
gcc/testsuite/
PR target/65296
* gcc.target/avr/tiny-memx: Use -mmcu instead of -march.
* gcc.target/avr/tiny-caller-save.c: Same.

From-SVN: r221355

gcc/ChangeLog
gcc/config.in
gcc/config/avr/gen-avr-mmcu-specs.c
gcc/configure
gcc/configure.ac
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/avr/tiny-caller-save.c
gcc/testsuite/gcc.target/avr/tiny-memx.c

index 7a2a9b01f58f50bd603653979f7c84dca0f4186b..6512b30fa444a8816d2bd865df6f6a90a95b8f11 100644 (file)
@@ -1,3 +1,17 @@
+2015-03-10  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/65296
+       * configure.ac [avr]: Check as for options -mrmw, --mlink-relax.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * doc/invoke.texi (AVR Options) [-mrmw]: Document it.
+       [-mn-flash]: Document it.
+       [__AVR_ARCH__]: Document avrtiny.
+
+       * config/avr/gen-avr-mmcu-specs.c (config.h): Include it.
+       (*asm_relax): Only define spec if HAVE_AS_AVR_MLINK_RELAX_OPTION.
+       (*asm_rmw): Only define spec if HAVE_AS_AVR_MRMW_OPTION.
+
 2015-03-11  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * doc/invoke.texi: Add missing cpu values (z196, zEC12).
index 7bde5b1509d4d1a4fa6a5ec9c259ce092bebe959..f2ed301a48023c34378998c3ee8fc205d1212aa6 100644 (file)
 #endif
 
 
+/* Define if your avr assembler supports --mlink-relax option. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_AVR_MLINK_RELAX_OPTION
+#endif
+
+
+/* Define if your avr assembler supports -mrmw option. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_AVR_MRMW_OPTION
+#endif
+
+
 /* Define if your assembler supports cmpb. */
 #ifndef USED_FOR_TARGET
 #undef HAVE_AS_CMPB
index bdc747c65809eef40fd3fd82ed52a819eb53f71d..29f865e1b9aae78188454ea0773e9af7ada136a9 100644 (file)
@@ -21,6 +21,8 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "config.h"
+
 #define IN_GEN_AVR_MMCU_TEXI
 
 #include "avr-devices.c"
@@ -155,11 +157,15 @@ print_mcu (const avr_mcu_t *mcu)
 
   fprintf (f, "*asm_arch:\n\t-mmcu=%s\n\n", arch->name);
 
+#ifdef HAVE_AS_AVR_MLINK_RELAX_OPTION
   fprintf (f, "*asm_relax:\n\t%s\n\n", ASM_RELAX_SPEC);
+#endif // have as --mlink-relax
 
+#ifdef HAVE_AS_AVR_MRMW_OPTION
   fprintf (f, "*asm_rmw:\n%s\n\n", rmw
            ? "\t%{!mno-rmw: -mrmw}"
            : "\t%{mrmw}");
+#endif // have as -mrmw
 
   fprintf (f, "*asm_errata_skip:\n%s\n\n", errata_skip
            ? "\t%{mno-skip-bug}"
index 1a35d5a186aecc587f44ad7373de5f5ab4b80d29..20dbce6973671493e0ceb3cd7ba0c07a62a07bce 100755 (executable)
@@ -24182,6 +24182,70 @@ if test $gcc_cv_as_alpha_jsrdirect_relocs = yes; then
 
 $as_echo "#define HAVE_AS_JSRDIRECT_RELOCS 1" >>confdefs.h
 
+fi
+    ;;
+
+  avr-*-*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for --mlink-relax option" >&5
+$as_echo_n "checking assembler for --mlink-relax option... " >&6; }
+if test "${gcc_cv_as_avr_mlink_relax+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  gcc_cv_as_avr_mlink_relax=no
+  if test x$gcc_cv_as != x; then
+    $as_echo '.text' > conftest.s
+    if { ac_try='$gcc_cv_as $gcc_cv_as_flags --mlink-relax -o conftest.o conftest.s >&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+    then
+       gcc_cv_as_avr_mlink_relax=yes
+    else
+      echo "configure: failed program was" >&5
+      cat conftest.s >&5
+    fi
+    rm -f conftest.o conftest.s
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_avr_mlink_relax" >&5
+$as_echo "$gcc_cv_as_avr_mlink_relax" >&6; }
+if test $gcc_cv_as_avr_mlink_relax = yes; then
+
+$as_echo "#define HAVE_AS_AVR_MLINK_RELAX_OPTION 1" >>confdefs.h
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -mrmw option" >&5
+$as_echo_n "checking assembler for -mrmw option... " >&6; }
+if test "${gcc_cv_as_avr_mrmw+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  gcc_cv_as_avr_mrmw=no
+  if test x$gcc_cv_as != x; then
+    $as_echo '.text' > conftest.s
+    if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mrmw -o conftest.o conftest.s >&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+    then
+       gcc_cv_as_avr_mrmw=yes
+    else
+      echo "configure: failed program was" >&5
+      cat conftest.s >&5
+    fi
+    rm -f conftest.o conftest.s
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_avr_mrmw" >&5
+$as_echo "$gcc_cv_as_avr_mrmw" >&6; }
+if test $gcc_cv_as_avr_mrmw = yes; then
+
+$as_echo "#define HAVE_AS_AVR_MRMW_OPTION 1" >>confdefs.h
+
 fi
     ;;
 
index a553a653f92bffa17ea96b7945c53a07a2e0fec4..68b0ee83fac8be32fcc4618003f489c211eeae5a 100644 (file)
@@ -3623,6 +3623,18 @@ AS_HELP_STRING([--disable-fix-cortex-a53-835769],
   [Define if your assembler supports the lituse_jsrdirect relocation.])])
     ;;
 
+  avr-*-*)
+    gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
+      [--mlink-relax], [.text],,
+      [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
+               [Define if your avr assembler supports --mlink-relax option.])])
+
+    gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
+      [-mrmw], [.text],,
+      [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
+               [Define if your avr assembler supports -mrmw option.])])
+    ;;
+
   cris-*-*)
     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
       gcc_cv_as_cris_no_mul_bug,[2,15,91],
index d979415c11f721c5fdd12419e77fe0c0720679e0..bc0525720ab7fdc7a7700484b7b506030f704c3d 100644 (file)
@@ -571,8 +571,8 @@ Objective-C and Objective-C++ Dialects}.
 
 @emph{AVR Options}
 @gccoptlist{-mmcu=@var{mcu} -maccumulate-args -mbranch-cost=@var{cost} @gol
--mcall-prologues -mint8 -mno-interrupts -mrelax @gol
--mstrict-X -mtiny-stack -Waddr-space-convert}
+-mcall-prologues -mint8 -mn_flash=@var{size} -mno-interrupts @gol
+-mrelax -mrmw -mstrict-X -mtiny-stack -Waddr-space-convert}
 
 @emph{Blackfin Options}
 @gccoptlist{-mcpu=@var{cpu}@r{[}-@var{sirevision}@r{]} @gol
@@ -13509,6 +13509,11 @@ and @code{long long} is 4 bytes.  Please note that this option does not
 conform to the C standards, but it results in smaller code
 size.
 
+@item -mn-flash=@var{num}
+@opindex mn-flash
+Assume that the flash memory has a size of 
+@var{num} times 64@tie{}KiB.
+
 @item -mno-interrupts
 @opindex mno-interrupts
 Generated code is not compatible with hardware interrupts.
@@ -13518,8 +13523,9 @@ Code size is smaller.
 @opindex mrelax
 Try to replace @code{CALL} resp.@: @code{JMP} instruction by the shorter
 @code{RCALL} resp.@: @code{RJMP} instruction if applicable.
-Setting @option{-mrelax} just adds the @option{--relax} option to the
-linker command line when the linker is called.
+Setting @option{-mrelax} just adds the @option{--mlink-relax} option to
+the assembler's command line and the @option{--relax} option to the
+linker's command line.
 
 Jump relaxing is performed by the linker because jump offsets are not
 known before code is located. Therefore, the assembler code generated by the
@@ -13529,6 +13535,11 @@ differ from instructions in the assembler code.
 Relaxing must be turned on if linker stubs are needed, see the
 section on @code{EIND} and linker stubs below.
 
+@item -mrmw
+@opindex mrmw
+Assume that the device supports the Read-Modify-Write
+instructions @code{XCH}, @code{LAC}, @code{LAS} and @code{LAT}.
+
 @item -msp8
 @opindex msp8
 Treat the stack pointer register as an 8-bit register,
@@ -13769,13 +13780,18 @@ architecture and depends on the @option{-mmcu=@var{mcu}} option.
 Possible values are:
 
 @code{2}, @code{25}, @code{3}, @code{31}, @code{35},
-@code{4}, @code{5}, @code{51}, @code{6}, @code{102}, @code{104},
+@code{4}, @code{5}, @code{51}, @code{6}
+
+for @var{mcu}=@code{avr2}, @code{avr25}, @code{avr3}, @code{avr31},
+@code{avr35}, @code{avr4}, @code{avr5}, @code{avr51}, @code{avr6},
+
+respectively and
+
+@code{100}, @code{102}, @code{104},
 @code{105}, @code{106}, @code{107}
 
-for @var{mcu}=@code{avr2}, @code{avr25}, @code{avr3},
-@code{avr31}, @code{avr35}, @code{avr4}, @code{avr5}, @code{avr51},
-@code{avr6}, @code{avrxmega2}, @code{avrxmega4}, @code{avrxmega5},
-@code{avrxmega6}, @code{avrxmega7}, respectively.
+for @var{mcu}=@code{avrtiny}, @code{avrxmega2}, @code{avrxmega4},
+@code{avrxmega5}, @code{avrxmega6}, @code{avrxmega7}, respectively.
 If @var{mcu} specifies a device, this built-in macro is set
 accordingly. For example, with @option{-mmcu=atmega8} the macro is
 defined to @code{4}.
@@ -13795,7 +13811,7 @@ the device name as from the AVR user manual. The difference between
 If @var{device} is not a device but only a core architecture like
 @samp{avr51}, this macro is not defined.
 
-@item   __AVR_DEVICE_NAME__
+@item __AVR_DEVICE_NAME__
 Setting @option{-mmcu=@var{device}} defines this built-in macro to
 the device's name. For example, with @option{-mmcu=atmega8} the macro
 is defined to @code{atmega8}.
index cd4c9a4003ac829c03b667d7a44307d43f2f2a9e..e69d5051883cbf28c7dda6080a653ce910c8f03c 100644 (file)
@@ -1,3 +1,9 @@
+2015-03-11  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/65296
+       * gcc.target/avr/tiny-memx: Use -mmcu instead of -march.
+       * gcc.target/avr/tiny-caller-save.c: Same.
+
 2015-03-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/65242
index 0e46ee065944dd2c23f224af494da5236c4d7b9c..63fad3a1205d50787d09d9cb5d9412b08d13a697 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do compile } */
-/* { dg-options "-march=avrtiny -gdwarf -Os" } */
+/* { dg-options "-mmcu=avrtiny -gdwarf -Os" } */
 
 /* This is a stripped down piece of libgcc2.c that triggerd an ICE for avr with
-   "-march=avrtiny -g -Os"; replace_reg_with_saved_mem would generate:
+   "-mmcu=avrtiny -g -Os"; replace_reg_with_saved_mem would generate:
    (concatn:SI [
                     (reg:SI 18 r18)
                     (reg:SI 19 r19)
index 3ad164dfed4bf87a98c36c4314f71835c647ac26..cdda86b14bfbfb3604dd9e5d9b26cbd635587538 100644 (file)
@@ -1,4 +1,4 @@
 /* { dg-do compile } */
-/* { dg-options "-march=avrtiny" } */
+/* { dg-options "-mmcu=avrtiny" } */
 
 const __memx char ascmonth[] = "Jan"; /* { dg-error "not supported" } */