aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2018-06-29 09:56:40 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2018-06-29 09:56:40 +0000
commit6475e077a091ea57b7442ed35feaf031728bdeb2 (patch)
tree51378b372948340b17f7da85b6fb2375dfa3a031 /gcc/tree-vectorizer.h
parent6fdce073fc342fab76363e9169f7bcf49d8ab98b (diff)
downloadgcc-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.h15
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. */