diff options
Diffstat (limited to 'llvm/tools/llvm-mc/AsmCond.h')
-rw-r--r-- | llvm/tools/llvm-mc/AsmCond.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/llvm/tools/llvm-mc/AsmCond.h b/llvm/tools/llvm-mc/AsmCond.h new file mode 100644 index 00000000000..17201b968fd --- /dev/null +++ b/llvm/tools/llvm-mc/AsmCond.h @@ -0,0 +1,38 @@ +//===- AsmCond.h - Assembly file conditional assembly ----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef ASMCOND_H +#define ASMCOND_H + +namespace llvm { + +/// AsmCond - Class to support conditional assembly +/// +/// The conditional assembly feature (.if, .else, .elseif and .endif) is +/// implemented with AsmCond that tells us what we are in the middle of +/// processing. Ignore can be either true or false. When true we are ignoring +/// the block of code in the middle of a conditional. + +class AsmCond { +public: + enum ConditionalAssemblyType { + NoCond, // no conditional is being processed + IfCond, // inside if conditional + ElseIfCond, // inside elseif conditional + ElseCond // inside else conditional + }; + + ConditionalAssemblyType TheCond; + bool CondMet; + bool Ignore; +}; + +} // end namespace llvm + +#endif |