diff options
author | David Malcolm <dmalcolm@redhat.com> | 2018-06-29 09:56:40 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2018-06-29 09:56:40 +0000 |
commit | 6475e077a091ea57b7442ed35feaf031728bdeb2 (patch) | |
tree | 51378b372948340b17f7da85b6fb2375dfa3a031 /gcc/tree-vectorizer.h | |
parent | 6fdce073fc342fab76363e9169f7bcf49d8ab98b (diff) | |
download | gcc-6475e077a091ea57b7442ed35feaf031728bdeb2.zip gcc-6475e077a091ea57b7442ed35feaf031728bdeb2.tar.gz gcc-6475e077a091ea57b7442ed35feaf031728bdeb2.tar.bz2 |
dumpfile.c: add indentation via DUMP_VECT_SCOPE
This patch adds a concept of nested "scopes" to dumpfile.c's dump_*_loc
calls, and wires it up to the DUMP_VECT_SCOPE macro in tree-vectorizer.h,
so that the nested structure is shown in -fopt-info by indentation.
For example, this converts -fopt-info-all e.g. from:
test.c:8:3: note: === analyzing loop ===
test.c:8:3: note: === analyze_loop_nest ===
test.c:8:3: note: === vect_analyze_loop_form ===
test.c:8:3: note: === get_loop_niters ===
test.c:8:3: note: symbolic number of iterations is (unsigned int) n_9(D)
test.c:8:3: note: not vectorized: loop contains function calls or data references that cannot be analyzed
test.c:8:3: note: vectorized 0 loops in function
to:
test.c:8:3: note: === analyzing loop ===
test.c:8:3: note: === analyze_loop_nest ===
test.c:8:3: note: === vect_analyze_loop_form ===
test.c:8:3: note: === get_loop_niters ===
test.c:8:3: note: symbolic number of iterations is (unsigned int) n_9(D)
test.c:8:3: note: not vectorized: loop contains function calls or data references that cannot be analyzed
test.c:8:3: note: vectorized 0 loops in function
showing that the "symbolic number of iterations" message is within
the "=== analyze_loop_nest ===" (and not within the
"=== vect_analyze_loop_form ===").
This is also enabling work for followups involving optimization records
(allowing the records to directly capture the nested structure of the
dump messages).
gcc/ChangeLog:
* dumpfile.c (dump_loc): Add indentation based on scope depth.
(dump_scope_depth): New variable.
(get_dump_scope_depth): New function.
(dump_begin_scope): New function.
(dump_end_scope): New function.
* dumpfile.h (get_dump_scope_depth): New declaration.
(dump_begin_scope): New declaration.
(dump_end_scope): New declaration.
(class auto_dump_scope): New class.
(AUTO_DUMP_SCOPE): New macro.
* tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
AUTO_DUMP_SCOPE.
From-SVN: r262246
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 94a0f38..a8406b3 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -1440,15 +1440,16 @@ vect_get_scalar_dr_size (struct data_reference *dr) /* Source location + hotness information. */ extern dump_user_location_t vect_location; -/* If dumping is enabled, emit a MSG_NOTE at vect_location about - entering MSG within the vectorizer. MSG should be a string literal. */ +/* A macro for calling: + dump_begin_scope (MSG, vect_location); + via an RAII object, thus printing "=== MSG ===\n" to the dumpfile etc, + and then calling + dump_end_scope (); + once the object goes out of scope, thus capturing the nesting of + the scopes. */ #define DUMP_VECT_SCOPE(MSG) \ - do { \ - if (dump_enabled_p ()) \ - dump_printf_loc (MSG_NOTE, vect_location, \ - "=== " MSG " ===\n"); \ - } while (0) + AUTO_DUMP_SCOPE (MSG, vect_location) /*-----------------------------------------------------------------*/ /* Function prototypes. */ |