[AArch64][PR 66136] rewrite geniterators.sh in awk
2015-06-02 Szabolcs Nagy <szabolcs.nagy@arm.com> PR target/66136 * config/aarch64/geniterators.sh: Rewrite in awk. From-SVN: r224031
This commit is contained in:
parent
755afe2e51
commit
ddda05980f
2 changed files with 51 additions and 19 deletions
|
@ -1,3 +1,8 @@
|
|||
2015-06-02 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
PR target/66136
|
||||
* config/aarch64/geniterators.sh: Rewrite in awk.
|
||||
|
||||
2015-06-02 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* alloc-pool.h (pool_allocator::pool_allocator): Set implicit
|
||||
|
|
|
@ -22,25 +22,52 @@
|
|||
# Generate aarch64-builtin-iterators.h, a file containing a series of
|
||||
# BUILTIN_<ITERATOR> macros, which expand to VAR<N> Macros covering the
|
||||
# same set of modes as the iterator in iterators.md
|
||||
|
||||
echo "/* -*- buffer-read-only: t -*- */"
|
||||
echo "/* Generated automatically by geniterators.sh from iterators.md. */"
|
||||
echo "#ifndef GCC_AARCH64_ITERATORS_H"
|
||||
echo "#define GCC_AARCH64_ITERATORS_H"
|
||||
|
||||
# Strip newlines, create records marked ITERATOR, and strip junk (anything
|
||||
# which does not have a matching brace because it contains characters we
|
||||
#
|
||||
# Find the <ITERATOR> definitions (may span several lines), skip the ones
|
||||
# which does not have a simple format because it contains characters we
|
||||
# don't want to or can't handle (e.g P, PTR iterators change depending on
|
||||
# Pmode and ptr_mode).
|
||||
export LC_ALL=C
|
||||
cat $1 | tr "\n" " " \
|
||||
| sed 's/(define_mode_iterator \([A-Za-z0-9_]*\) \([]\[A-Z0-9 \t]*\)/\n#define BUILTIN_\1(T, N, MAP) \\ \2\n/g' \
|
||||
| grep '#define [A-Z0-9_(), \\]* \[[A-Z0-9[:space:]]*]' \
|
||||
| sed 's/\t//g' \
|
||||
| sed 's/ */ /g' \
|
||||
| sed 's/ \[\([A-Z0-9 ]*\)]/\n\1/' \
|
||||
| awk ' BEGIN { FS = " " ; OFS = ", "} \
|
||||
/#/ { print } \
|
||||
! /#/ { $1 = $1 ; printf " VAR%d (T, N, MAP, %s)\n", NF, tolower($0) }'
|
||||
LC_ALL=C awk '
|
||||
BEGIN {
|
||||
print "/* -*- buffer-read-only: t -*- */"
|
||||
print "/* Generated automatically by geniterators.sh from iterators.md. */"
|
||||
print "#ifndef GCC_AARCH64_ITERATORS_H"
|
||||
print "#define GCC_AARCH64_ITERATORS_H"
|
||||
}
|
||||
|
||||
echo "#endif /* GCC_AARCH64_ITERATORS_H */"
|
||||
{
|
||||
sub(/;.*/, "")
|
||||
}
|
||||
|
||||
iterdef {
|
||||
s = s " " $0
|
||||
}
|
||||
|
||||
!iterdef && /\(define_mode_iterator/ {
|
||||
iterdef = 1
|
||||
s = $0
|
||||
sub(/.*\(define_mode_iterator/, "", s)
|
||||
}
|
||||
|
||||
iterdef && s ~ /\)/ {
|
||||
iterdef = 0
|
||||
|
||||
gsub(/[ \t]+/, " ", s)
|
||||
sub(/ *\).*/, "", s)
|
||||
sub(/^ /, "", s)
|
||||
if (s !~ /^[A-Za-z0-9_]+ \[[A-Z0-9 ]*\]$/)
|
||||
next
|
||||
sub(/\[ */, "", s)
|
||||
sub(/ *\]/, "", s)
|
||||
|
||||
n = split(s, a)
|
||||
printf "#define BUILTIN_" a[1] "(T, N, MAP) \\\n"
|
||||
printf " VAR" (n-1) " (T, N, MAP"
|
||||
for (i = 2; i <= n; i++)
|
||||
printf ", " tolower(a[i])
|
||||
printf ")\n"
|
||||
}
|
||||
|
||||
END {
|
||||
print "#endif /* GCC_AARCH64_ITERATORS_H */"
|
||||
}' $1
|
||||
|
|
Loading…
Add table
Reference in a new issue