From 4bfad27f94841635bc520b98feebc1e88a19f208 Mon Sep 17 00:00:00 2001 From: Yvan Roux Date: Fri, 2 Sep 2016 09:59:58 +0200 Subject: [PATCH] gcc/ Backport from trunk r237548. 2016-06-17 Szabolcs Nagy * config/aarch64/geniterators.sh: Handle parenthesised conditions. Change-Id: I3eb6902dd41933cd2f41d1740f84f63a1921e0b2 --- gcc/config/aarch64/geniterators.sh | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/gcc/config/aarch64/geniterators.sh b/gcc/config/aarch64/geniterators.sh index ec1b1ea..8baa244 100644 --- a/gcc/config/aarch64/geniterators.sh +++ b/gcc/config/aarch64/geniterators.sh @@ -23,10 +23,7 @@ # BUILTIN_ macros, which expand to VAR Macros covering the # same set of modes as the iterator in iterators.md # -# Find the 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). +# Find the definitions (may span several lines). LC_ALL=C awk ' BEGIN { print "/* -*- buffer-read-only: t -*- */" @@ -49,12 +46,24 @@ iterdef { sub(/.*\(define_mode_iterator/, "", s) } -iterdef && s ~ /\)/ { +iterdef { + # Count the parentheses, the iterator definition ends + # if there are more closing ones than opening ones. + nopen = gsub(/\(/, "(", s) + nclose = gsub(/\)/, ")", s) + if (nopen >= nclose) + next + iterdef = 0 gsub(/[ \t]+/, " ", s) - sub(/ *\).*/, "", s) + sub(/ *\)[^)]*$/, "", s) sub(/^ /, "", s) + + # Drop the conditions. + gsub(/ *"[^"]*" *\)/, "", s) + gsub(/\( */, "", s) + if (s !~ /^[A-Za-z0-9_]+ \[[A-Z0-9 ]*\]$/) next sub(/\[ */, "", s) -- 2.7.4