mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			147 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
| " 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).
 | |
| 
 | |
| 
 | |
| " 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
 | |
| 
 | |
| " Ignore probability of edges and basic blocks
 | |
| "  <bb 2> [70.00%]:
 | |
| syn match   gimpleFrequency     " \[\d*\.\d*%\]"
 | |
| 
 | |
| " Ignore basic block with a count
 | |
| "  <bb 10> [local count: 118111601]:
 | |
| syn match   gimpleBBCount       "\v\[(local )?count: \d+\]"
 | |
| 
 | |
| " 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+\]"
 | |
| 
 | |
| " DEBUG statements
 | |
| syn match   gimpleDebug         "\v# DEBUG.*"
 | |
| 
 | |
| " GIMPLE predict statement
 | |
| syn match   gimplePrediction    "\v\/\/ predicted.*"
 | |
| 
 | |
| 
 | |
| " 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
 | |
| hi def link gimpleDebug         Debug
 | |
| hi def link gimplePrediction    Debug
 | |
| hi def link gimpleFrequency     Debug
 | |
| hi def link gimpleBBCount       Debug
 | |
| 
 | |
| let b:current_syntax = "gimple"
 |