summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormzakirov <mzakirov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-07 08:15:19 +0000
committermzakirov <mzakirov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-07 08:15:19 +0000
commitdaf8408de3d45fce7eb2b5989ea663ad9b7ac8db (patch)
treed7a4550afd1767a5e8e18e8e54c63c5ba8992337
parent7e3c779eb394710cfe246129e6d79683dc7eda65 (diff)
downloadgcc-daf8408de3d45fce7eb2b5989ea663ad9b7ac8db.tar.gz
contrib/
2014-11-07 Marat Zakirov <m.zakirov@samsung.com> * mklog: Always doubt in functions. Add EOF protection. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217212 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--contrib/ChangeLog5
-rwxr-xr-xcontrib/mklog41
2 files changed, 29 insertions, 17 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 3878803bdf2..9dcc7ea3ac9 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2014-11-07 Marat Zakirov <m.zakirov@samsung.com>
+
+ * mklog: Always doubt in functions.
+ Add EOF protection.
+
2014-10-31 Jan-Benedict Glaw <jbglaw@lug-owl.de>
* config-list.mk: Don't build Go for certain targets.
diff --git a/contrib/mklog b/contrib/mklog
index 6ed4c6e8f51..8e3c6b619ac 100755
--- a/contrib/mklog
+++ b/contrib/mklog
@@ -108,10 +108,22 @@ sub remove_suffixes ($) {
return $filename;
}
+sub is_context_hunk_start {
+ return @_[0] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/;
+}
+
+sub is_unified_hunk_start {
+ return @_[0] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/;
+}
+
# Check if line is a top-level declaration.
# TODO: ignore preprocessor directives except maybe #define ?
sub is_top_level {
my ($function, $is_context_diff) = (@_);
+ if (is_unified_hunk_start ($function)
+ || is_context_hunk_start ($function)) {
+ return 1;
+ }
if ($is_context_diff) {
$function =~ s/^..//;
} else {
@@ -200,14 +212,10 @@ foreach (@diff_lines) {
$look_for_funs = 0;
}
- # Mark if we met doubtfully changed function.
- $doubtfunc = 0;
- if ($diff_lines[$line_idx] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/) {
- $doubtfunc = 1;
+ if (is_unified_hunk_start ($diff_lines[$line_idx])) {
$is_context_diff = 0;
}
- elsif ($diff_lines[$line_idx] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/) {
- $doubtfunc = 1;
+ elsif (is_context_hunk_start ($diff_lines[$line_idx])) {
$is_context_diff = 1;
}
@@ -222,7 +230,6 @@ foreach (@diff_lines) {
#
# The third pattern looks for the starts of functions or classes
# within a diff block both for context and unified diff files.
-
if ($look_for_funs
&& (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/
|| /^@@ .* @@ ([a-zA-Z0-9_].*)/
@@ -249,19 +256,19 @@ foreach (@diff_lines) {
}
# Check is function really modified
$no_real_change = 0;
- if ($doubtfunc) {
- $idx = $line_idx;
+ $idx = $line_idx;
# Skip line info in context diffs.
- while ($is_context_diff && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) {
- ++$idx;
- }
+ while ($idx <= $#diff_lines && $is_context_diff
+ && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) {
+ ++$idx;
+ }
# Check all lines till the first change
# for the presence of really changed function
- do {
- ++$idx;
- $no_real_change = is_top_level ($diff_lines[$idx], $is_context_diff);
- } while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/))
- }
+ do {
+ ++$idx;
+ $no_real_change = $idx > $#diff_lines
+ || is_top_level ($diff_lines[$idx], $is_context_diff);
+ } while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/));
if ($fn && !$seen_names{$fn} && !$no_real_change) {
# If this is the first function in the file, we display it next
# to the filename, so we need an extra space before the opening