aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2017-05-22 12:16:21 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2017-05-22 12:16:21 +0000
commit6aea3c3720b89f43b3fd6553a8a70fa5fc26dd4b (patch)
treeafd081d20353f1f1d3646fb23787b84ea6571482 /gcc
parent3b205ea1bdc612cd50a4a1cb28f0b303db2815c8 (diff)
downloadgcc-6aea3c3720b89f43b3fd6553a8a70fa5fc26dd4b.zip
gcc-6aea3c3720b89f43b3fd6553a8a70fa5fc26dd4b.tar.gz
gcc-6aea3c3720b89f43b3fd6553a8a70fa5fc26dd4b.tar.bz2
Simplify config/avr/genmultilib.awk.
gcc/ Simplify config/avr/genmultilib.awk. * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile" command option from $(AWK) call. * config/avr/genmultilib.awk: Simplify and rewrite so that it generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS. [FORMAT]: Remove handling of variable. * config/avr/t-multilib: Regenerate. From-SVN: r248332
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/avr/genmultilib.awk169
-rw-r--r--gcc/config/avr/t-avr7
-rw-r--r--gcc/config/avr/t-multilib33
4 files changed, 77 insertions, 141 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0a3ea11..1384587 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2017-05-22 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
+ command option from $(AWK) call.
+ * config/avr/genmultilib.awk: Simplify and rewrite so that it
+ generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
+ [FORMAT]: Remove handling of variable.
+ * config/avr/t-multilib: Regenerate.
+
2017-05-22 Jan Hubicka <hubicka@ucw.cz>
* ipa-inline-analysis.c (inline_summary::reset): Do not reset
diff --git a/gcc/config/avr/genmultilib.awk b/gcc/config/avr/genmultilib.awk
index b28ce79..ff93c1b 100644
--- a/gcc/config/avr/genmultilib.awk
+++ b/gcc/config/avr/genmultilib.awk
@@ -22,23 +22,28 @@
# Representation that is understood by GCC's multilib Machinery.
#
# The Script works as a Filter from STDIN to STDOUT.
-#
-# FORMAT = "Makefile": Generate Makefile Snipet that sets some
-# MULTILIB_* Variables as needed.
+# It generates a Makefile Snippet that sets some
+# MULTILIB_* Variables as needed.
#
##################################################################
BEGIN {
FS ="[(, \t]+"
option[""] = ""
- tiny_stack[""] = 1
comment = 1
- n_mcu = 0
- n_cores = 0
- mtiny[0] = ""
- mtiny[1] = "tiny-stack"
- option["tiny-stack"] = "msp8"
+ dir_tiny = "tiny-stack"
+ opt_tiny = "msp8"
+
+ # awk Variable Makefile Variable
+ # ------------------------------------------
+ # m_options <-> MULTILIB_OPTIONS
+ # m_dirnames <-> MULTILIB_DIRNAMES
+ # m_required <-> MULTILIB_REQUIRED
+ m_sep = ""
+ m_options = "\nMULTILIB_OPTIONS = "
+ m_dirnames = "\nMULTILIB_DIRNAMES ="
+ m_required = "\nMULTILIB_REQUIRED ="
}
##################################################################
@@ -51,14 +56,11 @@ BEGIN {
next
else if (comment == 1)
{
- if (FORMAT == "Makefile")
- {
- print "# Auto-generated Makefile Snip"
- print "# Generated by : ./gcc/config/avr/genmultilib.awk"
- print "# Generated from : ./gcc/config/avr/avr-mcus.def"
- print "# Used by : tmake_file from Makefile and genmultilib"
- print ""
- }
+ print "# Auto-generated Makefile Snip"
+ print "# Generated by : ./gcc/config/avr/genmultilib.awk"
+ print "# Generated from : ./gcc/config/avr/avr-mcus.def"
+ print "# Used by : tmake_file from Makefile and genmultilib"
+ print ""
}
comment = 2;
@@ -74,12 +76,10 @@ BEGIN {
}
##################################################################
-# Run over all AVR_MCU Lines and gather Information:
-# cores[] : Enumerates the Cores (avr2, avr25, ...)
-# mcu[] : Enumerates the Devices
-# tiny_stack[]: Maps Core/Device to 0 (2-byte SP) or 1 (1-byte SP)
-# option[] : Maps Core/Device to the mmcu= option to get it
-# toCore[] : Maps Device to its Core
+# Run over all AVR_MCU Lines. If we encounter a required multilib
+# variant, add according combination of options to m_required,
+# but onyl once. Add encountered cores to m_dirnames and
+# according -mmcu= options to m_options.
##################################################################
/^AVR_MCU/ {
@@ -94,11 +94,12 @@ BEGIN {
if (core == "avr1")
next
- cores[n_cores] = core
- n_cores++
- tiny_stack[core] = 0
option[core] = "mmcu=" core
+ m_options = m_options m_sep option[core]
+ m_dirnames = m_dirnames " " core
+ m_sep = "/"
+
next
}
@@ -106,116 +107,40 @@ BEGIN {
if (core == "avr1")
next
+ opts = option[core]
+
# split device specific feature list
n = split($4,dev_attribute,"|")
- # set tiny_stack false by default
- tiny_stack[name] = 0
for (i=1; i <= n; i++)
- if (dev_attribute[i] == "AVR_SHORT_SP") {
- tiny_stack[name] = 1
- break
- }
-
- mcu[n_mcu] = name
- n_mcu++
- option[name] = "mmcu=" name
- toCore[name] = core
-
- if (tiny_stack[name] == 1)
- tiny_stack[core] = 1
-}
-
-##################################################################
-#
-# We gathered all the Information, now build/output the following:
-#
-# awk Variable target Variable FORMAT
-# -----------------------------------------------------------
-# m_options <-> MULTILIB_OPTIONS Makefile
-# m_dirnames <-> MULTILIB_DIRNAMES "
-# m_exceptions <-> MULTILIB_EXCEPTIONS "
-#
-##################################################################
-
-END {
- m_options = "\nMULTILIB_OPTIONS = "
- m_dirnames = "\nMULTILIB_DIRNAMES ="
- m_exceptions = "\nMULTILIB_EXCEPTIONS ="
-
- ##############################################################
- # Compose MULTILIB_OPTIONS. This represents the Cross-Product
- # (avr2, avr25, ...) x msp8
-
- sep = ""
- for (c = 0; c < n_cores; c++)
{
- m_options = m_options sep option[cores[c]]
- sep = "/"
+ if (dev_attribute[i] == "AVR_SHORT_SP")
+ opts = opts "/" opt_tiny
}
- # The ... x msp8
- m_options = m_options " " option[mtiny[1]]
-
- ##############################################################
- # Map Device to its multilib
-
- for (t = 0; t < n_mcu; t++)
+ if (!have[opts])
{
- core = toCore[mcu[t]]
-
- line = option[core] ":" option[mcu[t]]
- gsub ("=", "?", line)
- gsub (":", "=", line)
+ have[opts] = 1
+ # Some special handling for the default mmcu: Remove a
+ # leading "mmcu=avr2/" in order not to confuse genmultilib.
+ opts = gensub (/mmcu=avr2\//, "", 1, opts)
+ if (opts != "mmcu=avr2")
+ m_required = m_required " \\\n\t" opts
}
+}
- ####################################################################
- # Compose MULTILIB_DIRNAMES and MULTILIB_EXEPTIONS
-
- n_mtiny = 2
- for (t = 0; t < n_mtiny; t++)
- for (c = -1; c < n_cores; c++)
- {
- if (c == -1)
- core = ""
- else
- core = cores[c]
-
- # The Directory Name for this multilib
-
- if (core != "" && mtiny[t] != "")
- {
- mdir = core "/" mtiny[t]
- mopt = option[core] "/" option[mtiny[t]]
- }
- else
- {
- mdir = core mtiny[t]
- mopt = option[core] option[mtiny[t]]
- }
-
- if (core != "" && tiny_stack[core] == 0 && mtiny[t] != "")
- {
- # There's not a single SP = 8 Devices for this Core:
- # Don't build respective multilib
- m_exceptions = m_exceptions " \\\n\t" mopt
- continue
- }
-
- if (core != "avr2" || mtiny[t] == "")
- m_dirnames = m_dirnames " " mdir
- }
+##################################################################
+#
+##################################################################
+END {
############################################################
# Output that Stuff
############################################################
- if (FORMAT == "Makefile")
- {
- # Intended Target: ./gcc/config/avr/t-multilib
+ # Intended Target: ./gcc/config/avr/t-multilib
- print m_options
- print m_dirnames
- print m_exceptions
- }
+ print m_options " " opt_tiny
+ print m_dirnames " " dir_tiny
+ print m_required
}
diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr
index e725d58..251e52e 100644
--- a/gcc/config/avr/t-avr
+++ b/gcc/config/avr/t-avr
@@ -89,14 +89,13 @@ install-device-specs: s-device-specs installdirs
$(INSTALL_DATA) $${file} $(DESTDIR)$(libsubdir)/$${file}; \
done
-# Map -mmcu= to the right multilib variant
+# Get multilib layout
# MULTILIB_OPTIONS
# MULTILIB_DIRNAMES
-# MULTILIB_EXCEPTIONS
-# MULTILIB_MATCHES
+# MULTILIB_REQUIRED
s-mlib: $(srcdir)/config/avr/t-multilib
$(srcdir)/config/avr/t-multilib: $(srcdir)/config/avr/genmultilib.awk \
$(AVR_MCUS)
- $(AWK) -f $< -v FORMAT=Makefile $< $(AVR_MCUS) > $@
+ $(AWK) -f $< $< $(AVR_MCUS) > $@
diff --git a/gcc/config/avr/t-multilib b/gcc/config/avr/t-multilib
index 8389422..dbbf3bc 100644
--- a/gcc/config/avr/t-multilib
+++ b/gcc/config/avr/t-multilib
@@ -23,19 +23,22 @@
MULTILIB_OPTIONS = mmcu=avr2/mmcu=avr25/mmcu=avr3/mmcu=avr31/mmcu=avr35/mmcu=avr4/mmcu=avr5/mmcu=avr51/mmcu=avr6/mmcu=avrxmega2/mmcu=avrxmega4/mmcu=avrxmega5/mmcu=avrxmega6/mmcu=avrxmega7/mmcu=avrtiny msp8
-MULTILIB_DIRNAMES = avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny tiny-stack avr25/tiny-stack
+MULTILIB_DIRNAMES = avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny tiny-stack
-MULTILIB_EXCEPTIONS = \
- mmcu=avr3/msp8 \
- mmcu=avr31/msp8 \
- mmcu=avr35/msp8 \
- mmcu=avr4/msp8 \
- mmcu=avr5/msp8 \
- mmcu=avr51/msp8 \
- mmcu=avr6/msp8 \
- mmcu=avrxmega2/msp8 \
- mmcu=avrxmega4/msp8 \
- mmcu=avrxmega5/msp8 \
- mmcu=avrxmega6/msp8 \
- mmcu=avrxmega7/msp8 \
- mmcu=avrtiny/msp8
+MULTILIB_REQUIRED = \
+ msp8 \
+ mmcu=avr25 \
+ mmcu=avr25/msp8 \
+ mmcu=avr3 \
+ mmcu=avr31 \
+ mmcu=avr35 \
+ mmcu=avr4 \
+ mmcu=avr5 \
+ mmcu=avr51 \
+ mmcu=avr6 \
+ mmcu=avrxmega2 \
+ mmcu=avrxmega4 \
+ mmcu=avrxmega5 \
+ mmcu=avrxmega6 \
+ mmcu=avrxmega7 \
+ mmcu=avrtiny