Remove linkonce_odr_auto_hide.
[oota-llvm.git] / utils / vim / llvm.vim
index 92971c3df6c82e2ca31b15ce114bac82b29bd673..c611ad8dd07572ee1e8e54203ec242476a8cafe0 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:   llvm
-" Maintainer: The LLVM team, http://llvm.cs.uiuc.edu/
-" Updated:    2003-06-02
+" Maintainer: The LLVM team, http://llvm.org/
+" Version:      $Revision$
 
 if version < 600
   syntax clear
@@ -11,34 +11,73 @@ endif
 
 syn case match
 
-syn keyword llvmType void bool sbyte ubyte
-syn keyword llvmType short ushort int uint
-syn keyword llvmType long ulong float double
+" Types.
+" Types also include struct, array, vector, etc. but these don't
+" benefit as much from having dedicated highlighting rules.
+syn keyword llvmType void half float double x86_fp80 fp128 ppc_fp128
+syn keyword llvmType label metadata x86_mmx
 syn keyword llvmType type label opaque
+syn match   llvmType /\<i\d\+\>/
 
-syn keyword llvmStatement add sub mul div rem
-syn keyword llvmStatement and or xor
-syn keyword llvmStatement setne seteq setlt setgt setle setge
+" Instructions.
+" The true and false tokens can be used for comparison opcodes, but it's
+" much more common for these tokens to be used for boolean constants.
+syn keyword llvmStatement add alloca and arcp ashr atomicrmw bitcast br call
+syn keyword llvmStatement cmpxchg eq exact extractelement extractvalue fadd fast
+syn keyword llvmStatement fcmp fdiv fence fmul fpext fptosi fptoui fptrunc free
+syn keyword llvmStatement frem fsub getelementptr icmp inbounds indirectbr
+syn keyword llvmStatement insertelement insertvalue inttoptr invoke landingpad
+syn keyword llvmStatement load lshr malloc max min mul nand ne ninf nnan nsw nsz
+syn keyword llvmStatement nuw oeq oge ogt ole olt one or ord phi ptrtoint resume
+syn keyword llvmStatement ret sdiv select sext sge sgt shl shufflevector sitofp
+syn keyword llvmStatement sle slt srem store sub switch trunc udiv ueq uge ugt
+syn keyword llvmStatement uitofp ule ult umax umin une uno unreachable unwind
+syn keyword llvmStatement urem va_arg xchg xor zext
 
-syn keyword llvmStatement phi call cast to shl shr va_arg
-syn keyword llvmStatement ret br switch invoke
-syn keyword llvmStatement malloc alloca free load store getelementptr
+" Keywords.
+syn keyword llvmKeyword acq_rel acquire sanitize_address addrspace alias align
+syn keyword llvmKeyword alignstack alwaysinline appending arm_aapcs_vfpcc
+syn keyword llvmKeyword arm_aapcscc arm_apcscc asm atomic available_externally
+syn keyword llvmKeyword blockaddress byval c catch cc ccc cleanup coldcc common
+syn keyword llvmKeyword constant datalayout declare default define deplibs
+syn keyword llvmKeyword dllexport dllimport except extern_weak external fastcc
+syn keyword llvmKeyword filter gc global hidden initialexec inlinehint inreg
+syn keyword llvmKeyword intel_ocl_bicc inteldialect internal linker_private
+syn keyword llvmKeyword linker_private_weak
+syn keyword llvmKeyword linkonce linkonce_odr
+syn keyword llvmKeyword localdynamic localexec minsize module monotonic
+syn keyword llvmKeyword msp430_intrcc naked nest noalias nocapture
+syn keyword llvmKeyword noimplicitfloat noinline nonlazybind noredzone noreturn
+syn keyword llvmKeyword nounwind optnone optsize personality private protected
+syn keyword llvmKeyword ptx_device ptx_kernel readnone readonly release
+syn keyword llvmKeyword returns_twice sanitize_thread sanitize_memory
+syn keyword llvmKeyword section seq_cst sideeffect signext singlethread
+syn keyword llvmKeyword spir_func spir_kernel sret ssp sspreq sspstrong
+syn keyword llvmKeyword tail target thread_local to triple unnamed_addr
+syn keyword llvmKeyword unordered uwtable volatile weak weak_odr
+syn keyword llvmKeyword x86_fastcallcc x86_stdcallcc x86_thiscallcc x86_64_sysvcc
+syn keyword llvmKeyword x86_64_win64cc zeroext
 
-syn keyword llvmStatement begin end true false
-syn keyword llvmStatement declare global constant const
-syn keyword llvmStatement internal uninitialized external implementation
-syn keyword llvmStatement linkonce weak appending
-syn keyword llvmStatement null to except not target endian pointersize
-syn keyword llvmStatement big little volatile
+" Obsolete keywords.
+syn keyword llvmError  getresult begin end
 
-"syn match llvmFunction /%[a-zA-Z\$._\-][a-zA-Z\$._\-0-9]*/
-syn match  llvmNumber /\<\d\+\>/
-syn match  llvmNumber /\<\d\+\.\d*\>/
-
-syn match  llvmComment /;.*$/
-syn region llvmString start=/"/ skip=/\\"/ end=/"/
-syn match  llvmLabel /[\-a-zA-Z\$._0-9]*:/
+" Misc syntax.
+syn match   llvmNoName /[%@]\d\+\>/
+syn match   llvmNumber /-\?\<\d\+\>/
+syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
+syn match   llvmFloat  /\<0x\x\+\>/
+syn keyword llvmBoolean true false
+syn keyword llvmConstant zeroinitializer undef null
+syn match   llvmComment /;.*$/
+syn region  llvmString start=/"/ skip=/\\"/ end=/"/
+syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
+syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
 
+" Syntax-highlight dejagnu test commands.
+syn match  llvmSpecialComment /;\s*RUN:.*$/
+syn match  llvmSpecialComment /;\s*PR\d*\s*$/
+syn match  llvmSpecialComment /;\s*END\.\s*$/
+syn match  llvmSpecialComment /;\s*XFAIL:.*$/
 
 if version >= 508 || !exists("did_c_syn_inits")
   if version < 508
@@ -54,8 +93,16 @@ if version >= 508 || !exists("did_c_syn_inits")
   HiLink llvmComment Comment
   HiLink llvmString String
   HiLink llvmLabel Label
+  HiLink llvmKeyword Keyword
+  HiLink llvmBoolean Boolean
+  HiLink llvmFloat Float
+  HiLink llvmNoName Identifier
+  HiLink llvmConstant Constant
+  HiLink llvmSpecialComment SpecialComment
+  HiLink llvmError Error
+  HiLink llvmIdentifier Identifier
 
   delcommand HiLink
 endif
+
 let b:current_syntax = "llvm"