Message ID | 79dbc4bf-8e12-7604-bae9-dcb6f18e78b6@suse.cz |
---|---|
State | New |
Headers | show |
Series | Add initial version of rtl.vim syntax file. | expand |
On Tue, 12 Jun 2018, Martin Liška wrote: > This is equivalent of gimple.vim file. I'm aware of not full coverage of RTL > instructions, but hope it's a good start point. I think this is nice to have and hope you'll get an OK for both this and the gimple.vim patch. One nit-pick: unlike "GIMPLE", "RTL" is not a GCC-specific abbreviation. I'd prefer to use gcc-rtl.vim to avoid possible clashes. Do you use it quite literally as described in gimple.vim, i.e. with editing ftdetect.vim by hand? I made a plugin for gcc/match.pd syntax highlighting, and I opted to use a common plugin file layout for it. That way, I only need to symlink the plugin directory under .vim/bundle. Thanks. Alexander
On 06/15/2018 07:08 AM, Alexander Monakov wrote: > On Tue, 12 Jun 2018, Martin Liška wrote: > >> This is equivalent of gimple.vim file. I'm aware of not full coverage of RTL >> instructions, but hope it's a good start point. > > I think this is nice to have and hope you'll get an OK for both this and > the gimple.vim patch. Hi. Well, it's sitting in contrib, thus I'm planning to install that eventually if there will be not response. > > One nit-pick: unlike "GIMPLE", "RTL" is not a GCC-specific abbreviation. > I'd prefer to use gcc-rtl.vim to avoid possible clashes. Good idea, let me fix that. > > Do you use it quite literally as described in gimple.vim, i.e. with > editing ftdetect.vim by hand? I made a plugin for gcc/match.pd syntax > highlighting, and I opted to use a common plugin file layout for it. > That way, I only need to symlink the plugin directory under .vim/bundle. I use it as follows: vimrc: au BufRead,BufNewFile *.[0-2][0-9][0-9][ti].* set filetype=gimple au BufRead,BufNewFile *.[2-3][0-9][0-9]r.* set filetype=rtl Then I copied these .vim files into syntax folder. I know it's not ideal. For all other vim extensions I use plugin system (Dein) that installs plugins from github repos. So you prefer to come up with a plugin folder with the *.vim files? Thanks, Martin > > Thanks. > Alexander >
On Fri, 15 Jun 2018, Martin Liška wrote:
> So you prefer to come up with a plugin folder with the *.vim files?
Yes, the main reason being very simple installation if already using a
plugin manager. A plugin folder may contain a custom ftdetect/foo.vim,
so there's no need to edit .vimrc by hand.
If you prefer I can post patches to that effect after yours are applied.
Alexander
On 06/15/2018 06:18 PM, Alexander Monakov wrote: > On Fri, 15 Jun 2018, Martin Liška wrote: >> So you prefer to come up with a plugin folder with the *.vim files? > > Yes, the main reason being very simple installation if already using a > plugin manager. A plugin folder may contain a custom ftdetect/foo.vim, > so there's no need to edit .vimrc by hand. > > If you prefer I can post patches to that effect after yours are applied. That would be great. Martin > > Alexander >
On 06/15/2018 08:28 AM, Martin Liška wrote: > On 06/15/2018 07:08 AM, Alexander Monakov wrote: >> On Tue, 12 Jun 2018, Martin Liška wrote: >> >>> This is equivalent of gimple.vim file. I'm aware of not full coverage of RTL >>> instructions, but hope it's a good start point. >> >> I think this is nice to have and hope you'll get an OK for both this and >> the gimple.vim patch. > > Hi. > > Well, it's sitting in contrib, thus I'm planning to install that eventually > if there will be not response. > > >> >> One nit-pick: unlike "GIMPLE", "RTL" is not a GCC-specific abbreviation. >> I'd prefer to use gcc-rtl.vim to avoid possible clashes. > > Good idea, let me fix that. > >> >> Do you use it quite literally as described in gimple.vim, i.e. with >> editing ftdetect.vim by hand? I made a plugin for gcc/match.pd syntax >> highlighting, and I opted to use a common plugin file layout for it. >> That way, I only need to symlink the plugin directory under .vim/bundle. > > I use it as follows: > > vimrc: > > au BufRead,BufNewFile *.[0-2][0-9][0-9][ti].* set filetype=gimple > au BufRead,BufNewFile *.[2-3][0-9][0-9]r.* set filetype=rtl > > Then I copied these .vim files into syntax folder. I know it's not ideal. > For all other vim extensions I use plugin system (Dein) that installs plugins > from github repos. > > So you prefer to come up with a plugin folder with the *.vim files? Whatever works best in terms of ease of use for someone that wants to use the RTL (or gimple) modes. If that means they need to be in a subdir, that's fine with me. jeff
On 06/15/2018 06:18 PM, Alexander Monakov wrote: > On Fri, 15 Jun 2018, Martin Liška wrote: >> So you prefer to come up with a plugin folder with the *.vim files? > > Yes, the main reason being very simple installation if already using a > plugin manager. A plugin folder may contain a custom ftdetect/foo.vim, > so there's no need to edit .vimrc by hand. > > If you prefer I can post patches to that effect after yours are applied. > > Alexander > Hi. This is final version I'm going to install. Updates since last version: - RTL modes added - rtlInstruction should cover most of instructions we have (done via grepping of DEF_RTL_EXPR). - renamed to gcc-rtl.vim Martin From a0ee70489145ac20071452ac6e7f00066fdc0b7e Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Tue, 12 Jun 2018 13:38:27 +0200 Subject: [PATCH 1/2] Add initial version of rtl.vim syntax file. contrib/ChangeLog: 2018-06-12 Martin Liska <mliska@suse.cz> * gcc-rtl.vim: New file. --- contrib/gcc-rtl.vim | 79 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 contrib/gcc-rtl.vim diff --git a/contrib/gcc-rtl.vim b/contrib/gcc-rtl.vim new file mode 100644 index 00000000000..a325fafebbf --- /dev/null +++ b/contrib/gcc-rtl.vim @@ -0,0 +1,79 @@ +" Syntax highlighting rules for RTL dump files (for Vim). +" +" Copyright (C) 2018 Free Software Foundation, Inc. +" +" This script is free software; you can redistribute it and/or modify +" it under the terms of the GNU General Public License as published by +" the Free Software Foundation; either version 3, or (at your option) +" any later version +" +" For more instructions please see gimple.vim file in the same folder. + + +" Do not continue, if syntax is already enabled in current buffer. +if exists("b:current_syntax") + finish +endif + +" General-purpose comments. +syn match rtlComment ";;.*$" + +syn keyword rtlInstruction debug_expr insn_list int_list sequence + \ address debug_insn insn expr_list + \ jump_table_data barrier code_label + \ cond_exec parallel asm_input asm_operands + \ unspec unspec_volatile addr_vec + \ addr_diff_vec prefetch set use clobber + \ call return simple_return eh_return + \ trap_if scratch strict_low_part concat concatn + \ mem label_ref symbol_ref cc0 compare plus minus + \ neg mult ss_mult us_mult div ss_div us_div mod + \ udiv umod and ior xor not ashift rotate ashiftrt + \ lshiftrt rotatert smin smax umin umax pre_dec + \ pre_inc post_dec post_inc pre_modify post_modify + \ unordered ordered uneq unge ungt unle unlt ltgt sign_extend + \ zero_extend truncate float_extend float_truncate + \ float fix unsigned_float unsigned_fix fract_convert + \ unsigned_fract_convert sat_fract unsigned_sat_fract + \ abs sqrt bswap ffs clrsb clz ctz popcount parity + \ sign_extract zero_extract high lo_sum vec_merge + \ vec_select vec_concat vec_duplicate vec_series ss_plus + \ us_plus ss_minus ss_neg us_neg ss_abs ss_ashift + \ us_ashift us_minus ss_truncate us_truncate fma + \ entry_value exclusion_set presence_set final_presence_set + \ absence_set final_absence_set automata_option attr set_attr + \ set_attr_alternative eq_attr eq_attr_alt attr_flag cond +syn keyword rtlConditional call_insn jump_insn if_then_else + \ eq ne gt gtu lt ltu ge geu le leu +syn keyword rtlNote note barrier code_label +syn keyword rtlVariableLoation var_location +syn keyword rtlPcRegister pc + +syn keyword rtlModes VOID BLK BI QI HI SI DI TI SF DF CC QQ HQ SQ + \ DQ TQ UQQ UHQ USQ UDQ UTQ HA SA DA TA UHA + \ USA UDA UTA SD DD TD + +" String literals +syn region rtlString start=/\v"/ skip=/\v\\./ end=/\v"/ + +syn match rtlNoteInsn "NOTE_INSN_[A-Z_]*" +syn match rtlIntegerConstant "\vconst_int -?\d+" +syn match rtlFloatConstant "\vconst_double:[A-Z]+ -?\d*\.\d+(e\+\d+)?" +syn match rtlRegister "\vreg(\/[a-z])?:[A-Z0-9]+ \d+ [a-z0-9]+" +syn match rtlLocation /\v"[^"]*":\d+/ + +hi def link rtlInstruction Statement +hi def link rtlConditional Conditional +hi def link rtlNote Debug +hi def link rtlNoteInsn Debug +hi def link rtlIntegerConstant Number +hi def link rtlFloatConstant Number +hi def link rtlRegister Type +hi def link rtlPcRegister Type +hi def link rtlModes Type +hi def link rtlVariableLoation Debug +hi def link rtlComment Comment +hi def link rtlLocation Debug +hi def link rtlString String + +let b:current_syntax = "rtl"
diff --git a/contrib/rtl.vim b/contrib/rtl.vim new file mode 100644 index 00000000000..c584b56e3f3 --- /dev/null +++ b/contrib/rtl.vim @@ -0,0 +1,55 @@ +" Syntax highlighting rules for RTL dump files (for Vim). +" +" Copyright (C) 2018 Free Software Foundation, Inc. +" +" This script is free software; you can redistribute it and/or modify +" it under the terms of the GNU General Public License as published by +" the Free Software Foundation; either version 3, or (at your option) +" any later version +" +" For more instructions please see gimple.vim file in the same folder. + + +" Do not continue, if syntax is already enabled in current buffer. +if exists("b:current_syntax") + finish +endif + +" General-purpose comments. +syn match rtlComment ";;.*$" + +syn keyword rtlInstruction insn parallel_insn set mem simple_return plus + \ clobber parallel compare minus xor subreg + \ ashift ashiftrt lshiftrt symbol_reg + \ zero_extend symbol_ref label_ref call + \ vec_merge vec_duplicate vec_concat +syn keyword rtlConditional jump_insn if_then_else call_insn eq +syn keyword rtlNote note barrier code_label +syn keyword rtlVariableLoation var_location +syn keyword rtlExpressionList expr_list +syn keyword rtlPcRegister pc + +" String literals +syn region rtlString start=/\v"/ skip=/\v\\./ end=/\v"/ + +syn match rtlNoteInsn "NOTE_INSN_[A-Z_]*" +syn match rtlIntegerConstant "\vconst_int -?\d+" +syn match rtlFloatConstant "\vconst_double:[A-Z]+ -?\d*\.\d+(e\+\d+)?" +syn match rtlRegister "\vreg(\/[a-z])?:[A-Z0-9]+ \d+ [a-z0-9]+" +syn match rtlLocation /\v"[^"]*":\d+/ + +hi def link rtlInstruction Statement +hi def link rtlConditional Conditional +hi def link rtlNote Debug +hi def link rtlNoteInsn Debug +hi def link rtlIntegerConstant Number +hi def link rtlFloatConstant Number +hi def link rtlRegister Type +hi def link rtlPcRegister Type +hi def link rtlVariableLoation Debug +hi def link rtlExpressionList Debug +hi def link rtlComment Comment +hi def link rtlLocation Debug +hi def link rtlString String + +let b:current_syntax = "rtl"