Add new script to contrib (GIMPLE syntax highlighting rules for Vim).
contrib/ * gimple.vim: New file. From-SVN: r223884
This commit is contained in:
parent
6e042ef4e2
commit
ec3dfdac4d
@ -1,3 +1,7 @@
|
||||
2015-05-30 Mikhail Maltsev <maltsevm@gmail.com>
|
||||
|
||||
* gimple.vim: New file.
|
||||
|
||||
2015-05-18 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
* check_GNU_style.sh: Add temp files tmp2 and tmp3.
|
||||
|
139
contrib/gimple.vim
Normal file
139
contrib/gimple.vim
Normal file
@ -0,0 +1,139 @@
|
||||
" Syntax highlighting rules for GIMPLE dump files (for Vim).
|
||||
"
|
||||
" Copyright (C) 2015 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
|
||||
"
|
||||
" This Vim script highlights syntax in debug dumps containing GIMPLE
|
||||
" intermediate representation. Such dumps are produced by GCC when
|
||||
" it is invoked with -fdump-tree-* and/or -fdump-ipa-* switches. Tested
|
||||
" in Vim 7.4 (but should also work with earlier versions).
|
||||
"
|
||||
" INSTALLATION:
|
||||
" 1. Copy the script into $HOME/.vim/syntax directory
|
||||
" 2. Create a file gimple.vim in $HOME/.vim/ftdetect directory with the
|
||||
" following command in it:
|
||||
"
|
||||
" au BufRead,BufNewFile *.[0-2][0-9][0-9][ti].* set filetype=gimple
|
||||
"
|
||||
" The pattern in this autocommand corresponds to default file names
|
||||
" of debug dumps, e.g.:
|
||||
" filename.cc.123t.pass-name
|
||||
|
||||
|
||||
" Do not continue, if syntax is already enabled in current buffer.
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" If this variable is set to true, "Unknown tree" in -fdump-tree-original will
|
||||
" be highlighted as an error.
|
||||
let s:unknown_tree_is_error=0
|
||||
|
||||
" Comments for Phi nodes, value ranges, use/def-chains, etc.
|
||||
syn match gimpleAnnotation "\v#.*$"
|
||||
\ contains=gimpleAnnotationOp, gimpleAnnotationMark,
|
||||
\ gimpleNumber, gimpleLineNo
|
||||
syn match gimpleAnnotationMark "#" contained
|
||||
syn keyword gimpleAnnotationOp PHI VUSE VDEF RANGE PT USE CLB
|
||||
\ ALIGN MISALIGN NONZERO contained
|
||||
|
||||
" General-purpose comments.
|
||||
syn match gimpleComment ";;.*$"
|
||||
|
||||
" Types - mostly borrowed from original Vim syntax file for C
|
||||
syn keyword gimpleType int long short char void
|
||||
\ signed unsigned float double
|
||||
\ size_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t
|
||||
\ clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
|
||||
\ mbstate_t wctrans_t wint_t wctype_t
|
||||
\ _Bool bool _Complex complex _Imaginary imaginary
|
||||
\ int8_t int16_t int32_t int64_t
|
||||
\ uint8_t uint16_t uint32_t uint64_t
|
||||
\ int_least8_t int_least16_t int_least32_t int_least64_t
|
||||
\ uint_least8_t uint_least16_t uint_least32_t uint_least64_t
|
||||
\ int_fast8_t int_fast16_t int_fast32_t int_fast64_t
|
||||
\ uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
|
||||
\ intptr_t uintptr_t
|
||||
\ intmax_t uintmax_t
|
||||
\ __label__ __complex__ __volatile__
|
||||
\ char16_t char32_t sizetype __vtbl_ptr_type
|
||||
|
||||
" C/C++-like control structures
|
||||
syn keyword gimpleStatement goto return
|
||||
syn keyword gimpleConditional if else
|
||||
syn keyword gimpleLoop while
|
||||
syn keyword gimpleException try catch finally
|
||||
|
||||
" Special 'values'
|
||||
syn match gimpleConstant "{CLOBBER}"
|
||||
syn match gimpleConstant "{ref-all}"
|
||||
syn match gimpleConstant "{v}"
|
||||
|
||||
" Blocks
|
||||
syn region gimpleBlock start="{" end="}" transparent fold
|
||||
|
||||
" String literals
|
||||
syn region gimpleString start=/\v"/ skip=/\v\\./ end=/\v"/
|
||||
|
||||
" GENERIC AST nodes
|
||||
syn keyword gimpleASTNode BIT_FIELD_REF TARGET_EXPR expr_stmt
|
||||
\ NON_LVALUE_EXPR
|
||||
\ must_not_throw_expr eh_spec_block eh_filter
|
||||
\ eh_must_not_throw aggr_init_expr cleanup_point
|
||||
|
||||
if s:unknown_tree_is_error
|
||||
syn match gimpleUnknownTree "\vUnknown tree: \w+"
|
||||
end
|
||||
|
||||
" Numbers
|
||||
syn match gimpleNumber "\v([^.a-zA-Z0-9_])\zs-?\d+B?"
|
||||
syn match gimpleFloat "\v\W\zs-?\d*\.\d+(e\+\d+)?"
|
||||
|
||||
" Basic block label
|
||||
" <bb 123>:
|
||||
syn match gimpleLabel "\v^\s*\zs\<bb \d+\>"
|
||||
" <D.1234>:
|
||||
" <L1>:
|
||||
syn match gimpleLabel "\v^\s*\zs\<[DL]\.?\d+\>"
|
||||
" label: - user-defined label
|
||||
" bb1L.1:
|
||||
syn match gimpleLabel "\v^\s*[a-zA-Z0-9._]+\ze:\s*$"
|
||||
|
||||
" Match label after goto to suppress highlighting of numbers inside
|
||||
syn match gimpleGotoLabel "\v<bb \d+\>[^:]"
|
||||
|
||||
" Line numbers, generated with -fdump-tree-*-lineno
|
||||
syn match gimpleLineNo "\v\[[^\]]+:\d+:\d+\]"
|
||||
|
||||
" Misc C/C++-like keywords
|
||||
syn keyword gimpleStructure struct union enum typedef class
|
||||
syn keyword gimpleStorageClass static register auto volatile extern const
|
||||
\ template inline __attribute__ _Alignas alignas _Atomic
|
||||
\ _Thread_local thread_local _Alignof alignof sizeof
|
||||
|
||||
hi def link gimpleType Type
|
||||
hi def link gimpleNumber Number
|
||||
hi def link gimpleFloat Float
|
||||
hi def link gimpleConstant Constant
|
||||
hi def link gimpleStructure Structure
|
||||
hi def link gimpleStorageClass StorageClass
|
||||
hi def link gimpleOperator Operator
|
||||
hi def link gimpleASTNode Operator
|
||||
hi def link gimpleStatement Statement
|
||||
hi def link gimpleConditional Conditional
|
||||
hi def link gimpleLoop Repeat
|
||||
hi def link gimpleException Exception
|
||||
hi def link gimpleComment Comment
|
||||
hi def link gimpleLineNo Comment
|
||||
hi def link gimpleLabel Label
|
||||
hi def link gimpleAnnotationOp Debug
|
||||
hi def link gimpleAnnotationMark Debug
|
||||
hi def link gimpleString String
|
||||
hi def link gimpleUnknownTree Error
|
||||
|
||||
let b:current_syntax = "gimple"
|
||||
|
Loading…
Reference in New Issue
Block a user