gnu/gcc/a5392408f83a91c24aba57539db5bb6f66588d64 AVR: Support to print nodes brief and recursive.
This patch adds a new format %N to the avr_xdump functions.
The purpose is to print a tree node, usually a DECL_P or
a TYPE_P in a recursive form that's not too verbose.
For example:
typedef int (* const __flash fun_t)(long, int);
int foo (fun_t (*f[][4]), int x, int y)
{
return (*f[x][y]) (x, y);
}
will print with -mlog=insert_attributes, amongst others:
avr_insert_attributes[:pass=?]:
<parm_decl 0x7f833edd8110 f>
<pointer_type 0x7f833edacb28>
<array_type 0x7f833edac888>
<pointer_type 0x7f833edac690>
<pointer_type 0x7f833edac5e8 fun_t address-space-1> read-only
<function_type 0x7f833edac3f0>
<integer_type 0x7f833ec745e8 int> return
<integer_type 0x7f833ec74738 long int>
<integer_type 0x7f833ec745e8 int>
<void_type 0x7f833ec7c1f8 void>
gcc/
* config/avr/avr-protos.h (avr_log_t) <insert_attributes>: New field.
* config/avr/avr-log.cc (avr_log_node): New static function.
(avr_log_vadump) [%N]: Call it.
(avr_log_set_avr_log) <insert_attributes>: New SET_DUMP_DETAIL.
* config/avr/avr.cc (avr_pgm_check_var_decl): Don't call avr_edump.
(avr_insert_attributes) [avr_log.insert_attributes]: Call avr_edump.
3 files changed