summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-02-02 02:16:23 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-02-02 02:16:23 +0000
commit832254e1c2387c0cbeb0a820b8315fbe85cb003a (patch)
treed3d0c15237b69dfda4ea152775417f2cc67b369b /lib
parent9a2ef9509e76869c3d658fb3e321d9b9e9d479d9 (diff)
downloadllvm-832254e1c2387c0cbeb0a820b8315fbe85cb003a.tar.gz
llvm-832254e1c2387c0cbeb0a820b8315fbe85cb003a.tar.bz2
llvm-832254e1c2387c0cbeb0a820b8315fbe85cb003a.tar.xz
Changes to support making the shift instructions be true BinaryOperators.
This feature is needed in order to support shifts of more than 255 bits on large integer types. This changes the syntax for llvm assembly to make shl, ashr and lshr instructions look like a binary operator: shl i32 %X, 1 instead of shl i32 %X, i8 1 Additionally, this should help a few passes perform additional optimizations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33776 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Analysis/ConstantFolding.cpp4
-rw-r--r--lib/Analysis/IPA/Andersens.cpp3
-rw-r--r--lib/Analysis/ScalarEvolution.cpp2
-rw-r--r--lib/AsmParser/Lexer.cpp.cvs2160
-rw-r--r--lib/AsmParser/Lexer.l12
-rw-r--r--lib/AsmParser/Lexer.l.cvs12
-rw-r--r--lib/AsmParser/llvmAsmParser.cpp.cvs7055
-rw-r--r--lib/AsmParser/llvmAsmParser.h.cvs439
-rw-r--r--lib/AsmParser/llvmAsmParser.y31
-rw-r--r--lib/AsmParser/llvmAsmParser.y.cvs31
-rw-r--r--lib/Bytecode/Reader/Reader.cpp7
-rw-r--r--lib/CodeGen/IntrinsicLowering.cpp64
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp5
-rw-r--r--lib/ExecutionEngine/Interpreter/Execution.cpp6
-rw-r--r--lib/ExecutionEngine/Interpreter/Interpreter.h7
-rw-r--r--lib/Makefile2
-rw-r--r--lib/Target/CBackend/CBackend.cpp17
-rw-r--r--lib/Transforms/ExprTypeConvert.cpp10
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp4
-rw-r--r--lib/Transforms/Scalar/InstructionCombining.cpp295
-rw-r--r--lib/Transforms/Scalar/LICM.cpp2
-rw-r--r--lib/Transforms/Scalar/SCCP.cpp1
-rw-r--r--lib/Transforms/Scalar/ScalarReplAggregates.cpp12
-rw-r--r--lib/VMCore/AsmWriter.cpp3
-rw-r--r--lib/VMCore/Constants.cpp37
-rw-r--r--lib/VMCore/Instructions.cpp9
-rw-r--r--lib/VMCore/Verifier.cpp29
27 files changed, 5544 insertions, 4715 deletions
diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp
index 1bf6b50333..25a64ab9a6 100644
--- a/lib/Analysis/ConstantFolding.cpp
+++ b/lib/Analysis/ConstantFolding.cpp
@@ -216,10 +216,6 @@ Constant *llvm::ConstantFoldInstOperands(const Instruction* I,
case Instruction::FCmp:
return ConstantExpr::getCompare(cast<CmpInst>(I)->getPredicate(), Ops[0],
Ops[1]);
- case Instruction::Shl:
- case Instruction::LShr:
- case Instruction::AShr:
- return ConstantExpr::get(Opc, Ops[0], Ops[1]);
case Instruction::Trunc:
case Instruction::ZExt:
case Instruction::SExt:
diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp
index b6855f6503..aa2188bc95 100644
--- a/lib/Analysis/IPA/Andersens.cpp
+++ b/lib/Analysis/IPA/Andersens.cpp
@@ -776,9 +776,6 @@ void Andersens::visitInstruction(Instruction &I) {
case Instruction::Unwind:
case Instruction::Unreachable:
case Instruction::Free:
- case Instruction::Shl:
- case Instruction::LShr:
- case Instruction::AShr:
case Instruction::ICmp:
case Instruction::FCmp:
return;
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp
index 75dabf7cad..a81f24f117 100644
--- a/lib/Analysis/ScalarEvolution.cpp
+++ b/lib/Analysis/ScalarEvolution.cpp
@@ -1736,7 +1736,7 @@ ComputeLoadConstantCompareIterationCount(LoadInst *LI, Constant *RHS,
/// CanConstantFold - Return true if we can constant fold an instruction of the
/// specified type, assuming that all operands were constants.
static bool CanConstantFold(const Instruction *I) {
- if (isa<BinaryOperator>(I) || isa<ShiftInst>(I) || isa<CmpInst>(I) ||
+ if (isa<BinaryOperator>(I) || isa<CmpInst>(I) ||
isa<SelectInst>(I) || isa<CastInst>(I) || isa<GetElementPtrInst>(I))
return true;
diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs
index 991f4690dd..f2e3e13a92 100644
--- a/lib/AsmParser/Lexer.cpp.cvs
+++ b/lib/AsmParser/Lexer.cpp.cvs
@@ -1,94 +1,51 @@
-#line 2 "Lexer.cpp"
-
-#line 4 "Lexer.cpp"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
+#define yy_create_buffer llvmAsm_create_buffer
+#define yy_delete_buffer llvmAsm_delete_buffer
+#define yy_scan_buffer llvmAsm_scan_buffer
+#define yy_scan_string llvmAsm_scan_string
+#define yy_scan_bytes llvmAsm_scan_bytes
+#define yy_flex_debug llvmAsm_flex_debug
+#define yy_init_buffer llvmAsm_init_buffer
+#define yy_flush_buffer llvmAsm_flush_buffer
+#define yy_load_buffer_state llvmAsm_load_buffer_state
+#define yy_switch_to_buffer llvmAsm_switch_to_buffer
+#define yyin llvmAsmin
+#define yyleng llvmAsmleng
+#define yylex llvmAsmlex
+#define yyout llvmAsmout
+#define yyrestart llvmAsmrestart
+#define yytext llvmAsmtext
+#define yylineno llvmAsmlineno
+
+#line 20 "Lexer.cpp"
+/* A lexical scanner generated by flex*/
+
+/* Scanner skeleton version:
+ * $Header$
+ */
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 33
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
+#include <unistd.h>
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
#endif
-#endif /* ! FLEXINT_H */
#ifdef __cplusplus
+#include <stdlib.h>
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST
@@ -96,17 +53,34 @@ typedef unsigned int flex_uint32_t;
#if __STDC__
+#define YY_USE_PROTOS
#define YY_USE_CONST
#endif /* __STDC__ */
#endif /* ! __cplusplus */
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
/* Returned upon end-of-file. */
#define YY_NULL 0
@@ -121,88 +95,80 @@ typedef unsigned int flex_uint32_t;
* but we do it the disgusting crufty way forced on us by the ()-less
* definition of BEGIN.
*/
-#define BEGIN (yy_start) = 1 + 2 *
+#define BEGIN yy_start = 1 + 2 *
/* Translate the current start state into a value that can be later handed
* to BEGIN to return to the state. The YYSTATE alias is for lex
* compatibility.
*/
-#define YY_START (((yy_start) - 1) / 2)
+#define YY_START ((yy_start - 1) / 2)
#define YYSTATE YY_START
/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE llvmAsmrestart(llvmAsmin )
+#define YY_NEW_FILE yyrestart( yyin )
#define YY_END_OF_BUFFER_CHAR 0
/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE (16384*64)
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int llvmAsmleng;
-extern FILE *llvmAsmin, *llvmAsmout;
+extern int yyleng;
+extern FILE *yyin, *yyout;
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
- /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
- * access to the local variable yy_act. Since yyless() is a macro, it would break
- * existing scanners that call yyless() from OUTSIDE llvmAsmlex.
- * One obvious solution it to make yy_act a global. I tried that, and saw
- * a 5% performance hit in a non-llvmAsmlineno scanner, because yy_act is
- * normally declared as a register variable-- so it is not worth it.
- */
- #define YY_LESS_LINENO(n) \
- do { \
- int yyl;\
- for ( yyl = n; yyl < llvmAsmleng; ++yyl )\
- if ( llvmAsmtext[yyl] == '\n' )\
- --llvmAsmlineno;\
- }while(0)
-
-/* Return all but the first "n" matched characters back to the input stream. */
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator). This
+ * avoids problems with code like:
+ *
+ * if ( condition_holds )
+ * yyless( 5 );
+ * else
+ * do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
#define yyless(n) \
do \
{ \
- /* Undo effects of setting up llvmAsmtext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- *yy_cp = (yy_hold_char); \
+ /* Undo effects of setting up yytext. */ \
+ *yy_cp = yy_hold_char; \
YY_RESTORE_YY_MORE_OFFSET \
- (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */ \
+ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \
while ( 0 )
-#define unput(c) yyunput( c, (yytext_ptr) )
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* Some routines like yy_flex_realloc() are emitted as static but are
+ not called by all lexers. This generates warnings in some compilers,
+ notably GCC. Arrange to suppress these. */
+#ifdef __GNUC__
+#define YY_MAY_BE_UNUSED __attribute__((unused))
+#else
+#define YY_MAY_BE_UNUSED
+#endif
/* The following is because we cannot portably get our hands on size_t
* (without autoconf's help, which isn't available because we want
* flex-generated scanners to compile on their own).
*/
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
typedef unsigned int yy_size_t;
-#endif
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
+
struct yy_buffer_state
{
FILE *yy_input_file;
@@ -239,16 +205,12 @@ struct yy_buffer_state
*/
int yy_at_bol;
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
/* Whether to try to fill the input buffer when we reach the
* end of it.
*/
int yy_fill_buffer;
int yy_buffer_status;
-
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
/* When an EOF's been seen but there's still some text to process
@@ -258,201 +220,197 @@ struct yy_buffer_state
* possible backing-up.
*
* When we actually see the EOF, we change the status to "new"
- * (via llvmAsmrestart()), so that the user can continue scanning by
- * just pointing llvmAsmin at a new input file.
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
-
};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE yy_current_buffer = 0;
/* We provide macros for accessing buffer states in case in the
* future we want to put the buffer states in a more general
* "scanner state".
- *
- * Returns the top of the stack, or NULL.
*/
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
- ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
- : NULL)
+#define YY_CURRENT_BUFFER yy_current_buffer
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-/* yy_hold_char holds the character lost when llvmAsmtext is formed. */
+/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
+
static int yy_n_chars; /* number of characters read into yy_ch_buf */
-int llvmAsmleng;
+
+
+int yyleng;
/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0; /* whether we need to initialize */
+static int yy_init = 1; /* whether we need to initialize */
static int yy_start = 0; /* start state number */
-/* Flag which is used to allow llvmAsmwrap()'s to do buffer switches
- * instead of setting up a fresh llvmAsmin. A bit of a hack ...
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin. A bit of a hack ...
*/
static int yy_did_buffer_switch_on_eof;
-void llvmAsmrestart (FILE *input_file );
-void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer );
-YY_BUFFER_STATE llvmAsm_create_buffer (FILE *file,int size );
-void llvmAsm_delete_buffer (YY_BUFFER_STATE b );
-void llvmAsm_flush_buffer (YY_BUFFER_STATE b );
-void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer );
-void llvmAsmpop_buffer_state (void );
+void yyrestart YY_PROTO(( FILE *input_file ));
-static void llvmAsmensure_buffer_stack (void );
-static void llvmAsm_load_buffer_state (void );
-static void llvmAsm_init_buffer (YY_BUFFER_STATE b,FILE *file );
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-#define YY_FLUSH_BUFFER llvmAsm_flush_buffer(YY_CURRENT_BUFFER )
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-YY_BUFFER_STATE llvmAsm_scan_buffer (char *base,yy_size_t size );
-YY_BUFFER_STATE llvmAsm_scan_string (yyconst char *yy_str );
-YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char *bytes,int len );
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
+static void yy_flex_free YY_PROTO(( void * ));
-void *llvmAsmalloc (yy_size_t );
-void *llvmAsmrealloc (void *,yy_size_t );
-void llvmAsmfree (void * );
-
-#define yy_new_buffer llvmAsm_create_buffer
+#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
- if ( ! YY_CURRENT_BUFFER ){ \
- llvmAsmensure_buffer_stack (); \
- YY_CURRENT_BUFFER_LVALUE = \
- llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ if ( ! yy_current_buffer ) \
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ yy_current_buffer->yy_is_interactive = is_interactive; \
}
#define yy_set_bol(at_bol) \
{ \
- if ( ! YY_CURRENT_BUFFER ){\
- llvmAsmensure_buffer_stack (); \
- YY_CURRENT_BUFFER_LVALUE = \
- llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ if ( ! yy_current_buffer ) \
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ yy_current_buffer->yy_at_bol = at_bol; \
}
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-/* Begin user sect3 */
-#define llvmAsmwrap(n) 1
-#define YY_SKIP_YYWRAP
+#define YY_USES_REJECT
+#define yywrap() 1
+#define YY_SKIP_YYWRAP
typedef unsigned char YY_CHAR;
-
-FILE *llvmAsmin = (FILE *) 0, *llvmAsmout = (FILE *) 0;
-
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
+extern int yylineno;
+int yylineno = 1;
+extern char *yytext;
+#define yytext_ptr yytext
-extern int llvmAsmlineno;
-
-int llvmAsmlineno = 1;
-
-extern char *llvmAsmtext;
-#define yytext_ptr llvmAsmtext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[] );
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
/* Done after the current pattern has been matched and before the
- * corresponding action - sets up llvmAsmtext.
+ * corresponding action - sets up yytext.
*/
#define YY_DO_BEFORE_ACTION \
- (yytext_ptr) = yy_bp; \
- llvmAsmleng = (size_t) (yy_cp - yy_bp); \
- (yy_hold_char) = *yy_cp; \
+ yytext_ptr = yy_bp; \
+ yyleng = (int) (yy_cp - yy_bp); \
+ yy_hold_char = *yy_cp; \
*yy_cp = '\0'; \
- (yy_c_buf_p) = yy_cp;
+ yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 134
#define YY_END_OF_BUFFER 135
-/* This struct is not used in this scanner,
- but its presence is necessary. */
-struct yy_trans_info
- {
- flex_int32_t yy_verify;
- flex_int32_t yy_nxt;
- };
-static yyconst flex_int16_t yy_accept[539] =
+static yyconst short int yy_acclist[215] =
+ { 0,
+ 135, 133, 134, 132, 133, 134, 132, 134, 133, 134,
+ 133, 134, 133, 134, 133, 134, 133, 134, 133, 134,
+ 125, 133, 134, 125, 133, 134, 1, 133, 134, 133,
+ 134, 133, 134, 133, 134, 133, 134, 133, 134, 133,
+ 134, 133, 134, 133, 134, 133, 134, 133, 134, 133,
+ 134, 133, 134, 133, 134, 133, 134, 133, 134, 133,
+ 134, 133, 134, 133, 134, 133, 134, 133, 134, 133,
+ 134, 133, 134, 133, 134, 123, 121, 119, 128, 126,
+ 130, 125, 1, 120, 129, 105, 36, 68, 50, 69,
+ 64, 24, 123, 119, 130, 21, 130, 131, 124, 120,
+
+ 51, 63, 34, 37, 3, 53, 78, 83, 81, 82,
+ 80, 79, 84, 88, 104, 73, 71, 60, 72, 70,
+ 52, 86, 77, 75, 76, 74, 87, 85, 65, 122,
+ 130, 130, 62, 89, 67, 56, 112, 59, 66, 113,
+ 61, 23, 127, 55, 92, 58, 43, 25, 4, 48,
+ 54, 57, 44, 12, 91, 130, 31, 2, 5, 45,
+ 94, 42, 47, 114, 90, 22, 111, 39, 7, 46,
+ 38, 98, 97, 8, 16, 107, 110, 33, 49, 102,
+ 96, 106, 26, 27, 95, 108, 103, 101, 6, 28,
+ 93, 32, 9, 18, 10, 99, 11, 100, 30, 13,
+
+ 15, 14, 29, 35, 17, 109, 115, 117, 118, 40,
+ 116, 19, 41, 20
+ } ;
+
+static yyconst short int yy_accept[540] =
{ 0,
- 0, 0, 135, 133, 132, 132, 133, 133, 133, 133,
- 133, 133, 125, 125, 1, 133, 133, 133, 133, 133,
- 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
- 133, 133, 133, 133, 133, 133, 133, 133, 0, 123,
- 0, 121, 119, 128, 0, 126, 0, 130, 125, 0,
- 1, 0, 120, 129, 0, 0, 0, 0, 0, 0,
- 0, 105, 0, 36, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 48, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 64, 0, 0, 0, 0, 0, 0, 59,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 24, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 123, 119, 130, 21, 130, 0, 131, 0, 124,
- 120, 49, 0, 0, 58, 0, 0, 34, 0, 0,
- 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 0, 73, 78, 76,
- 77, 75, 74, 0, 79, 83, 0, 104, 0, 0,
-
- 0, 0, 0, 68, 66, 100, 0, 0, 0, 67,
- 65, 0, 0, 50, 0, 0, 0, 0, 0, 0,
- 0, 81, 72, 70, 0, 71, 69, 0, 82, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
- 0, 122, 130, 0, 0, 0, 130, 0, 0, 0,
- 102, 0, 0, 84, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 62, 54, 0,
- 0, 0, 0, 112, 57, 0, 0, 0, 61, 0,
- 0, 0, 0, 0, 0, 0, 0, 113, 101, 0,
- 0, 23, 0, 0, 127, 53, 0, 0, 87, 0,
-
- 0, 0, 56, 89, 0, 0, 25, 0, 0, 4,
- 0, 46, 52, 0, 0, 0, 0, 55, 0, 42,
- 0, 12, 0, 0, 86, 130, 31, 0, 0, 2,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 5, 0, 43, 91, 0, 0, 0, 0,
- 0, 0, 0, 88, 0, 0, 0, 0, 45, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 114,
- 0, 0, 0, 85, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 111, 0, 0, 39, 0, 0, 0,
- 7, 0, 0, 0, 44, 0, 0, 38, 95, 94,
-
- 0, 0, 8, 16, 0, 0, 0, 0, 107, 0,
- 110, 33, 47, 0, 0, 99, 0, 0, 93, 106,
- 26, 27, 92, 0, 108, 103, 0, 0, 0, 0,
- 0, 98, 0, 0, 6, 28, 0, 0, 0, 0,
- 0, 90, 0, 0, 0, 0, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
- 0, 0, 0, 18, 0, 0, 0, 0, 10, 96,
- 11, 97, 0, 0, 0, 30, 0, 0, 0, 13,
- 0, 15, 14, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
-
- 0, 35, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 109, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 115, 0, 117, 118, 0,
- 40, 0, 116, 19, 41, 0, 20, 0
+ 1, 1, 1, 2, 4, 7, 9, 11, 13, 15,
+ 17, 19, 21, 24, 27, 30, 32, 34, 36, 38,
+ 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
+ 60, 62, 64, 66, 68, 70, 72, 74, 76, 76,
+ 77, 77, 78, 79, 80, 80, 81, 81, 82, 83,
+ 83, 84, 84, 85, 86, 86, 86, 86, 86, 86,
+ 86, 86, 87, 87, 88, 88, 88, 88, 88, 88,
+ 88, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 90, 91, 91, 91, 91, 91, 91, 91,
+
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 94, 95, 96, 97, 98, 98, 99, 99,
+ 100, 101, 102, 102, 102, 103, 103, 103, 104, 104,
+ 104, 104, 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 106, 106, 106, 107, 107, 108, 109,
+ 110, 111, 112, 113, 113, 114, 115, 115, 116, 116,
+
+ 116, 116, 116, 116, 117, 118, 119, 119, 119, 119,
+ 120, 121, 121, 121, 122, 122, 122, 122, 122, 122,
+ 122, 122, 123, 124, 125, 125, 126, 127, 127, 128,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 130,
+ 130, 130, 131, 132, 132, 132, 132, 133, 133, 133,
+ 133, 134, 134, 134, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 136, 137,
+ 137, 137, 137, 137, 138, 139, 139, 139, 139, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 141, 142,
+ 142, 142, 143, 143, 143, 144, 145, 145, 145, 146,
+
+ 146, 146, 146, 147, 148, 148, 148, 149, 149, 149,
+ 150, 150, 151, 152, 152, 152, 152, 152, 153, 153,
+ 154, 154, 155, 155, 155, 156, 157, 158, 158, 158,
+ 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+ 159, 159, 159, 160, 160, 161, 162, 162, 162, 162,
+ 162, 162, 162, 162, 163, 163, 163, 163, 163, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+ 165, 165, 165, 165, 166, 166, 167, 167, 167, 167,
+ 167, 167, 167, 167, 168, 168, 168, 169, 169, 169,
+ 169, 170, 170, 170, 170, 171, 171, 171, 172, 173,
+
+ 174, 174, 174, 175, 176, 176, 176, 176, 176, 177,
+ 177, 178, 179, 180, 180, 180, 181, 181, 181, 182,
+ 183, 184, 185, 186, 186, 187, 188, 188, 188, 188,
+ 188, 188, 189, 189, 189, 190, 191, 191, 191, 191,
+ 191, 191, 192, 192, 192, 192, 192, 192, 192, 192,
+ 193, 193, 193, 193, 193, 193, 193, 193, 193, 194,
+ 194, 194, 194, 194, 195, 195, 195, 195, 195, 196,
+ 197, 198, 199, 199, 199, 199, 200, 200, 200, 200,
+ 201, 201, 202, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 204, 204, 204, 204, 204,
+
+ 204, 204, 205, 205, 205, 205, 205, 206, 206, 206,
+ 206, 206, 206, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 208, 208, 209, 210,
+ 210, 211, 211, 212, 213, 214, 214, 215, 215
} ;
-static yyconst flex_int32_t yy_ec[256] =
+static yyconst int yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
@@ -484,7 +442,7 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst flex_int32_t yy_meta[45] =
+static yyconst int yy_meta[45] =
{ 0,
1, 1, 2, 3, 4, 1, 1, 4, 4, 4,
4, 4, 4, 5, 1, 1, 4, 4, 4, 4,
@@ -493,7 +451,7 @@ static yyconst flex_int32_t yy_meta[45] =
4, 4, 4, 4
} ;
-static yyconst flex_int16_t yy_base[547] =
+static yyconst short int yy_base[547] =
{ 0,
0, 0, 1173, 1174, 1174, 1174, 1168, 1157, 35, 39,
43, 49, 55, 61, 0, 72, 64, 67, 66, 86,
@@ -557,7 +515,7 @@ static yyconst flex_int16_t yy_base[547] =
254, 1054, 1057, 220, 1061, 167
} ;
-static yyconst flex_int16_t yy_def[547] =
+static yyconst short int yy_def[547] =
{ 0,
538, 1, 538, 538, 538, 538, 539, 540, 541, 538,
540, 540, 540, 540, 542, 543, 540, 540, 540, 540,
@@ -621,7 +579,7 @@ static yyconst flex_int16_t yy_def[547] =
538, 538, 538, 538, 538, 538
} ;
-static yyconst flex_int16_t yy_nxt[1219] =
+static yyconst short int yy_nxt[1219] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 14, 14, 4, 15, 16, 8, 8, 8, 17,
@@ -759,7 +717,7 @@ static yyconst flex_int16_t yy_nxt[1219] =
538, 538, 538, 538, 538, 538, 538, 538
} ;
-static yyconst flex_int16_t yy_chk[1219] =
+static yyconst short int yy_chk[1219] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -897,32 +855,22 @@ static yyconst flex_int16_t yy_chk[1219] =
538, 538, 538, 538, 538, 538, 538, 538
} ;
-/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[135] =
- { 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, };
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int llvmAsm_flex_debug;
-int llvmAsm_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
+static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
+static char *yy_full_match;
+static int yy_lp;
+#define REJECT \
+{ \
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
+yy_cp = yy_full_match; /* restore poss. backed-over text */ \
+++yy_lp; \
+goto find_rule; \
+}
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-char *llvmAsmtext;
-#line 1 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+char *yytext;
+#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#define INITIAL 0
/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
//
// The LLVM Compiler Infrastructure
@@ -935,7 +883,8 @@ char *llvmAsmtext;
// This file implements the flex scanner for LLVM assembly languages files.
//
//===----------------------------------------------------------------------===*/
-#line 28 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#define YY_NEVER_INTERACTIVE 1
+#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
#include "ParserInternals.h"
#include "llvm/Module.h"
#include <list>
@@ -944,10 +893,10 @@ char *llvmAsmtext;
#include <cstdlib>
void set_scan_file(FILE * F){
- llvmAsm_switch_to_buffer(llvmAsm_create_buffer(F,YY_BUF_SIZE ) );
+ yy_switch_to_buffer(yy_create_buffer( F, YY_BUF_SIZE ) );
}
void set_scan_string (const char * str) {
- llvmAsm_scan_string (str);
+ yy_scan_string (str);
}
// Construct a token value for a non-obsolete token
@@ -1068,23 +1017,7 @@ using namespace llvm;
/* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
* it to deal with 64 bit numbers.
*/
-#line 1072 "Lexer.cpp"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
+#line 1021 "Lexer.cpp"
/* Macros after this point can all be overridden by user definitions in
* section 1.
@@ -1092,30 +1025,65 @@ static int yy_init_globals (void );
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int llvmAsmwrap (void );
+extern "C" int yywrap YY_PROTO(( void ));
#else
-extern int llvmAsmwrap (void );
+extern int yywrap YY_PROTO(( void ));
#endif
#endif
- static inline void yyunput (int c,char *buf_ptr );
-
+#ifndef YY_NO_UNPUT
+static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
#endif
#ifndef YY_NO_INPUT
-
#ifdef __cplusplus
-static int yyinput (void );
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
#else
-static int input (void );
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
#endif
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines. This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
#endif
/* Amount of stuff to slurp up with each read. */
@@ -1124,11 +1092,12 @@ static int input (void );
#endif
/* Copy whatever the last rule matched to the standard output. */
+
#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite().
*/
-#define ECHO (void) fwrite( llvmAsmtext, llvmAsmleng, 1, llvmAsmout )
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
#endif
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -1136,35 +1105,21 @@ static int input (void );
*/
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ if ( yy_current_buffer->yy_is_interactive ) \
{ \
- int c = '*'; \
- size_t n; \
+ int c = '*', n; \
for ( n = 0; n < max_size && \
- (c = getc( llvmAsmin )) != EOF && c != '\n'; ++n ) \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
if ( c == '\n' ) \
buf[n++] = (char) c; \
- if ( c == EOF && ferror( llvmAsmin ) ) \
+ if ( c == EOF && ferror( yyin ) ) \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
result = n; \
} \
- else \
- { \
- errno=0; \
- while ( (result = fread(buf, 1, max_size, llvmAsmin))==0 && ferror(llvmAsmin)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(llvmAsmin); \
- } \
- }\
-\
-
+ else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
+ && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" );
#endif
/* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -1185,20 +1140,14 @@ static int input (void );
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif
-/* end tables serialization structures and prototypes */
-
/* Default declaration of generated scanner - a define so the user can
* easily add parameters.
*/
#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int llvmAsmlex (void);
-
-#define YY_DECL int llvmAsmlex (void)
-#endif /* !YY_DECL */
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
-/* Code executed at the beginning of each rule, after llvmAsmtext and llvmAsmleng
+/* Code executed at the beginning of each rule, after yytext and yyleng
* have been set up.
*/
#ifndef YY_USER_ACTION
@@ -1213,67 +1162,60 @@ extern int llvmAsmlex (void);
#define YY_RULE_SETUP \
YY_USER_ACTION
-/** The main scanner function which does all the work.
- */
YY_DECL
-{
+ {
register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
+ register char *yy_cp = NULL, *yy_bp = NULL;
register int yy_act;
-
-#line 189 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+
+#line 189 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-#line 1228 "Lexer.cpp"
+#line 1175 "Lexer.cpp"
- if ( !(yy_init) )
+ if ( yy_init )
{
- (yy_init) = 1;
+ yy_init = 0;
#ifdef YY_USER_INIT
YY_USER_INIT;
#endif
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
+ if ( ! yy_start )
+ yy_start = 1; /* first start state */
- if ( ! llvmAsmin )
- llvmAsmin = stdin;
+ if ( ! yyin )
+ yyin = stdin;
- if ( ! llvmAsmout )
- llvmAsmout = stdout;
+ if ( ! yyout )
+ yyout = stdout;
- if ( ! YY_CURRENT_BUFFER ) {
- llvmAsmensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE );
- }
+ if ( ! yy_current_buffer )
+ yy_current_buffer =
+ yy_create_buffer( yyin, YY_BUF_SIZE );
- llvmAsm_load_buffer_state( );
+ yy_load_buffer_state();
}
while ( 1 ) /* loops until end-of-file is reached */
{
- yy_cp = (yy_c_buf_p);
+ yy_cp = yy_c_buf_p;
- /* Support of llvmAsmtext. */
- *yy_cp = (yy_hold_char);
+ /* Support of yytext. */
+ *yy_cp = yy_hold_char;
/* yy_bp points to the position in yy_ch_buf of the start of
* the current run.
*/
yy_bp = yy_cp;
- yy_current_state = (yy_start);
+ yy_current_state = yy_start;
+ yy_state_ptr = yy_state_buf;
+ *yy_state_ptr++ = yy_current_state;
yy_match:
do
{
register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- if ( yy_accept[yy_current_state] )
- {
- (yy_last_accepting_state) = yy_current_state;
- (yy_last_accepting_cpos) = yy_cp;
- }
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
@@ -1281,707 +1223,711 @@ yy_match:
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ *yy_state_ptr++ = yy_current_state;
++yy_cp;
}
while ( yy_current_state != 538 );
- yy_cp = (yy_last_accepting_cpos);
- yy_current_state = (yy_last_accepting_state);
yy_find_action:
- yy_act = yy_accept[yy_current_state];
+ yy_current_state = *--yy_state_ptr;
+ yy_lp = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+ for ( ; ; ) /* until we find what rule we matched */
+ {
+ if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
+ {
+ yy_act = yy_acclist[yy_lp];
+ {
+ yy_full_match = yy_cp;
+ break;
+ }
+ }
+ --yy_cp;
+ yy_current_state = *--yy_state_ptr;
+ yy_lp = yy_accept[yy_current_state];
+ }
YY_DO_BEFORE_ACTION;
- if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
+ if ( yy_act != YY_END_OF_BUFFER )
{
int yyl;
- for ( yyl = 0; yyl < llvmAsmleng; ++yyl )
- if ( llvmAsmtext[yyl] == '\n' )
-
- llvmAsmlineno++;
-;
+ for ( yyl = 0; yyl < yyleng; ++yyl )
+ if ( yytext[yyl] == '\n' )
+ ++yylineno;
}
do_action: /* This label is used only to access EOF actions. */
+
switch ( yy_act )
{ /* beginning of action switch */
- case 0: /* must back up */
- /* undo the effects of YY_DO_BEFORE_ACTION */
- *yy_cp = (yy_hold_char);
- yy_cp = (yy_last_accepting_cpos);
- yy_current_state = (yy_last_accepting_state);
- goto yy_find_action;
-
case 1:
YY_RULE_SETUP
-#line 191 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 191 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ /* Ignore comments for now */ }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 193 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 193 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return BEGINTOK; }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 194 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return ENDTOK; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 195 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return TRUETOK; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 196 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return FALSETOK; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 197 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DECLARE; }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 198 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DEFINE; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 199 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return GLOBAL; }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 200 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return CONSTANT; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 201 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return INTERNAL; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 202 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return LINKONCE; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 203 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return WEAK; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 204 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return APPENDING; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 205 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DLLIMPORT; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 206 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DLLEXPORT; }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 207 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return HIDDEN; }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 208 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return EXTERN_WEAK; }
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 209 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return EXTERNAL; }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 210 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return IMPLEMENTATION; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 211 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return ZEROINITIALIZER; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 212 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DOTDOTDOT; }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 213 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 213 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return UNDEF; }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 214 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return NULL_TOK; }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 215 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return TO; }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 216 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return TAIL; }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 217 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return TARGET; }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 218 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return TRIPLE; }
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 219 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DEPLIBS; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 220 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 220 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return DATALAYOUT; }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 221 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return VOLATILE; }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 222 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return ALIGN; }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 223 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return SECTION; }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 224 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return MODULE; }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 225 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 225 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return ASM_TOK; }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 226 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return SIDEEFFECT; }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 228 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return CC_TOK; }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 229 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return CCC_TOK; }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 230 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 230 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return FASTCC_TOK; }
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 231 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return COLDCC_TOK; }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 232 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return X86_STDCALLCC_TOK; }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 233 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 233 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ return X86_FASTCALLCC_TOK; }
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 235 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::VoidTy, VOID); }
+#line 235 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return INREG; }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 236 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::FloatTy, FLOAT); }
+#line 236 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SRET; }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 237 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::DoubleTy,DOUBLE);}
+#line 238 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::VoidTy, VOID); }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 238 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::LabelTy, LABEL); }
+#line 239 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::FloatTy, FLOAT); }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 239 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return TYPE; }
+#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::DoubleTy,DOUBLE);}
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 240 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OPAQUE; }
+#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::LabelTy, LABEL); }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 241 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ uint64_t NumBits = atoull(llvmAsmtext+1);
- if (NumBits < IntegerType::MIN_INT_BITS ||
- NumBits > IntegerType::MAX_INT_BITS)
- GenerateError("Bitwidth for integer type out of range!");
- const Type* Ty = IntegerType::get(NumBits);
- RET_TY(Ty, INTTYPE);
- }
+#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return TYPE; }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 249 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Add, ADD); }
+#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OPAQUE; }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 250 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Sub, SUB); }
+#line 244 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ uint64_t NumBits = atoull(yytext+1);
+ if (NumBits < IntegerType::MIN_INT_BITS ||
+ NumBits > IntegerType::MAX_INT_BITS)
+ GenerateError("Bitwidth for integer type out of range!");
+ const Type* Ty = IntegerType::get(NumBits);
+ RET_TY(Ty, INTTYPE);
+ }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 251 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Mul, MUL); }
+#line 252 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Add, ADD); }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 252 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
+#line 253 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Sub, SUB); }
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 253 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
+#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Mul, MUL); }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 254 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
+#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 255 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, URem, UREM); }
+#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 256 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SRem, SREM); }
+#line 257 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 257 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FRem, FREM); }
+#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, URem, UREM); }
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 258 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, And, AND); }
+#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SRem, SREM); }
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 259 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Or , OR ); }
+#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FRem, FREM); }
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 260 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Xor, XOR); }
+#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Shl, SHL); }
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 261 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ICmp, ICMP); }
+#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, LShr, LSHR); }
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 262 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, FCmp, FCMP); }
+#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, AShr, ASHR); }
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 263 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return EQ; }
+#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, And, AND); }
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 264 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return NE; }
+#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Or , OR ); }
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 265 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SLT; }
+#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Xor, XOR); }
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 266 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SGT; }
+#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ICmp, ICMP); }
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 267 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SLE; }
+#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, FCmp, FCMP); }
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 268 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SGE; }
+#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return EQ; }
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 269 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ULT; }
+#line 271 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return NE; }
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 270 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UGT; }
+#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SLT; }
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 271 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ULE; }
+#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SGT; }
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 272 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UGE; }
+#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SLE; }
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 273 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OEQ; }
+#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SGE; }
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 274 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ONE; }
+#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ULT; }
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 275 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OLT; }
+#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UGT; }
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 276 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OGT; }
+#line 278 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ULE; }
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 277 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OLE; }
+#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UGE; }
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 278 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OGE; }
+#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OEQ; }
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 279 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ORD; }
+#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ONE; }
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 280 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UNO; }
+#line 282 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OLT; }
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 281 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UEQ; }
+#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OGT; }
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 282 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UNE; }
+#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OLE; }
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 284 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
+#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OGE; }
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 285 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Call, CALL); }
+#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ORD; }
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 286 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, Trunc, TRUNC); }
+#line 287 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UNO; }
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 287 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, ZExt, ZEXT); }
+#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UEQ; }
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 288 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SExt, SEXT); }
+#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UNE; }
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 289 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return INREG; }
+#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 290 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SRET; }
+#line 292 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Call, CALL); }
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 291 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
+#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, Trunc, TRUNC); }
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 292 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPExt, FPEXT); }
+#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, ZExt, ZEXT); }
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 293 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
+#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SExt, SEXT); }
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 294 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
+#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 295 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
+#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPExt, FPEXT); }
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 296 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
+#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 297 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
+#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 298 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
+#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 299 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, BitCast, BITCAST); }
+#line 301 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 300 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Select, SELECT); }
+#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 301 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Shl, SHL); }
+#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 302 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, LShr, LSHR); }
+#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, BitCast, BITCAST); }
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 303 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, AShr, ASHR); }
+#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Select, SELECT); }
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 304 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, VAArg , VAARG); }
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 305 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Ret, RET); }
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 306 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 308 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Br, BR); }
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 307 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Switch, SWITCH); }
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 308 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Invoke, INVOKE); }
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 309 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Unwind, UNWIND); }
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 310 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 312 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 312 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Malloc, MALLOC); }
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 313 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 315 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 314 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 316 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Free, FREE); }
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 315 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 317 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Load, LOAD); }
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 316 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Store, STORE); }
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 317 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 319 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 319 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 321 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 320 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 322 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 321 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 323 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 324 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 326 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- UnEscapeLexed(llvmAsmtext+1);
- llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Skip %
+ UnEscapeLexed(yytext+1);
+ llvmAsmlval.StrVal = strdup(yytext+1); // Skip %
return LOCALVAR;
}
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 329 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 331 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- UnEscapeLexed(llvmAsmtext+1);
- llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Skip @
+ UnEscapeLexed(yytext+1);
+ llvmAsmlval.StrVal = strdup(yytext+1); // Skip @
return GLOBALVAR;
}
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 334 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 336 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke colon
- UnEscapeLexed(llvmAsmtext);
- llvmAsmlval.StrVal = strdup(llvmAsmtext);
+ yytext[strlen(yytext)-1] = 0; // nuke colon
+ UnEscapeLexed(yytext);
+ llvmAsmlval.StrVal = strdup(yytext);
return LABELSTR;
}
YY_BREAK
case 122:
-/* rule 122 can match eol */
YY_RULE_SETUP
-#line 340 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 342 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- llvmAsmtext[strlen(llvmAsmtext)-2] = 0; // nuke colon, end quote
- UnEscapeLexed(llvmAsmtext+1);
- llvmAsmlval.StrVal = strdup(llvmAsmtext+1);
+ yytext[strlen(yytext)-2] = 0; // nuke colon, end quote
+ UnEscapeLexed(yytext+1);
+ llvmAsmlval.StrVal = strdup(yytext+1);
return LABELSTR;
}
YY_BREAK
case 123:
-/* rule 123 can match eol */
YY_RULE_SETUP
-#line 347 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 349 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ // Note that we cannot unescape a string constant here! The
// string constant might contain a \00 which would not be
// understood by the string stuff. It is valid to make a
// [sbyte] c"Hello World\00" constant, for example.
//
- llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke end quote
- llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Nuke start quote
+ yytext[strlen(yytext)-1] = 0; // nuke end quote
+ llvmAsmlval.StrVal = strdup(yytext+1); // Nuke start quote
return STRINGCONSTANT;
}
YY_BREAK
case 124:
-/* rule 124 can match eol */
YY_RULE_SETUP
-#line 356 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 358 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke end quote
- llvmAsmlval.StrVal = strdup(llvmAsmtext+2); // Nuke @, quote
+ yytext[strlen(yytext)-1] = 0; // nuke end quote
+ llvmAsmlval.StrVal = strdup(yytext+2); // Nuke @, quote
return ATSTRINGCONSTANT;
}
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 364 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.UInt64Val = atoull(llvmAsmtext); return EUINT64VAL; }
+#line 366 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 365 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 367 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- uint64_t Val = atoull(llvmAsmtext+1);
+ uint64_t Val = atoull(yytext+1);
// +1: we have bigger negative range
if (Val > (uint64_t)INT64_MAX+1)
GenerateError("Constant too large for signed 64 bits!");
@@ -1991,17 +1937,17 @@ YY_RULE_SETUP
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 373 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 375 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- llvmAsmlval.UInt64Val = HexIntToVal(llvmAsmtext+3);
- return llvmAsmtext[0] == 's' ? ESINT64VAL : EUINT64VAL;
+ llvmAsmlval.UInt64Val = HexIntToVal(yytext+3);
+ return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
}
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 378 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 380 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- uint64_t Val = atoull(llvmAsmtext+1);
+ uint64_t Val = atoull(yytext+1);
if ((unsigned)Val != Val)
GenerateError("Invalid value number (too large)!");
llvmAsmlval.UIntVal = unsigned(Val);
@@ -2010,9 +1956,9 @@ YY_RULE_SETUP
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 385 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 387 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
- uint64_t Val = atoull(llvmAsmtext+1);
+ uint64_t Val = atoull(yytext+1);
if ((unsigned)Val != Val)
GenerateError("Invalid value number (too large)!");
llvmAsmlval.UIntVal = unsigned(Val);
@@ -2021,65 +1967,64 @@ YY_RULE_SETUP
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 393 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = atof(llvmAsmtext); return FPVAL; }
+#line 395 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 394 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = HexToFP(llvmAsmtext); return FPVAL; }
+#line 396 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 396 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 398 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{
/* Make sure to free the internal buffers for flex when we are
* done reading our input!
*/
- llvmAsm_delete_buffer(YY_CURRENT_BUFFER);
+ yy_delete_buffer(YY_CURRENT_BUFFER);
return EOF;
}
YY_BREAK
case 132:
-/* rule 132 can match eol */
YY_RULE_SETUP
-#line 404 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 406 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
{ /* Ignore whitespace */ }
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 405 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return llvmAsmtext[0]; }
+#line 407 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return yytext[0]; }
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 407 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 409 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2059 "Lexer.cpp"
+#line 2004 "Lexer.cpp"
case YY_END_OF_BUFFER:
{
/* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+ int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
/* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = (yy_hold_char);
+ *yy_cp = yy_hold_char;
YY_RESTORE_YY_MORE_OFFSET
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
{
/* We're scanning a new file or input source. It's
* possible that this happened because the user
- * just pointed llvmAsmin at a new source and called
- * llvmAsmlex(). If so, then we have to assure
- * consistency between YY_CURRENT_BUFFER and our
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between yy_current_buffer and our
* globals. Here is the right place to do so, because
* this is the first action (other than possibly a
* back-up) that will match for the new input source.
*/
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = llvmAsmin;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ yy_n_chars = yy_current_buffer->yy_n_chars;
+ yy_current_buffer->yy_input_file = yyin;
+ yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
}
/* Note that here we test for yy_c_buf_p "<=" to the position
@@ -2089,13 +2034,13 @@ YY_FATAL_ERROR( "flex scanner jammed" );
* end-of-buffer state). Contrast this with the test
* in input().
*/
- if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
{ /* This was really a NUL. */
yy_state_type yy_next_state;
- (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+ yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
- yy_current_state = yy_get_previous_state( );
+ yy_current_state = yy_get_previous_state();
/* Okay, we're now positioned to make the NUL
* transition. We couldn't have
@@ -2108,42 +2053,41 @@ YY_FATAL_ERROR( "flex scanner jammed" );
yy_next_state = yy_try_NUL_trans( yy_current_state );
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
if ( yy_next_state )
{
/* Consume the NUL. */
- yy_cp = ++(yy_c_buf_p);
+ yy_cp = ++yy_c_buf_p;
yy_current_state = yy_next_state;
goto yy_match;
}
else
{
- yy_cp = (yy_last_accepting_cpos);
- yy_current_state = (yy_last_accepting_state);
+ yy_cp = yy_c_buf_p;
goto yy_find_action;
}
}
- else switch ( yy_get_next_buffer( ) )
+ else switch ( yy_get_next_buffer() )
{
case EOB_ACT_END_OF_FILE:
{
- (yy_did_buffer_switch_on_eof) = 0;
+ yy_did_buffer_switch_on_eof = 0;
- if ( llvmAsmwrap( ) )
+ if ( yywrap() )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
- * llvmAsmtext, we can now set up
+ * yytext, we can now set up
* yy_c_buf_p so that if some total
* hoser (like flex itself) wants to
* call the scanner after we return the
* YY_NULL, it'll still work - another
* YY_NULL will get returned.
*/
- (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+ yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
yy_act = YY_STATE_EOF(YY_START);
goto do_action;
@@ -2151,30 +2095,30 @@ YY_FATAL_ERROR( "flex scanner jammed" );
else
{
- if ( ! (yy_did_buffer_switch_on_eof) )
+ if ( ! yy_did_buffer_switch_on_eof )
YY_NEW_FILE;
}
break;
}
case EOB_ACT_CONTINUE_SCAN:
- (yy_c_buf_p) =
- (yytext_ptr) + yy_amount_of_matched_text;
+ yy_c_buf_p =
+ yytext_ptr + yy_amount_of_matched_text;
- yy_current_state = yy_get_previous_state( );
+ yy_current_state = yy_get_previous_state();
- yy_cp = (yy_c_buf_p);
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
goto yy_match;
case EOB_ACT_LAST_MATCH:
- (yy_c_buf_p) =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+ yy_c_buf_p =
+ &yy_current_buffer->yy_ch_buf[yy_n_chars];
- yy_current_state = yy_get_previous_state( );
+ yy_current_state = yy_get_previous_state();
- yy_cp = (yy_c_buf_p);
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
goto yy_find_action;
}
break;
@@ -2185,7 +2129,8 @@ YY_FATAL_ERROR( "flex scanner jammed" );
"fatal flex scanner internal error--no action found" );
} /* end of action switch */
} /* end of scanning one token */
-} /* end of llvmAsmlex */
+ } /* end of yylex */
+
/* yy_get_next_buffer - try to read in a new buffer
*
@@ -2194,20 +2139,21 @@ YY_FATAL_ERROR( "flex scanner jammed" );
* EOB_ACT_CONTINUE_SCAN - continue scanning from current position
* EOB_ACT_END_OF_FILE - end of file
*/
-static int yy_get_next_buffer (void)
-{
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = (yytext_ptr);
+
+static int yy_get_next_buffer()
+ {
+ register char *dest = yy_current_buffer->yy_ch_buf;
+ register char *source = yytext_ptr;
register int number_to_move, i;
int ret_val;
- if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
YY_FATAL_ERROR(
"fatal flex scanner internal error--end of buffer missed" );
- if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ if ( yy_current_buffer->yy_fill_buffer == 0 )
{ /* Don't try to fill the buffer, so this is an EOF. */
- if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
{
/* We matched a single character, the EOB, so
* treat this as a final EOF.
@@ -2227,30 +2173,34 @@ static int yy_get_next_buffer (void)
/* Try to read more data. */
/* First move last chars to start of buffer. */
- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+ number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
/* don't do the read, it's not guaranteed to return an EOF,
* just force an EOF
*/
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+ yy_current_buffer->yy_n_chars = yy_n_chars = 0;
else
{
- int num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+ int num_to_read =
+ yy_current_buffer->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+ YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
/* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+ YY_BUFFER_STATE b = yy_current_buffer;
int yy_c_buf_p_offset =
- (int) ((yy_c_buf_p) - b->yy_ch_buf);
+ (int) (yy_c_buf_p - b->yy_ch_buf);
if ( b->yy_is_our_buffer )
{
@@ -2263,7 +2213,8 @@ static int yy_get_next_buffer (void)
b->yy_ch_buf = (char *)
/* Include room in for 2 EOB chars. */
- llvmAsmrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ yy_flex_realloc( (void *) b->yy_ch_buf,
+ b->yy_buf_size + 2 );
}
else
/* Can't grow it, we don't own it. */
@@ -2273,35 +2224,35 @@ static int yy_get_next_buffer (void)
YY_FATAL_ERROR(
"fatal error - scanner input buffer overflow" );
- (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+ yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
- num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ num_to_read = yy_current_buffer->yy_buf_size -
number_to_move - 1;
-
+#endif
}
if ( num_to_read > YY_READ_BUF_SIZE )
num_to_read = YY_READ_BUF_SIZE;
/* Read in more data. */
- YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- (yy_n_chars), num_to_read );
+ YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+ yy_n_chars, num_to_read );
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ yy_current_buffer->yy_n_chars = yy_n_chars;
}
- if ( (yy_n_chars) == 0 )
+ if ( yy_n_chars == 0 )
{
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- llvmAsmrestart(llvmAsmin );
+ yyrestart( yyin );
}
else
{
ret_val = EOB_ACT_LAST_MATCH;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ yy_current_buffer->yy_buffer_status =
YY_BUFFER_EOF_PENDING;
}
}
@@ -2309,32 +2260,30 @@ static int yy_get_next_buffer (void)
else
ret_val = EOB_ACT_CONTINUE_SCAN;
- (yy_n_chars) += number_to_move;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+ yy_n_chars += number_to_move;
+ yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
- (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+ yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
return ret_val;
-}
+ }
+
/* yy_get_previous_state - get the state just before the EOB char was reached */
- static yy_state_type yy_get_previous_state (void)
-{
+static yy_state_type yy_get_previous_state()
+ {
register yy_state_type yy_current_state;
register char *yy_cp;
-
- yy_current_state = (yy_start);
- for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ yy_current_state = yy_start;
+ yy_state_ptr = yy_state_buf;
+ *yy_state_ptr++ = yy_current_state;
+
+ for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
{
register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- if ( yy_accept[yy_current_state] )
- {
- (yy_last_accepting_state) = yy_current_state;
- (yy_last_accepting_cpos) = yy_cp;
- }
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
@@ -2342,27 +2291,29 @@ static int yy_get_next_buffer (void)
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ *yy_state_ptr++ = yy_current_state;
}
return yy_current_state;
-}
+ }
+
/* yy_try_NUL_trans - try to make a transition on the NUL character
*
* synopsis
* next_state = yy_try_NUL_trans( current_state );
*/
- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
-{
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+ {
register int yy_is_jam;
- register char *yy_cp = (yy_c_buf_p);
register YY_CHAR yy_c = 1;
- if ( yy_accept[yy_current_state] )
- {
- (yy_last_accepting_state) = yy_current_state;
- (yy_last_accepting_cpos) = yy_cp;
- }
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
@@ -2371,79 +2322,87 @@ static int yy_get_next_buffer (void)
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 538);
+ if ( ! yy_is_jam )
+ *yy_state_ptr++ = yy_current_state;
return yy_is_jam ? 0 : yy_current_state;
-}
+ }
- static inline void yyunput (int c, register char * yy_bp )
-{
- register char *yy_cp;
-
- yy_cp = (yy_c_buf_p);
- /* undo effects of setting up llvmAsmtext */
- *yy_cp = (yy_hold_char);
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static inline void yyunput( int c, register char *yy_bp )
+#else
+static inline void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+ {
+ register char *yy_cp = yy_c_buf_p;
+
+ /* undo effects of setting up yytext */
+ *yy_cp = yy_hold_char;
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
- register int number_to_move = (yy_n_chars) + 2;
- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register int number_to_move = yy_n_chars + 2;
+ register char *dest = &yy_current_buffer->yy_ch_buf[
+ yy_current_buffer->yy_buf_size + 2];
register char *source =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+ &yy_current_buffer->yy_ch_buf[number_to_move];
- while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ while ( source > yy_current_buffer->yy_ch_buf )
*--dest = *--source;
yy_cp += (int) (dest - source);
yy_bp += (int) (dest - source);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+ yy_current_buffer->yy_n_chars =
+ yy_n_chars = yy_current_buffer->yy_buf_size;
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
YY_FATAL_ERROR( "flex scanner push-back overflow" );
}
*--yy_cp = (char) c;
- if ( c == '\n' ){
- --llvmAsmlineno;
- }
+ if ( c == '\n' )
+ --yylineno;
+
+ yytext_ptr = yy_bp;
+ yy_hold_char = *yy_cp;
+ yy_c_buf_p = yy_cp;
+ }
+#endif /* ifndef YY_NO_UNPUT */
- (yytext_ptr) = yy_bp;
- (yy_hold_char) = *yy_cp;
- (yy_c_buf_p) = yy_cp;
-}
#ifndef YY_NO_INPUT
#ifdef __cplusplus
- static int yyinput (void)
+static int yyinput()
#else
- static int input (void)
+static int input()
#endif
-
-{
+ {
int c;
-
- *(yy_c_buf_p) = (yy_hold_char);
- if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ *yy_c_buf_p = yy_hold_char;
+
+ if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
{
/* yy_c_buf_p now points to the character we want to return.
* If this occurs *before* the EOB characters, then it's a
* valid NUL; if not, then we've hit the end of the buffer.
*/
- if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
/* This was really a NUL. */
- *(yy_c_buf_p) = '\0';
+ *yy_c_buf_p = '\0';
else
{ /* need more input */
- int offset = (yy_c_buf_p) - (yytext_ptr);
- ++(yy_c_buf_p);
+ int offset = yy_c_buf_p - yytext_ptr;
+ ++yy_c_buf_p;
- switch ( yy_get_next_buffer( ) )
+ switch ( yy_get_next_buffer() )
{
case EOB_ACT_LAST_MATCH:
/* This happens because yy_g_n_b()
@@ -2457,16 +2416,16 @@ static int yy_get_next_buffer (void)
*/
/* Reset buffer status. */
- llvmAsmrestart(llvmAsmin );
+ yyrestart( yyin );
- /*FALLTHROUGH*/
+ /* fall through */
case EOB_ACT_END_OF_FILE:
{
- if ( llvmAsmwrap( ) )
+ if ( yywrap() )
return EOF;
- if ( ! (yy_did_buffer_switch_on_eof) )
+ if ( ! yy_did_buffer_switch_on_eof )
YY_NEW_FILE;
#ifdef __cplusplus
return yyinput();
@@ -2476,170 +2435,169 @@ static int yy_get_next_buffer (void)
}
case EOB_ACT_CONTINUE_SCAN:
- (yy_c_buf_p) = (yytext_ptr) + offset;
+ yy_c_buf_p = yytext_ptr + offset;
break;
}
}
}
- c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
- *(yy_c_buf_p) = '\0'; /* preserve llvmAsmtext */
- (yy_hold_char) = *++(yy_c_buf_p);
+ c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
+ *yy_c_buf_p = '\0'; /* preserve yytext */
+ yy_hold_char = *++yy_c_buf_p;
if ( c == '\n' )
-
- llvmAsmlineno++;
-;
+ ++yylineno;
return c;
-}
-#endif /* ifndef YY_NO_INPUT */
+ }
+#endif /* YY_NO_INPUT */
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- *
- * @note This function does not reset the start condition to @c INITIAL .
- */
- void llvmAsmrestart (FILE * input_file )
-{
-
- if ( ! YY_CURRENT_BUFFER ){
- llvmAsmensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE );
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+ {
+ if ( ! yy_current_buffer )
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+ yy_init_buffer( yy_current_buffer, input_file );
+ yy_load_buffer_state();
}
- llvmAsm_init_buffer(YY_CURRENT_BUFFER,input_file );
- llvmAsm_load_buffer_state( );
-}
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- *
- */
- void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer )
-{
-
- /* TODO. We should be able to replace this entire function body
- * with
- * llvmAsmpop_buffer_state();
- * llvmAsmpush_buffer_state(new_buffer);
- */
- llvmAsmensure_buffer_stack ();
- if ( YY_CURRENT_BUFFER == new_buffer )
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+ {
+ if ( yy_current_buffer == new_buffer )
return;
- if ( YY_CURRENT_BUFFER )
+ if ( yy_current_buffer )
{
/* Flush out information for old buffer. */
- *(yy_c_buf_p) = (yy_hold_char);
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ *yy_c_buf_p = yy_hold_char;
+ yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+ yy_current_buffer->yy_n_chars = yy_n_chars;
}
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
- llvmAsm_load_buffer_state( );
+ yy_current_buffer = new_buffer;
+ yy_load_buffer_state();
/* We don't actually know whether we did this switch during
- * EOF (llvmAsmwrap()) processing, but the only time this flag
- * is looked at is after llvmAsmwrap() is called, so it's safe
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
* to go ahead and always set it.
*/
- (yy_did_buffer_switch_on_eof) = 1;
-}
+ yy_did_buffer_switch_on_eof = 1;
+ }
-static void llvmAsm_load_buffer_state (void)
-{
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
- llvmAsmin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
- (yy_hold_char) = *(yy_c_buf_p);
-}
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- *
- * @return the allocated buffer state.
- */
- YY_BUFFER_STATE llvmAsm_create_buffer (FILE * file, int size )
-{
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+ {
+ yy_n_chars = yy_current_buffer->yy_n_chars;
+ yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+ yyin = yy_current_buffer->yy_input_file;
+ yy_hold_char = *yy_c_buf_p;
+ }
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+ {
YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state ) );
+
+ b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" );
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_buf_size = size;
/* yy_ch_buf has to be 2 characters longer than the size given because
* we need to put in 2 end-of-buffer characters.
*/
- b->yy_ch_buf = (char *) llvmAsmalloc(b->yy_buf_size + 2 );
+ b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" );
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_is_our_buffer = 1;
- llvmAsm_init_buffer(b,file );
+ yy_init_buffer( b, file );
return b;
-}
+ }
-/** Destroy the buffer.
- * @param b a buffer created with llvmAsm_create_buffer()
- *
- */
- void llvmAsm_delete_buffer (YY_BUFFER_STATE b )
-{
-
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+ {
if ( ! b )
return;
- if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
- YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+ if ( b == yy_current_buffer )
+ yy_current_buffer = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- llvmAsmfree((void *) b->yy_ch_buf );
+ yy_flex_free( (void *) b->yy_ch_buf );
- llvmAsmfree((void *) b );
-}
+ yy_flex_free( (void *) b );
+ }
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a llvmAsmrestart() or at EOF.
- */
- static void llvmAsm_init_buffer (YY_BUFFER_STATE b, FILE * file )
-{
- int oerrno = errno;
-
- llvmAsm_flush_buffer(b );
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+ {
+ yy_flush_buffer( b );
b->yy_input_file = file;
b->yy_fill_buffer = 1;
- /* If b is the current buffer, then llvmAsm_init_buffer was _probably_
- * called from llvmAsmrestart() or through yy_get_next_buffer.
- * In that case, we don't want to reset the lineno or column.
- */
- if (b != YY_CURRENT_BUFFER){
- b->yy_bs_lineno = 1;
- b->yy_bs_column = 0;
- }
+#if YY_ALWAYS_INTERACTIVE
+ b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+ b->yy_is_interactive = 0;
+#else
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+ }
- b->yy_is_interactive = 0;
-
- errno = oerrno;
-}
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- *
- */
- void llvmAsm_flush_buffer (YY_BUFFER_STATE b )
-{
- if ( ! b )
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+ {
+ if ( ! b )
return;
b->yy_n_chars = 0;
@@ -2656,123 +2614,31 @@ static void llvmAsm_load_buffer_state (void)
b->yy_at_bol = 1;
b->yy_buffer_status = YY_BUFFER_NEW;
- if ( b == YY_CURRENT_BUFFER )
- llvmAsm_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- * the current state. This function will allocate the stack
- * if necessary.
- * @param new_buffer The new state.
- *
- */
-void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
- if (new_buffer == NULL)
- return;
-
- llvmAsmensure_buffer_stack();
-
- /* This block is copied from llvmAsm_switch_to_buffer. */
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *(yy_c_buf_p) = (yy_hold_char);
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- /* Only push if top exists. Otherwise, replace top. */
- if (YY_CURRENT_BUFFER)
- (yy_buffer_stack_top)++;
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
- /* copied from llvmAsm_switch_to_buffer. */
- llvmAsm_load_buffer_state( );
- (yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- * The next element becomes the new top.
- *
- */
-void llvmAsmpop_buffer_state (void)
-{
- if (!YY_CURRENT_BUFFER)
- return;
-
- llvmAsm_delete_buffer(YY_CURRENT_BUFFER );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- if ((yy_buffer_stack_top) > 0)
- --(yy_buffer_stack_top);
-
- if (YY_CURRENT_BUFFER) {
- llvmAsm_load_buffer_state( );
- (yy_did_buffer_switch_on_eof) = 1;
+ if ( b == yy_current_buffer )
+ yy_load_buffer_state();
}
-}
-/* Allocates the stack if it does not exist.
- * Guarantees space for at least one push.
- */
-static void llvmAsmensure_buffer_stack (void)
-{
- int num_to_alloc;
-
- if (!(yy_buffer_stack)) {
-
- /* First allocation is just for 2 elements, since we don't know if this
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
- num_to_alloc = 1;
- (yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmalloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- );
-
- memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
- (yy_buffer_stack_max) = num_to_alloc;
- (yy_buffer_stack_top) = 0;
- return;
- }
-
- if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
- /* Increase the buffer to prepare for a possible push. */
- int grow_size = 8 /* arbitrary grow size */;
-
- num_to_alloc = (yy_buffer_stack_max) + grow_size;
- (yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmrealloc
- ((yy_buffer_stack),
- num_to_alloc * sizeof(struct yy_buffer_state*)
- );
- /* zero only the new slots.*/
- memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
- (yy_buffer_stack_max) = num_to_alloc;
- }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- *
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE llvmAsm_scan_buffer (char * base, yy_size_t size )
-{
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+ {
YY_BUFFER_STATE b;
-
+
if ( size < 2 ||
base[size-2] != YY_END_OF_BUFFER_CHAR ||
base[size-1] != YY_END_OF_BUFFER_CHAR )
/* They forgot to leave room for the EOB's. */
return 0;
- b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state ) );
+ b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_buffer()" );
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
b->yy_buf_pos = b->yy_ch_buf = base;
@@ -2784,53 +2650,58 @@ YY_BUFFER_STATE llvmAsm_scan_buffer (char * base, yy_size_t size )
b->yy_fill_buffer = 0;
b->yy_buffer_status = YY_BUFFER_NEW;
- llvmAsm_switch_to_buffer(b );
+ yy_switch_to_buffer( b );
return b;
-}
+ }
+#endif
-/** Setup the input buffer state to scan a string. The next call to llvmAsmlex() will
- * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
- *
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- * llvmAsm_scan_bytes() instead.
- */
-YY_BUFFER_STATE llvmAsm_scan_string (yyconst char * yystr )
-{
-
- return llvmAsm_scan_bytes(yystr,strlen(yystr) );
-}
-/** Setup the input buffer state to scan the given bytes. The next call to llvmAsmlex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- *
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char * yybytes, int _yybytes_len )
-{
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+ {
+ int len;
+ for ( len = 0; yy_str[len]; ++len )
+ ;
+
+ return yy_scan_bytes( yy_str, len );
+ }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+ {
YY_BUFFER_STATE b;
char *buf;
yy_size_t n;
int i;
-
+
/* Get memory for full buffer, including space for trailing EOB's. */
- n = _yybytes_len + 2;
- buf = (char *) llvmAsmalloc(n );
+ n = len + 2;
+ buf = (char *) yy_flex_alloc( n );
if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_bytes()" );
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
- for ( i = 0; i < _yybytes_len; ++i )
- buf[i] = yybytes[i];
+ for ( i = 0; i < len; ++i )
+ buf[i] = bytes[i];
- buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+ buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
- b = llvmAsm_scan_buffer(buf,n );
+ b = yy_scan_buffer( buf, n );
if ( ! b )
- YY_FATAL_ERROR( "bad buffer in llvmAsm_scan_bytes()" );
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
@@ -2838,199 +2709,148 @@ YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char * yybytes, int _yybytes_len )
b->yy_is_our_buffer = 1;
return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
+ }
#endif
-static void yy_fatal_error (yyconst char* msg )
-{
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
-}
-/* Redefine yyless() so it works in section 3 code. */
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+ {
+ if ( yy_start_stack_ptr >= yy_start_stack_depth )
+ {
+ yy_size_t new_size;
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up llvmAsmtext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- llvmAsmtext[llvmAsmleng] = (yy_hold_char); \
- (yy_c_buf_p) = llvmAsmtext + yyless_macro_arg; \
- (yy_hold_char) = *(yy_c_buf_p); \
- *(yy_c_buf_p) = '\0'; \
- llvmAsmleng = yyless_macro_arg; \
- } \
- while ( 0 )
+ yy_start_stack_depth += YY_START_STACK_INCR;
+ new_size = yy_start_stack_depth * sizeof( int );
-/* Accessor methods (get/set functions) to struct members. */
+ if ( ! yy_start_stack )
+ yy_start_stack = (int *) yy_flex_alloc( new_size );
-/** Get the current line number.
- *
- */
-int llvmAsmget_lineno (void)
-{
-
- return llvmAsmlineno;
-}
+ else
+ yy_start_stack = (int *) yy_flex_realloc(
+ (void *) yy_start_stack, new_size );
-/** Get the input stream.
- *
- */
-FILE *llvmAsmget_in (void)
-{
- return llvmAsmin;
-}
+ if ( ! yy_start_stack )
+ YY_FATAL_ERROR(
+ "out of memory expanding start-condition stack" );
+ }
-/** Get the output stream.
- *
- */
-FILE *llvmAsmget_out (void)
-{
- return llvmAsmout;
-}
+ yy_start_stack[yy_start_stack_ptr++] = YY_START;
-/** Get the length of the current token.
- *
- */
-int llvmAsmget_leng (void)
-{
- return llvmAsmleng;
-}
+ BEGIN(new_state);
+ }
+#endif
-/** Get the current token.
- *
- */
-char *llvmAsmget_text (void)
-{
- return llvmAsmtext;
-}
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+ {
+ if ( --yy_start_stack_ptr < 0 )
+ YY_FATAL_ERROR( "start-condition stack underflow" );
-/** Set the current line number.
- * @param line_number
- *
- */
-void llvmAsmset_lineno (int line_number )
-{
-
- llvmAsmlineno = line_number;
-}
+ BEGIN(yy_start_stack[yy_start_stack_ptr]);
+ }
+#endif
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- *
- * @see llvmAsm_switch_to_buffer
- */
-void llvmAsmset_in (FILE * in_str )
-{
- llvmAsmin = in_str ;
-}
-void llvmAsmset_out (FILE * out_str )
-{
- llvmAsmout = out_str ;
-}
-
-int llvmAsmget_debug (void)
-{
- return llvmAsm_flex_debug;
-}
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+ {
+ return yy_start_stack[yy_start_stack_ptr - 1];
+ }
+#endif
-void llvmAsmset_debug (int bdebug )
-{
- llvmAsm_flex_debug = bdebug ;
-}
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
-static int yy_init_globals (void)
-{
- /* Initialization is the same as for the non-reentrant scanner.
- * This function is called from llvmAsmlex_destroy(), so don't allocate here.
- */
-
- /* We do not touch llvmAsmlineno unless the option is enabled. */
- llvmAsmlineno = 1;
-
- (yy_buffer_stack) = 0;
- (yy_buffer_stack_top) = 0;
- (yy_buffer_stack_max) = 0;
- (yy_c_buf_p) = (char *) 0;
- (yy_init) = 0;
- (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
- llvmAsmin = stdin;
- llvmAsmout = stdout;
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
#else
- llvmAsmin = (FILE *) 0;
- llvmAsmout = (FILE *) 0;
+static void yy_fatal_error( msg )
+char msg[];
#endif
+ {
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+ }
- /* For future reference: Set errno on error, since we are called by
- * llvmAsmlex_init()
- */
- return 0;
-}
-/* llvmAsmlex_destroy is for both reentrant and non-reentrant scanners. */
-int llvmAsmlex_destroy (void)
-{
-
- /* Pop the buffer stack, destroying each element. */
- while(YY_CURRENT_BUFFER){
- llvmAsm_delete_buffer(YY_CURRENT_BUFFER );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- llvmAsmpop_buffer_state();
- }
- /* Destroy the stack itself. */
- llvmAsmfree((yy_buffer_stack) );
- (yy_buffer_stack) = NULL;
+/* Redefine yyless() so it works in section 3 code. */
- /* Reset the globals. This is important in a non-reentrant scanner so the next time
- * llvmAsmlex() is called, initialization will occur. */
- yy_init_globals( );
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ yytext[yyleng] = yy_hold_char; \
+ yy_c_buf_p = yytext + n; \
+ yy_hold_char = *yy_c_buf_p; \
+ *yy_c_buf_p = '\0'; \
+ yyleng = n; \
+ } \
+ while ( 0 )
- return 0;
-}
-/*
- * Internal utility routines.
- */
+/* Internal utility routines. */
#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+ {
register int i;
for ( i = 0; i < n; ++i )
s1[i] = s2[i];
-}
+ }
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+ {
register int n;
for ( n = 0; s[n]; ++n )
;
return n;
-}
+ }
#endif
-void *llvmAsmalloc (yy_size_t size )
-{
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+ {
return (void *) malloc( size );
-}
+ }
-void *llvmAsmrealloc (void * ptr, yy_size_t size )
-{
+#ifdef YY_USE_PROTOS
+static inline void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static inline void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+ {
/* The cast to (char *) in the following accommodates both
* implementations that use char* generic pointers, and those
* that use void* generic pointers. It works with the latter
@@ -3039,16 +2859,24 @@ void *llvmAsmrealloc (void * ptr, yy_size_t size )
* as though doing an assignment.
*/
return (void *) realloc( (char *) ptr, size );
-}
-
-void llvmAsmfree (void * ptr )
-{
- free( (char *) ptr ); /* see llvmAsmrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 407 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+ }
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+ {
+ free( ptr );
+ }
+#if YY_MAIN
+int main()
+ {
+ yylex();
+ return 0;
+ }
+#endif
+#line 409 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l
index 96eedff5d5..e5e8256bc1 100644
--- a/lib/AsmParser/Lexer.l
+++ b/lib/AsmParser/Lexer.l
@@ -232,6 +232,9 @@ coldcc { return COLDCC_TOK; }
x86_stdcallcc { return X86_STDCALLCC_TOK; }
x86_fastcallcc { return X86_FASTCALLCC_TOK; }
+inreg { return INREG; }
+sret { return SRET; }
+
void { RET_TY(Type::VoidTy, VOID); }
float { RET_TY(Type::FloatTy, FLOAT); }
double { RET_TY(Type::DoubleTy,DOUBLE);}
@@ -255,11 +258,15 @@ fdiv { RET_TOK(BinaryOpVal, FDiv, FDIV); }
urem { RET_TOK(BinaryOpVal, URem, UREM); }
srem { RET_TOK(BinaryOpVal, SRem, SREM); }
frem { RET_TOK(BinaryOpVal, FRem, FREM); }
+shl { RET_TOK(BinaryOpVal, Shl, SHL); }
+lshr { RET_TOK(BinaryOpVal, LShr, LSHR); }
+ashr { RET_TOK(BinaryOpVal, AShr, ASHR); }
and { RET_TOK(BinaryOpVal, And, AND); }
or { RET_TOK(BinaryOpVal, Or , OR ); }
xor { RET_TOK(BinaryOpVal, Xor, XOR); }
icmp { RET_TOK(OtherOpVal, ICmp, ICMP); }
fcmp { RET_TOK(OtherOpVal, FCmp, FCMP); }
+
eq { return EQ; }
ne { return NE; }
slt { return SLT; }
@@ -286,8 +293,6 @@ call { RET_TOK(OtherOpVal, Call, CALL); }
trunc { RET_TOK(CastOpVal, Trunc, TRUNC); }
zext { RET_TOK(CastOpVal, ZExt, ZEXT); }
sext { RET_TOK(CastOpVal, SExt, SEXT); }
-inreg { return INREG; }
-sret { return SRET; }
fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
fpext { RET_TOK(CastOpVal, FPExt, FPEXT); }
uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); }
@@ -298,9 +303,6 @@ inttoptr { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
ptrtoint { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
bitcast { RET_TOK(CastOpVal, BitCast, BITCAST); }
select { RET_TOK(OtherOpVal, Select, SELECT); }
-shl { RET_TOK(OtherOpVal, Shl, SHL); }
-lshr { RET_TOK(OtherOpVal, LShr, LSHR); }
-ashr { RET_TOK(OtherOpVal, AShr, ASHR); }
va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); }
ret { RET_TOK(TermOpVal, Ret, RET); }
br { RET_TOK(TermOpVal, Br, BR); }
diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs
index 96eedff5d5..e5e8256bc1 100644
--- a/lib/AsmParser/Lexer.l.cvs
+++ b/lib/AsmParser/Lexer.l.cvs
@@ -232,6 +232,9 @@ coldcc { return COLDCC_TOK; }
x86_stdcallcc { return X86_STDCALLCC_TOK; }
x86_fastcallcc { return X86_FASTCALLCC_TOK; }
+inreg { return INREG; }
+sret { return SRET; }
+
void { RET_TY(Type::VoidTy, VOID); }
float { RET_TY(Type::FloatTy, FLOAT); }
double { RET_TY(Type::DoubleTy,DOUBLE);}
@@ -255,11 +258,15 @@ fdiv { RET_TOK(BinaryOpVal, FDiv, FDIV); }
urem { RET_TOK(BinaryOpVal, URem, UREM); }
srem { RET_TOK(BinaryOpVal, SRem, SREM); }
frem { RET_TOK(BinaryOpVal, FRem, FREM); }
+shl { RET_TOK(BinaryOpVal, Shl, SHL); }
+lshr { RET_TOK(BinaryOpVal, LShr, LSHR); }
+ashr { RET_TOK(BinaryOpVal, AShr, ASHR); }
and { RET_TOK(BinaryOpVal, And, AND); }
or { RET_TOK(BinaryOpVal, Or , OR ); }
xor { RET_TOK(BinaryOpVal, Xor, XOR); }
icmp { RET_TOK(OtherOpVal, ICmp, ICMP); }
fcmp { RET_TOK(OtherOpVal, FCmp, FCMP); }
+
eq { return EQ; }
ne { return NE; }
slt { return SLT; }
@@ -286,8 +293,6 @@ call { RET_TOK(OtherOpVal, Call, CALL); }
trunc { RET_TOK(CastOpVal, Trunc, TRUNC); }
zext { RET_TOK(CastOpVal, ZExt, ZEXT); }
sext { RET_TOK(CastOpVal, SExt, SEXT); }
-inreg { return INREG; }
-sret { return SRET; }
fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
fpext { RET_TOK(CastOpVal, FPExt, FPEXT); }
uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); }
@@ -298,9 +303,6 @@ inttoptr { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
ptrtoint { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
bitcast { RET_TOK(CastOpVal, BitCast, BITCAST); }
select { RET_TOK(OtherOpVal, Select, SELECT); }
-shl { RET_TOK(OtherOpVal, Shl, SHL); }
-lshr { RET_TOK(OtherOpVal, LShr, LSHR); }
-ashr { RET_TOK(OtherOpVal, AShr, ASHR); }
va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); }
ret { RET_TOK(TermOpVal, Ret, RET); }
br { RET_TOK(TermOpVal, Br, BR); }
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index d611dc99bb..9117041705 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -1,147 +1,336 @@
+/* A Bison parser, made by GNU Bison 2.1. */
-/* A Bison parser, made from /Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y
- by GNU Bison version 1.28 */
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-#define YYBISON 1 /* Identify Bison output. */
+ This program 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 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+/* Written by Richard Stallman by simplifying the original so called
+ ``semantic'' parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names. */
#define yyparse llvmAsmparse
-#define yylex llvmAsmlex
+#define yylex llvmAsmlex
#define yyerror llvmAsmerror
-#define yylval llvmAsmlval
-#define yychar llvmAsmchar
+#define yylval llvmAsmlval
+#define yychar llvmAsmchar
#define yydebug llvmAsmdebug
#define yynerrs llvmAsmnerrs
-#define ESINT64VAL 257
-#define EUINT64VAL 258
-#define LOCALVAL_ID 259
-#define GLOBALVAL_ID 260
-#define FPVAL 261
-#define VOID 262
-#define INTTYPE 263
-#define FLOAT 264
-#define DOUBLE 265
-#define LABEL 266
-#define TYPE 267
-#define LOCALVAR 268
-#define GLOBALVAR 269
-#define LABELSTR 270
-#define STRINGCONSTANT 271
-#define ATSTRINGCONSTANT 272
-#define IMPLEMENTATION 273
-#define ZEROINITIALIZER 274
-#define TRUETOK 275
-#define FALSETOK 276
-#define BEGINTOK 277
-#define ENDTOK 278
-#define DECLARE 279
-#define DEFINE 280
-#define GLOBAL 281
-#define CONSTANT 282
-#define SECTION 283
-#define VOLATILE 284
-#define TO 285
-#define DOTDOTDOT 286
-#define NULL_TOK 287
-#define UNDEF 288
-#define INTERNAL 289
-#define LINKONCE 290
-#define WEAK 291
-#define APPENDING 292
-#define DLLIMPORT 293
-#define DLLEXPORT 294
-#define EXTERN_WEAK 295
-#define OPAQUE 296
-#define EXTERNAL 297
-#define TARGET 298
-#define TRIPLE 299
-#define ALIGN 300
-#define DEPLIBS 301
-#define CALL 302
-#define TAIL 303
-#define ASM_TOK 304
-#define MODULE 305
-#define SIDEEFFECT 306
-#define CC_TOK 307
-#define CCC_TOK 308
-#define FASTCC_TOK 309
-#define COLDCC_TOK 310
-#define X86_STDCALLCC_TOK 311
-#define X86_FASTCALLCC_TOK 312
-#define DATALAYOUT 313
-#define RET 314
-#define BR 315
-#define SWITCH 316
-#define INVOKE 317
-#define UNWIND 318
-#define UNREACHABLE 319
-#define ADD 320
-#define SUB 321
-#define MUL 322
-#define UDIV 323
-#define SDIV 324
-#define FDIV 325
-#define UREM 326
-#define SREM 327
-#define FREM 328
-#define AND 329
-#define OR 330
-#define XOR 331
-#define ICMP 332
-#define FCMP 333
-#define EQ 334
-#define NE 335
-#define SLT 336
-#define SGT 337
-#define SLE 338
-#define SGE 339
-#define ULT 340
-#define UGT 341
-#define ULE 342
-#define UGE 343
-#define OEQ 344
-#define ONE 345
-#define OLT 346
-#define OGT 347
-#define OLE 348
-#define OGE 349
-#define ORD 350
-#define UNO 351
-#define UEQ 352
-#define UNE 353
-#define MALLOC 354
-#define ALLOCA 355
-#define FREE 356
-#define LOAD 357
-#define STORE 358
-#define GETELEMENTPTR 359
-#define TRUNC 360
-#define ZEXT 361
-#define SEXT 362
-#define FPTRUNC 363
-#define FPEXT 364
-#define BITCAST 365
-#define UITOFP 366
-#define SITOFP 367
-#define FPTOUI 368
-#define FPTOSI 369
-#define INTTOPTR 370
-#define PTRTOINT 371
-#define PHI_TOK 372
-#define SELECT 373
-#define SHL 374
-#define LSHR 375
-#define ASHR 376
-#define VAARG 377
-#define EXTRACTELEMENT 378
-#define INSERTELEMENT 379
-#define SHUFFLEVECTOR 380
-#define NORETURN 381
-#define INREG 382
-#define SRET 383
-#define DEFAULT 384
-#define HIDDEN 385
-
-#line 14 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ ESINT64VAL = 258,
+ EUINT64VAL = 259,
+ LOCALVAL_ID = 260,
+ GLOBALVAL_ID = 261,
+ FPVAL = 262,
+ VOID = 263,
+ INTTYPE = 264,
+ FLOAT = 265,
+ DOUBLE = 266,
+ LABEL = 267,
+ TYPE = 268,
+ LOCALVAR = 269,
+ GLOBALVAR = 270,
+ LABELSTR = 271,
+ STRINGCONSTANT = 272,
+ ATSTRINGCONSTANT = 273,
+ IMPLEMENTATION = 274,
+ ZEROINITIALIZER = 275,
+ TRUETOK = 276,
+ FALSETOK = 277,
+ BEGINTOK = 278,
+ ENDTOK = 279,
+ DECLARE = 280,
+ DEFINE = 281,
+ GLOBAL = 282,
+ CONSTANT = 283,
+ SECTION = 284,
+ VOLATILE = 285,
+ TO = 286,
+ DOTDOTDOT = 287,
+ NULL_TOK = 288,
+ UNDEF = 289,
+ INTERNAL = 290,
+ LINKONCE = 291,
+ WEAK = 292,
+ APPENDING = 293,
+ DLLIMPORT = 294,
+ DLLEXPORT = 295,
+ EXTERN_WEAK = 296,
+ OPAQUE = 297,
+ EXTERNAL = 298,
+ TARGET = 299,
+ TRIPLE = 300,
+ ALIGN = 301,
+ DEPLIBS = 302,
+ CALL = 303,
+ TAIL = 304,
+ ASM_TOK = 305,
+ MODULE = 306,
+ SIDEEFFECT = 307,
+ CC_TOK = 308,
+ CCC_TOK = 309,
+ FASTCC_TOK = 310,
+ COLDCC_TOK = 311,
+ X86_STDCALLCC_TOK = 312,
+ X86_FASTCALLCC_TOK = 313,
+ DATALAYOUT = 314,
+ RET = 315,
+ BR = 316,
+ SWITCH = 317,
+ INVOKE = 318,
+ UNWIND = 319,
+ UNREACHABLE = 320,
+ ADD = 321,
+ SUB = 322,
+ MUL = 323,
+ UDIV = 324,
+ SDIV = 325,
+ FDIV = 326,
+ UREM = 327,
+ SREM = 328,
+ FREM = 329,
+ AND = 330,
+ OR = 331,
+ XOR = 332,
+ SHL = 333,
+ LSHR = 334,
+ ASHR = 335,
+ ICMP = 336,
+ FCMP = 337,
+ EQ = 338,
+ NE = 339,
+ SLT = 340,
+ SGT = 341,
+ SLE = 342,
+ SGE = 343,
+ ULT = 344,
+ UGT = 345,
+ ULE = 346,
+ UGE = 347,
+ OEQ = 348,
+ ONE = 349,
+ OLT = 350,
+ OGT = 351,
+ OLE = 352,
+ OGE = 353,
+ ORD = 354,
+ UNO = 355,
+ UEQ = 356,
+ UNE = 357,
+ MALLOC = 358,
+ ALLOCA = 359,
+ FREE = 360,
+ LOAD = 361,
+ STORE = 362,
+ GETELEMENTPTR = 363,
+ TRUNC = 364,
+ ZEXT = 365,
+ SEXT = 366,
+ FPTRUNC = 367,
+ FPEXT = 368,
+ BITCAST = 369,
+ UITOFP = 370,
+ SITOFP = 371,
+ FPTOUI = 372,
+ FPTOSI = 373,
+ INTTOPTR = 374,
+ PTRTOINT = 375,
+ PHI_TOK = 376,
+ SELECT = 377,
+ VAARG = 378,
+ EXTRACTELEMENT = 379,
+ INSERTELEMENT = 380,
+ SHUFFLEVECTOR = 381,
+ NORETURN = 382,
+ INREG = 383,
+ SRET = 384,
+ DEFAULT = 385,
+ HIDDEN = 386
+ };
+#endif
+/* Tokens. */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define LOCALVAL_ID 260
+#define GLOBALVAL_ID 261
+#define FPVAL 262
+#define VOID 263
+#define INTTYPE 264
+#define FLOAT 265
+#define DOUBLE 266
+#define LABEL 267
+#define TYPE 268
+#define LOCALVAR 269
+#define GLOBALVAR 270
+#define LABELSTR 271
+#define STRINGCONSTANT 272
+#define ATSTRINGCONSTANT 273
+#define IMPLEMENTATION 274
+#define ZEROINITIALIZER 275
+#define TRUETOK 276
+#define FALSETOK 277
+#define BEGINTOK 278
+#define ENDTOK 279
+#define DECLARE 280
+#define DEFINE 281
+#define GLOBAL 282
+#define CONSTANT 283
+#define SECTION 284
+#define VOLATILE 285
+#define TO 286
+#define DOTDOTDOT 287
+#define NULL_TOK 288
+#define UNDEF 289
+#define INTERNAL 290
+#define LINKONCE 291
+#define WEAK 292
+#define APPENDING 293
+#define DLLIMPORT 294
+#define DLLEXPORT 295
+#define EXTERN_WEAK 296
+#define OPAQUE 297
+#define EXTERNAL 298
+#define TARGET 299
+#define TRIPLE 300
+#define ALIGN 301
+#define DEPLIBS 302
+#define CALL 303
+#define TAIL 304
+#define ASM_TOK 305
+#define MODULE 306
+#define SIDEEFFECT 307
+#define CC_TOK 308
+#define CCC_TOK 309
+#define FASTCC_TOK 310
+#define COLDCC_TOK 311
+#define X86_STDCALLCC_TOK 312
+#define X86_FASTCALLCC_TOK 313
+#define DATALAYOUT 314
+#define RET 315
+#define BR 316
+#define SWITCH 317
+#define INVOKE 318
+#define UNWIND 319
+#define UNREACHABLE 320
+#define ADD 321
+#define SUB 322
+#define MUL 323
+#define UDIV 324
+#define SDIV 325
+#define FDIV 326
+#define UREM 327
+#define SREM 328
+#define FREM 329
+#define AND 330
+#define OR 331
+#define XOR 332
+#define SHL 333
+#define LSHR 334
+#define ASHR 335
+#define ICMP 336
+#define FCMP 337
+#define EQ 338
+#define NE 339
+#define SLT 340
+#define SGT 341
+#define SLE 342
+#define SGE 343
+#define ULT 344
+#define UGT 345
+#define ULE 346
+#define UGE 347
+#define OEQ 348
+#define ONE 349
+#define OLT 350
+#define OGT 351
+#define OLE 352
+#define OGE 353
+#define ORD 354
+#define UNO 355
+#define UEQ 356
+#define UNE 357
+#define MALLOC 358
+#define ALLOCA 359
+#define FREE 360
+#define LOAD 361
+#define STORE 362
+#define GETELEMENTPTR 363
+#define TRUNC 364
+#define ZEXT 365
+#define SEXT 366
+#define FPTRUNC 367
+#define FPEXT 368
+#define BITCAST 369
+#define UITOFP 370
+#define SITOFP 371
+#define FPTOUI 372
+#define FPTOSI 373
+#define INTTOPTR 374
+#define PTRTOINT 375
+#define PHI_TOK 376
+#define SELECT 377
+#define VAARG 378
+#define EXTRACTELEMENT 379
+#define INSERTELEMENT 380
+#define SHUFFLEVECTOR 381
+#define NORETURN 382
+#define INREG 383
+#define SRET 384
+#define DEFAULT 385
+#define HIDDEN 386
+
+
+
+
+/* Copy the first part of user declarations. */
+#line 14 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
#include "ParserInternals.h"
#include "llvm/CallingConv.h"
@@ -1013,8 +1202,28 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
}
-#line 886 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-typedef union {
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 886 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
llvm::BasicBlock *BasicBlockVal;
@@ -1059,1062 +1268,1519 @@ typedef union {
llvm::ICmpInst::Predicate IPredicate;
llvm::FCmpInst::Predicate FPredicate;
} YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
+/* Line 196 of yacc.c. */
+#line 1273 "llvmAsmParser.tab.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
#endif
-#define YYFINAL 567
-#define YYFLAG -32768
-#define YYNTBASE 146
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 385 ? yytranslate[x] : 224)
-
-static const short yytranslate[] = { 0,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 136,
- 137, 134, 2, 133, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 141,
- 132, 142, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 138, 135, 140, 2, 2, 2, 2, 2, 145, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 139,
- 2, 2, 143, 2, 144, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131
-};
+/* Copy the second part of user declarations. */
-#if YYDEBUG != 0
-static const short yyprhs[] = { 0,
- 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
- 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
- 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
- 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
- 80, 82, 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
- 119, 122, 123, 125, 127, 130, 131, 133, 135, 137,
- 139, 141, 143, 145, 147, 148, 150, 151, 153, 155,
- 156, 158, 160, 162, 164, 165, 167, 169, 171, 173,
- 175, 178, 180, 182, 184, 186, 187, 190, 192, 194,
- 195, 198, 199, 202, 203, 207, 210, 211, 213, 214,
- 218, 220, 223, 225, 227, 229, 231, 233, 235, 238,
- 240, 243, 249, 255, 261, 267, 271, 274, 280, 285,
- 288, 290, 292, 294, 298, 300, 304, 306, 307, 309,
- 313, 318, 322, 326, 331, 336, 340, 347, 353, 356,
- 359, 362, 365, 368, 371, 374, 377, 380, 383, 390,
- 396, 405, 412, 419, 427, 435, 442, 449, 458, 467,
- 471, 473, 475, 477, 479, 480, 482, 485, 486, 490,
- 491, 495, 499, 501, 505, 509, 510, 517, 518, 526,
- 527, 535, 538, 542, 544, 548, 552, 556, 560, 562,
- 563, 569, 573, 575, 579, 581, 582, 592, 594, 596,
- 601, 603, 605, 608, 612, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 631, 635, 637, 643, 645, 647,
- 649, 651, 653, 655, 658, 661, 664, 668, 671, 672,
- 674, 677, 680, 684, 694, 704, 713, 728, 730, 732,
- 739, 745, 748, 755, 763, 767, 773, 774, 775, 779,
- 782, 784, 790, 796, 803, 810, 815, 820, 827, 832,
- 837, 844, 851, 854, 863, 865, 867, 868, 872, 879,
- 883, 890, 893, 898, 905
-};
-static const short yyrhs[] = { 66,
- 0, 67, 0, 68, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 74, 0, 75, 0, 76,
- 0, 77, 0, 106, 0, 107, 0, 108, 0, 109,
- 0, 110, 0, 111, 0, 112, 0, 113, 0, 114,
- 0, 115, 0, 116, 0, 117, 0, 120, 0, 121,
- 0, 122, 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 85, 0, 86, 0, 87, 0, 88,
- 0, 89, 0, 90, 0, 91, 0, 92, 0, 93,
- 0, 94, 0, 95, 0, 96, 0, 97, 0, 98,
- 0, 99, 0, 86, 0, 87, 0, 88, 0, 89,
- 0, 21, 0, 22, 0, 9, 0, 10, 0, 11,
- 0, 14, 0, 17, 0, 154, 0, 0, 154, 132,
- 0, 0, 15, 0, 18, 0, 157, 132, 0, 0,
- 35, 0, 37, 0, 36, 0, 38, 0, 40, 0,
- 39, 0, 41, 0, 43, 0, 0, 131, 0, 0,
- 39, 0, 41, 0, 0, 35, 0, 36, 0, 37,
- 0, 40, 0, 0, 54, 0, 55, 0, 56, 0,
- 57, 0, 58, 0, 53, 4, 0, 107, 0, 108,
- 0, 128, 0, 129, 0, 0, 166, 165, 0, 127,
- 0, 165, 0, 0, 168, 167, 0, 0, 46, 4,
- 0, 0, 133, 46, 4, 0, 29, 17, 0, 0,
- 171, 0, 0, 133, 174, 173, 0, 171, 0, 46,
- 4, 0, 9, 0, 10, 0, 11, 0, 12, 0,
- 42, 0, 175, 0, 176, 134, 0, 208, 0, 135,
- 4, 0, 176, 136, 180, 137, 168, 0, 8, 136,
- 180, 137, 168, 0, 138, 4, 139, 176, 140, 0,
- 141, 4, 139, 176, 142, 0, 143, 181, 144, 0,
- 143, 144, 0, 141, 143, 181, 144, 142, 0, 141,
- 143, 144, 142, 0, 176, 166, 0, 176, 0, 8,
- 0, 177, 0, 179, 133, 177, 0, 179, 0, 179,
- 133, 32, 0, 32, 0, 0, 176, 0, 181, 133,
- 176, 0, 176, 138, 184, 140, 0, 176, 138, 140,
- 0, 176, 145, 17, 0, 176, 141, 184, 142, 0,
- 176, 143, 184, 144, 0, 176, 143, 144, 0, 176,
- 141, 143, 184, 144, 142, 0, 176, 141, 143, 144,
- 142, 0, 176, 33, 0, 176, 34, 0, 176, 208,
- 0, 176, 183, 0, 176, 20, 0, 152, 3, 0,
- 152, 4, 0, 9, 21, 0, 9, 22, 0, 153,
- 7, 0, 148, 136, 182, 31, 176, 137, 0, 105,
- 136, 182, 219, 137, 0, 119, 136, 182, 133, 182,
- 133, 182, 137, 0, 146, 136, 182, 133, 182, 137,
- 0, 147, 136, 182, 133, 182, 137, 0, 78, 150,
- 136, 182, 133, 182, 137, 0, 79, 151, 136, 182,
- 133, 182, 137, 0, 149, 136, 182, 133, 182, 137,
- 0, 124, 136, 182, 133, 182, 137, 0, 125, 136,
- 182, 133, 182, 133, 182, 137, 0, 126, 136, 182,
- 133, 182, 133, 182, 137, 0, 184, 133, 182, 0,
- 182, 0, 27, 0, 28, 0, 187, 0, 0, 188,
- 0, 187, 188, 0, 0, 26, 189, 204, 0, 0,
- 25, 190, 205, 0, 51, 50, 194, 0, 19, 0,
- 156, 13, 176, 0, 156, 13, 8, 0, 0, 158,
- 161, 185, 182, 191, 173, 0, 0, 158, 159, 161,
- 185, 182, 192, 173, 0, 0, 158, 160, 161, 185,
- 176, 193, 173, 0, 44, 195, 0, 47, 132, 196,
- 0, 17, 0, 45, 132, 17, 0, 59, 132, 17,
- 0, 138, 197, 140, 0, 197, 133, 17, 0, 17,
- 0, 0, 198, 133, 176, 166, 155, 0, 176, 166,
- 155, 0, 198, 0, 198, 133, 32, 0, 32, 0,
- 0, 164, 178, 157, 136, 199, 137, 168, 172, 169,
- 0, 23, 0, 143, 0, 163, 161, 200, 201, 0,
- 24, 0, 144, 0, 211, 203, 0, 162, 161, 200,
- 0, 0, 52, 0, 3, 0, 4, 0, 7, 0,
- 21, 0, 22, 0, 33, 0, 34, 0, 20, 0,
- 141, 184, 142, 0, 183, 0, 50, 206, 17, 133,
- 17, 0, 5, 0, 6, 0, 154, 0, 157, 0,
- 208, 0, 207, 0, 176, 209, 0, 211, 212, 0,
- 202, 212, 0, 213, 156, 214, 0, 213, 216, 0,
- 0, 16, 0, 60, 210, 0, 60, 8, 0, 61,
- 12, 209, 0, 61, 9, 209, 133, 12, 209, 133,
- 12, 209, 0, 62, 152, 209, 133, 12, 209, 138,
- 215, 140, 0, 62, 152, 209, 133, 12, 209, 138,
- 140, 0, 63, 164, 178, 209, 136, 218, 137, 168,
- 31, 12, 209, 64, 12, 209, 0, 64, 0, 65,
- 0, 215, 152, 207, 133, 12, 209, 0, 152, 207,
- 133, 12, 209, 0, 156, 221, 0, 176, 138, 209,
- 133, 209, 140, 0, 217, 133, 138, 209, 133, 209,
- 140, 0, 176, 209, 166, 0, 218, 133, 176, 209,
- 166, 0, 0, 0, 219, 133, 210, 0, 49, 48,
- 0, 48, 0, 146, 176, 209, 133, 209, 0, 147,
- 176, 209, 133, 209, 0, 78, 150, 176, 209, 133,
- 209, 0, 79, 151, 176, 209, 133, 209, 0, 149,
- 210, 133, 210, 0, 148, 210, 31, 176, 0, 119,
- 210, 133, 210, 133, 210, 0, 123, 210, 133, 176,
- 0, 124, 210, 133, 210, 0, 125, 210, 133, 210,
- 133, 210, 0, 126, 210, 133, 210, 133, 210, 0,
- 118, 217, 0, 220, 164, 178, 209, 136, 218, 137,
- 168, 0, 223, 0, 30, 0, 0, 100, 176, 170,
- 0, 100, 176, 133, 9, 209, 170, 0, 101, 176,
- 170, 0, 101, 176, 133, 9, 209, 170, 0, 102,
- 210, 0, 222, 103, 176, 209, 0, 222, 104, 210,
- 133, 176, 209, 0, 105, 176, 209, 219, 0
-};
+/* Line 219 of yacc.c. */
+#line 1285 "llvmAsmParser.tab.c"
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
#endif
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
- 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,
- 1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1035,
- 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1038, 1038, 1039,
- 1039, 1040, 1040, 1041, 1041, 1042, 1042, 1046, 1046, 1047,
- 1047, 1048, 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1052,
- 1052, 1053, 1054, 1059, 1060, 1060, 1062, 1062, 1063, 1063,
- 1067, 1071, 1076, 1076, 1078, 1082, 1088, 1089, 1090, 1091,
- 1092, 1096, 1097, 1098, 1102, 1103, 1107, 1108, 1109, 1113,
- 1114, 1115, 1116, 1117, 1120, 1120, 1121, 1122, 1123, 1124,
- 1125, 1133, 1134, 1135, 1136, 1139, 1140, 1145, 1146, 1149,
- 1150, 1157, 1157, 1164, 1164, 1173, 1181, 1181, 1187, 1187,
- 1189, 1194, 1207, 1207, 1207, 1207, 1210, 1214, 1218, 1225,
- 1230, 1238, 1256, 1274, 1279, 1291, 1301, 1305, 1315, 1322,
- 1329, 1336, 1341, 1346, 1353, 1354, 1361, 1368, 1376, 1381,
- 1392, 1420, 1436, 1465, 1493, 1518, 1537, 1562, 1581, 1593,
- 1600, 1666, 1676, 1686, 1692, 1698, 1703, 1708, 1716, 1728,
- 1749, 1757, 1763, 1774, 1779, 1784, 1793, 1799, 1805, 1814,
- 1818, 1826, 1826, 1837, 1842, 1850, 1851, 1855, 1855, 1859,
- 1859, 1862, 1865, 1877, 1901, 1912, 1919, 1922, 1927, 1930,
- 1936, 1940, 1943, 1949, 1962, 1966, 1971, 1973, 1978, 1983,
- 1992, 2002, 2013, 2017, 2026, 2035, 2040, 2146, 2146, 2148,
- 2157, 2157, 2159, 2164, 2176, 2180, 2185, 2189, 2193, 2197,
- 2201, 2205, 2209, 2213, 2217, 2242, 2246, 2260, 2264, 2268,
- 2272, 2278, 2278, 2284, 2293, 2297, 2306, 2317, 2326, 2338,
- 2351, 2355, 2359, 2364, 2374, 2393, 2402, 2469, 2473, 2480,
- 2491, 2504, 2513, 2524, 2534, 2542, 2550, 2553, 2554, 2561,
- 2565, 2570, 2591, 2608, 2621, 2634, 2643, 2655, 2663, 2670,
- 2676, 2682, 2688, 2703, 2767, 2772, 2776, 2783, 2790, 2798,
- 2805, 2813, 2821, 2835, 2852
-};
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
#endif
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define YYINCLUDED_STDLIB_H
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+# endif
+# ifdef __cplusplus
+extern "C" {
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifdef __cplusplus
+}
+# endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short int yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined (__GNUC__) && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = { "$","error","$undefined.","ESINT64VAL",
-"EUINT64VAL","LOCALVAL_ID","GLOBALVAL_ID","FPVAL","VOID","INTTYPE","FLOAT","DOUBLE",
-"LABEL","TYPE","LOCALVAR","GLOBALVAR","LABELSTR","STRINGCONSTANT","ATSTRINGCONSTANT",
-"IMPLEMENTATION","ZEROINITIALIZER","TRUETOK","FALSETOK","BEGINTOK","ENDTOK",
-"DECLARE","DEFINE","GLOBAL","CONSTANT","SECTION","VOLATILE","TO","DOTDOTDOT",
-"NULL_TOK","UNDEF","INTERNAL","LINKONCE","WEAK","APPENDING","DLLIMPORT","DLLEXPORT",
-"EXTERN_WEAK","OPAQUE","EXTERNAL","TARGET","TRIPLE","ALIGN","DEPLIBS","CALL",
-"TAIL","ASM_TOK","MODULE","SIDEEFFECT","CC_TOK","CCC_TOK","FASTCC_TOK","COLDCC_TOK",
-"X86_STDCALLCC_TOK","X86_FASTCALLCC_TOK","DATALAYOUT","RET","BR","SWITCH","INVOKE",
-"UNWIND","UNREACHABLE","ADD","SUB","MUL","UDIV","SDIV","FDIV","UREM","SREM",
-"FREM","AND","OR","XOR","ICMP","FCMP","EQ","NE","SLT","SGT","SLE","SGE","ULT",
-"UGT","ULE","UGE","OEQ","ONE","OLT","OGT","OLE","OGE","ORD","UNO","UEQ","UNE",
-"MALLOC","ALLOCA","FREE","LOAD","STORE","GETELEMENTPTR","TRUNC","ZEXT","SEXT",
-"FPTRUNC","FPEXT","BITCAST","UITOFP","SITOFP","FPTOUI","FPTOSI","INTTOPTR","PTRTOINT",
-"PHI_TOK","SELECT","SHL","LSHR","ASHR","VAARG","EXTRACTELEMENT","INSERTELEMENT",
-"SHUFFLEVECTOR","NORETURN","INREG","SRET","DEFAULT","HIDDEN","'='","','","'*'",
-"'\\\\'","'('","')'","'['","'x'","']'","'<'","'>'","'{'","'}'","'c'","ArithmeticOps",
-"LogicalOps","CastOps","ShiftOps","IPredicates","FPredicates","IntType","FPType",
-"LocalName","OptLocalName","OptLocalAssign","GlobalName","OptGlobalAssign","GVInternalLinkage",
-"GVExternalLinkage","GVVisibilityStyle","FunctionDeclareLinkage","FunctionDefineLinkage",
-"OptCallingConv","ParamAttr","OptParamAttrs","FuncAttr","OptFuncAttrs","OptAlign",
-"OptCAlign","SectionString","OptSection","GlobalVarAttributes","GlobalVarAttribute",
-"PrimType","Types","ArgType","ResultTypes","ArgTypeList","ArgTypeListI","TypeListI",
-"ConstVal","ConstExpr","ConstVector","GlobalType","Module","DefinitionList",
-"Definition","@1","@2","@3","@4","@5","AsmBlock","TargetDefinition","LibrariesDefinition",
-"LibList","ArgListH","ArgList","FunctionHeaderH","BEGIN","FunctionHeader","END",
-"Function","FunctionProto","OptSideEffect","ConstValueRef","SymbolicValueRef",
-"ValueRef","ResolvedVal","BasicBlockList","BasicBlock","InstructionList","BBTerminatorInst",
-"JumpTable","Inst","PHIList","ValueRefList","IndexList","OptTailCall","InstVal",
-"OptVolatile","MemoryInst", NULL
-};
#endif
-static const short yyr1[] = { 0,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 147,
- 147, 147, 148, 148, 148, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 149, 149, 149, 150, 150, 150,
- 150, 150, 150, 150, 150, 150, 150, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 152, 153, 153, 154, 154, 155, 155,
- 156, 156, 157, 157, 158, 158, 159, 159, 159, 159,
- 159, 160, 160, 160, 161, 161, 162, 162, 162, 163,
- 163, 163, 163, 163, 164, 164, 164, 164, 164, 164,
- 164, 165, 165, 165, 165, 166, 166, 167, 167, 168,
- 168, 169, 169, 170, 170, 171, 172, 172, 173, 173,
- 174, 174, 175, 175, 175, 175, 176, 176, 176, 176,
- 176, 176, 176, 176, 176, 176, 176, 176, 176, 177,
- 178, 178, 179, 179, 180, 180, 180, 180, 181, 181,
- 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
- 182, 182, 182, 182, 182, 182, 182, 182, 183, 183,
- 183, 183, 183, 183, 183, 183, 183, 183, 183, 184,
- 184, 185, 185, 186, 186, 187, 187, 189, 188, 190,
- 188, 188, 188, 188, 188, 191, 188, 192, 188, 193,
- 188, 188, 188, 194, 195, 195, 196, 197, 197, 197,
- 198, 198, 199, 199, 199, 199, 200, 201, 201, 202,
- 203, 203, 204, 205, 206, 206, 207, 207, 207, 207,
- 207, 207, 207, 207, 207, 207, 207, 208, 208, 208,
- 208, 209, 209, 210, 211, 211, 212, 213, 213, 213,
- 214, 214, 214, 214, 214, 214, 214, 214, 214, 215,
- 215, 216, 217, 217, 218, 218, 218, 219, 219, 220,
- 220, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 222, 222, 223, 223, 223,
- 223, 223, 223, 223, 223
-};
+#if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+#else
+ typedef short int yysigned_char;
+#endif
-static const short yyr2[] = { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 2, 0, 1, 1, 2, 0, 1, 1, 1, 1,
- 1, 1, 1, 1, 0, 1, 0, 1, 1, 0,
- 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
- 2, 1, 1, 1, 1, 0, 2, 1, 1, 0,
- 2, 0, 2, 0, 3, 2, 0, 1, 0, 3,
- 1, 2, 1, 1, 1, 1, 1, 1, 2, 1,
- 2, 5, 5, 5, 5, 3, 2, 5, 4, 2,
- 1, 1, 1, 3, 1, 3, 1, 0, 1, 3,
- 4, 3, 3, 4, 4, 3, 6, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 6, 5,
- 8, 6, 6, 7, 7, 6, 6, 8, 8, 3,
- 1, 1, 1, 1, 0, 1, 2, 0, 3, 0,
- 3, 3, 1, 3, 3, 0, 6, 0, 7, 0,
- 7, 2, 3, 1, 3, 3, 3, 3, 1, 0,
- 5, 3, 1, 3, 1, 0, 9, 1, 1, 4,
- 1, 1, 2, 3, 0, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 5, 1, 1, 1,
- 1, 1, 1, 2, 2, 2, 3, 2, 0, 1,
- 2, 2, 3, 9, 9, 8, 14, 1, 1, 6,
- 5, 2, 6, 7, 3, 5, 0, 0, 3, 2,
- 1, 5, 5, 6, 6, 4, 4, 6, 4, 4,
- 6, 6, 2, 8, 1, 1, 0, 3, 6, 3,
- 6, 2, 4, 6, 4
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 40
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 1439
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 146
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 78
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 284
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 557
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 386
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const unsigned char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 136, 137, 134, 2, 133, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 141, 132, 142, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 138, 135, 140, 2, 2, 2, 2, 2, 145,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 139, 2, 2, 143, 2, 144, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131
};
-static const short yydefact[] = { 66,
- 57, 63, 58, 64, 183, 180, 178, 0, 0, 0,
- 0, 0, 0, 75, 66, 176, 77, 80, 0, 0,
- 192, 0, 0, 61, 0, 65, 67, 69, 68, 70,
- 72, 71, 73, 74, 76, 75, 75, 0, 177, 78,
- 79, 75, 181, 81, 82, 83, 84, 75, 239, 179,
- 239, 0, 0, 200, 193, 194, 182, 228, 229, 185,
- 113, 114, 115, 116, 117, 0, 0, 0, 0, 230,
- 231, 118, 184, 120, 0, 0, 172, 173, 0, 85,
- 85, 240, 236, 62, 211, 212, 213, 235, 195, 196,
- 199, 0, 138, 121, 0, 0, 0, 0, 127, 139,
- 0, 119, 138, 0, 0, 113, 114, 115, 0, 0,
- 0, 186, 0, 86, 87, 88, 89, 90, 0, 214,
- 0, 277, 238, 0, 197, 137, 96, 133, 135, 0,
- 0, 0, 0, 0, 0, 126, 0, 188, 190, 156,
- 157, 154, 155, 158, 153, 149, 150, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 0,
- 0, 0, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 0, 25, 26, 27, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 152,
- 151, 109, 91, 132, 131, 0, 208, 209, 210, 276,
- 261, 0, 0, 0, 0, 85, 248, 249, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 237, 85, 252, 0, 275, 198,
- 130, 0, 100, 0, 0, 129, 0, 140, 100, 109,
- 109, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 0, 52, 53, 48, 49, 50, 51, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 0, 0,
- 0, 0, 0, 0, 142, 171, 0, 0, 0, 146,
- 0, 143, 0, 0, 0, 0, 0, 187, 0, 260,
- 242, 0, 241, 0, 0, 54, 0, 0, 0, 0,
- 104, 104, 282, 0, 0, 273, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
- 94, 95, 97, 136, 134, 123, 124, 125, 128, 122,
- 189, 191, 0, 0, 258, 0, 0, 0, 0, 0,
- 141, 127, 139, 0, 144, 145, 0, 0, 0, 0,
- 0, 0, 111, 109, 206, 217, 218, 219, 224, 220,
- 221, 222, 223, 215, 0, 226, 233, 232, 234, 0,
- 243, 0, 0, 0, 0, 0, 278, 0, 280, 258,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 98, 99, 101, 0, 0, 0,
- 0, 0, 0, 0, 170, 148, 0, 0, 0, 0,
- 0, 106, 112, 110, 205, 96, 203, 0, 216, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 285,
- 0, 0, 0, 269, 270, 0, 0, 0, 0, 267,
- 266, 0, 283, 0, 0, 0, 0, 160, 0, 0,
- 0, 0, 147, 0, 0, 0, 0, 60, 0, 100,
- 0, 225, 0, 0, 257, 0, 0, 104, 105, 104,
- 0, 0, 0, 0, 0, 262, 263, 257, 0, 0,
- 0, 259, 0, 167, 0, 0, 162, 163, 159, 166,
- 59, 202, 204, 96, 107, 0, 0, 0, 0, 0,
- 264, 265, 0, 279, 281, 0, 0, 268, 271, 272,
- 0, 284, 164, 165, 0, 0, 0, 60, 108, 102,
- 227, 0, 0, 96, 0, 100, 253, 0, 100, 161,
- 168, 169, 201, 0, 207, 0, 246, 0, 0, 255,
- 0, 0, 254, 274, 103, 244, 0, 245, 0, 96,
- 0, 0, 0, 256, 0, 0, 0, 0, 251, 0,
- 0, 250, 0, 247, 0, 0, 0
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const unsigned short int yyprhs[] =
+{
+ 0, 0, 3, 5, 7, 9, 11, 13, 15, 17,
+ 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
+ 39, 41, 43, 45, 47, 49, 51, 53, 55, 57,
+ 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
+ 79, 81, 83, 85, 87, 89, 91, 93, 95, 97,
+ 99, 101, 103, 105, 107, 109, 111, 113, 115, 117,
+ 119, 121, 122, 125, 126, 128, 130, 133, 134, 136,
+ 138, 140, 142, 144, 146, 148, 150, 151, 153, 154,
+ 156, 158, 159, 161, 163, 165, 167, 168, 170, 172,
+ 174, 176, 178, 181, 183, 185, 187, 189, 190, 193,
+ 195, 197, 198, 201, 202, 205, 206, 210, 213, 214,
+ 216, 217, 221, 223, 226, 228, 230, 232, 234, 236,
+ 238, 241, 243, 246, 252, 258, 264, 270, 274, 277,
+ 283, 288, 291, 293, 295, 297, 301, 303, 307, 309,
+ 310, 312, 316, 321, 325, 329, 334, 339, 343, 350,
+ 356, 359, 362, 365, 368, 371, 374, 377, 380, 383,
+ 386, 393, 399, 408, 415, 422, 430, 438, 445, 454,
+ 463, 467, 469, 471, 473, 475, 476, 478, 481, 482,
+ 486, 487, 491, 495, 497, 501, 505, 506, 513, 514,
+ 522, 523, 531, 534, 538, 540, 544, 548, 552, 556,
+ 558, 559, 565, 569, 571, 575, 577, 578, 588, 590,
+ 592, 597, 599, 601, 604, 608, 609, 611, 613, 615,
+ 617, 619, 621, 623, 625, 627, 631, 633, 639, 641,
+ 643, 645, 647, 649, 651, 654, 657, 660, 664, 667,
+ 668, 670, 673, 676, 680, 690, 700, 709, 724, 726,
+ 728, 735, 741, 744, 751, 759, 763, 769, 770, 771,
+ 775, 778, 780, 786, 792, 799, 806, 811, 818, 823,
+ 828, 835, 842, 845, 854, 856, 858, 859, 863, 870,
+ 874, 881, 884, 889, 896
};
-static const short yydefgoto[] = { 186,
- 187, 188, 189, 252, 269, 109, 110, 70, 492, 12,
- 71, 14, 36, 37, 38, 42, 48, 119, 323, 231,
- 397, 326, 535, 377, 353, 520, 288, 354, 72, 111,
- 128, 196, 129, 130, 101, 276, 366, 277, 79, 565,
- 15, 16, 18, 17, 192, 240, 241, 57, 21, 55,
- 92, 417, 418, 120, 199, 49, 87, 50, 43, 420,
- 367, 74, 369, 293, 51, 83, 84, 225, 539, 123,
- 306, 500, 400, 226, 227, 228, 229
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+ 186, 0, -1, 66, -1, 67, -1, 68, -1, 69,
+ -1, 70, -1, 71, -1, 72, -1, 73, -1, 74,
+ -1, 78, -1, 79, -1, 80, -1, 75, -1, 76,
+ -1, 77, -1, 109, -1, 110, -1, 111, -1, 112,
+ -1, 113, -1, 114, -1, 115, -1, 116, -1, 117,
+ -1, 118, -1, 119, -1, 120, -1, 83, -1, 84,
+ -1, 85, -1, 86, -1, 87, -1, 88, -1, 89,
+ -1, 90, -1, 91, -1, 92, -1, 93, -1, 94,
+ -1, 95, -1, 96, -1, 97, -1, 98, -1, 99,
+ -1, 100, -1, 101, -1, 102, -1, 89, -1, 90,
+ -1, 91, -1, 92, -1, 21, -1, 22, -1, 9,
+ -1, 10, -1, 11, -1, 14, -1, 17, -1, 154,
+ -1, -1, 154, 132, -1, -1, 15, -1, 18, -1,
+ 157, 132, -1, -1, 35, -1, 37, -1, 36, -1,
+ 38, -1, 40, -1, 39, -1, 41, -1, 43, -1,
+ -1, 131, -1, -1, 39, -1, 41, -1, -1, 35,
+ -1, 36, -1, 37, -1, 40, -1, -1, 54, -1,
+ 55, -1, 56, -1, 57, -1, 58, -1, 53, 4,
+ -1, 110, -1, 111, -1, 128, -1, 129, -1, -1,
+ 166, 165, -1, 127, -1, 165, -1, -1, 168, 167,
+ -1, -1, 46, 4, -1, -1, 133, 46, 4, -1,
+ 29, 17, -1, -1, 171, -1, -1, 133, 174, 173,
+ -1, 171, -1, 46, 4, -1, 9, -1, 10, -1,
+ 11, -1, 12, -1, 42, -1, 175, -1, 176, 134,
+ -1, 208, -1, 135, 4, -1, 176, 136, 180, 137,
+ 168, -1, 8, 136, 180, 137, 168, -1, 138, 4,
+ 139, 176, 140, -1, 141, 4, 139, 176, 142, -1,
+ 143, 181, 144, -1, 143, 144, -1, 141, 143, 181,
+ 144, 142, -1, 141, 143, 144, 142, -1, 176, 166,
+ -1, 176, -1, 8, -1, 177, -1, 179, 133, 177,
+ -1, 179, -1, 179, 133, 32, -1, 32, -1, -1,
+ 176, -1, 181, 133, 176, -1, 176, 138, 184, 140,
+ -1, 176, 138, 140, -1, 176, 145, 17, -1, 176,
+ 141, 184, 142, -1, 176, 143, 184, 144, -1, 176,
+ 143, 144, -1, 176, 141, 143, 184, 144, 142, -1,
+ 176, 141, 143, 144, 142, -1, 176, 33, -1, 176,
+ 34, -1, 176, 208, -1, 176, 183, -1, 176, 20,
+ -1, 152, 3, -1, 152, 4, -1, 9, 21, -1,
+ 9, 22, -1, 153, 7, -1, 149, 136, 182, 31,
+ 176, 137, -1, 108, 136, 182, 219, 137, -1, 122,
+ 136, 182, 133, 182, 133, 182, 137, -1, 147, 136,
+ 182, 133, 182, 137, -1, 148, 136, 182, 133, 182,
+ 137, -1, 81, 150, 136, 182, 133, 182, 137, -1,
+ 82, 151, 136, 182, 133, 182, 137, -1, 124, 136,
+ 182, 133, 182, 137, -1, 125, 136, 182, 133, 182,
+ 133, 182, 137, -1, 126, 136, 182, 133, 182, 133,
+ 182, 137, -1, 184, 133, 182, -1, 182, -1, 27,
+ -1, 28, -1, 187, -1, -1, 188, -1, 187, 188,
+ -1, -1, 26, 189, 204, -1, -1, 25, 190, 205,
+ -1, 51, 50, 194, -1, 19, -1, 156, 13, 176,
+ -1, 156, 13, 8, -1, -1, 158, 161, 185, 182,
+ 191, 173, -1, -1, 158, 159, 161, 185, 182, 192,
+ 173, -1, -1, 158, 160, 161, 185, 176, 193, 173,
+ -1, 44, 195, -1, 47, 132, 196, -1, 17, -1,
+ 45, 132, 17, -1, 59, 132, 17, -1, 138, 197,
+ 140, -1, 197, 133, 17, -1, 17, -1, -1, 198,
+ 133, 176, 166, 155, -1, 176, 166, 155, -1, 198,
+ -1, 198, 133, 32, -1, 32, -1, -1, 164, 178,
+ 157, 136, 199, 137, 168, 172, 169, -1, 23, -1,
+ 143, -1, 163, 161, 200, 201, -1, 24, -1, 144,
+ -1, 211, 203, -1, 162, 161, 200, -1, -1, 52,
+ -1, 3, -1, 4, -1, 7, -1, 21, -1, 22,
+ -1, 33, -1, 34, -1, 20, -1, 141, 184, 142,
+ -1, 183, -1, 50, 206, 17, 133, 17, -1, 5,
+ -1, 6, -1, 154, -1, 157, -1, 208, -1, 207,
+ -1, 176, 209, -1, 211, 212, -1, 202, 212, -1,
+ 213, 156, 214, -1, 213, 216, -1, -1, 16, -1,
+ 60, 210, -1, 60, 8, -1, 61, 12, 209, -1,
+ 61, 9, 209, 133, 12, 209, 133, 12, 209, -1,
+ 62, 152, 209, 133, 12, 209, 138, 215, 140, -1,
+ 62, 152, 209, 133, 12, 209, 138, 140, -1, 63,
+ 164, 178, 209, 136, 218, 137, 168, 31, 12, 209,
+ 64, 12, 209, -1, 64, -1, 65, -1, 215, 152,
+ 207, 133, 12, 209, -1, 152, 207, 133, 12, 209,
+ -1, 156, 221, -1, 176, 138, 209, 133, 209, 140,
+ -1, 217, 133, 138, 209, 133, 209, 140, -1, 176,
+ 209, 166, -1, 218, 133, 176, 209, 166, -1, -1,
+ -1, 219, 133, 210, -1, 49, 48, -1, 48, -1,
+ 147, 176, 209, 133, 209, -1, 148, 176, 209, 133,
+ 209, -1, 81, 150, 176, 209, 133, 209, -1, 82,
+ 151, 176, 209, 133, 209, -1, 149, 210, 31, 176,
+ -1, 122, 210, 133, 210, 133, 210, -1, 123, 210,
+ 133, 176, -1, 124, 210, 133, 210, -1, 125, 210,
+ 133, 210, 133, 210, -1, 126, 210, 133, 210, 133,
+ 210, -1, 121, 217, -1, 220, 164, 178, 209, 136,
+ 218, 137, 168, -1, 223, -1, 30, -1, -1, 103,
+ 176, 170, -1, 103, 176, 133, 9, 209, 170, -1,
+ 104, 176, 170, -1, 104, 176, 133, 9, 209, 170,
+ -1, 105, 210, -1, 222, 106, 176, 209, -1, 222,
+ 107, 210, 133, 176, 209, -1, 108, 176, 209, 219,
+ -1
};
-static const short yypact[] = { 356,
--32768,-32768,-32768,-32768,-32768,-32768,-32768, 4, -115, -2,
- -52, 93, -4, 51, 593,-32768, 195, 140, 41, 99,
--32768, 87, 141,-32768, 125,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 128, 128, 47,-32768,-32768,
--32768, 128,-32768,-32768,-32768,-32768,-32768, 128, 251,-32768,
- 17, 262, 264, 269,-32768,-32768,-32768,-32768,-32768, 151,
--32768,-32768,-32768,-32768,-32768, 287, 292, 3, 13,-32768,
--32768,-32768, 113,-32768, 47, 47,-32768,-32768, 840, 290,
- 290,-32768,-32768, 88,-32768,-32768,-32768,-32768,-32768,-32768,
--32768, -90, 1094,-32768, 158, 164, 107, 151,-32768, 113,
- -91,-32768, 1094, 840, 1054, 79, 295, 297, 208, 298,
- 616,-32768, 302,-32768,-32768,-32768,-32768,-32768, 1197,-32768,
- -14, 1319,-32768, 291,-32768,-32768, 113,-32768, 179, 176,
- 1054, 1054, 175, -82, 1054,-32768, 200,-32768, 113,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 241,
- 474, 202,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 205,-32768,-32768,-32768, 213, 214,
- 215, 802, 1213, 460, 335, 218, 221, 232, 236,-32768,
--32768, 245,-32768, 151, 113, 163,-32768,-32768,-32768,-32768,
--32768, 331, 1235, 210, 371, 290,-32768,-32768, 241, 474,
- 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054,
- 1054, 1054, 1054, 1054,-32768, 290,-32768, 181,-32768,-32768,
- -61, 1133,-32768, 26, -64,-32768, 242, 113,-32768, 245,
- 245,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768, 247,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 249, 840,
- 840, 840, 840, 840,-32768,-32768, -30, 517, -10,-32768,
- -40,-32768, 840, 840, 840, 840, 10,-32768, 252,-32768,
- 151, 759,-32768, 884, 884,-32768, 884, 1197, 1054, 1054,
- 19, 144,-32768, 759, 119, 254, 258, 261, 263, 265,
- 266, 759, 759, 364, 268, 1197, 1054, 1054,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, -31,-32768,-32768,-32768, -31,
--32768,-32768, 840, 840,-32768, 271, 273, 275, 276, 840,
--32768, 260, 616, -6,-32768,-32768, 277, 278, 387, 286,
- 404, 420,-32768, 245, 1149,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 374, 840,-32768,-32768,-32768,-32768, 294,
--32768, 296, 884, 759, 759, 20,-32768, 25,-32768,-32768,
- 884, 299, 1054, 1054, 1054, 1054, 1054, 301, 303, 1054,
- 1054, 884, 759, 305,-32768,-32768,-32768, 306, 307, 32,
- 840, 840, 840, 840,-32768,-32768, 300, 840, 840, 1054,
- 840,-32768,-32768,-32768,-32768, 113, 310, 308,-32768, 411,
- 8, 432, 434, 311, 315, 319, 884, 428, 884, 320,
- 322, 884, 323, 113,-32768, 324, 326, 884, 884, 113,
--32768, 325,-32768, 1054, 840, 840, 1054,-32768, 327, 336,
- 330, 343,-32768, 342, 346, 136, 347, 154, 1168,-32768,
- 352,-32768, 884, 884, 1054, 884, 884, 354,-32768, 354,
- 884, 355, 1054, 1054, 1054,-32768,-32768, 1054, 759, 353,
- 357,-32768, 840,-32768, 840, 840,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 113, 56, 447, 365, 359, 759, 73,
--32768,-32768, 454,-32768,-32768, 340, 884,-32768,-32768,-32768,
- 100,-32768,-32768,-32768, 366, 367, 368, 154,-32768, 461,
--32768, 494, 5,-32768, 1054,-32768,-32768, 369,-32768,-32768,
--32768,-32768,-32768, 504,-32768, 884,-32768, 1008, 7, -61,
- 759, 182,-32768, -31,-32768,-32768, 379,-32768, 1008,-32768,
- 501, 502, 382, -61, 884, 884, 505, 452,-32768, 884,
- 507,-32768, 884,-32768, 520, 521,-32768
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const unsigned short int yyrline[] =
+{
+ 0, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
+ 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1035, 1035, 1035,
+ 1035, 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1039,
+ 1039, 1040, 1040, 1041, 1041, 1042, 1042, 1043, 1043, 1047,
+ 1047, 1048, 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1052,
+ 1052, 1053, 1053, 1054, 1055, 1060, 1061, 1061, 1063, 1063,
+ 1064, 1064, 1068, 1072, 1077, 1077, 1079, 1083, 1089, 1090,
+ 1091, 1092, 1093, 1097, 1098, 1099, 1103, 1104, 1108, 1109,
+ 1110, 1114, 1115, 1116, 1117, 1118, 1121, 1122, 1123, 1124,
+ 1125, 1126, 1127, 1134, 1135, 1136, 1137, 1140, 1141, 1146,
+ 1147, 1150, 1151, 1158, 1159, 1165, 1166, 1174, 1182, 1183,
+ 1188, 1189, 1190, 1195, 1208, 1208, 1208, 1208, 1211, 1215,
+ 1219, 1226, 1231, 1239, 1257, 1275, 1280, 1292, 1302, 1306,
+ 1316, 1323, 1330, 1337, 1342, 1347, 1354, 1355, 1362, 1369,
+ 1377, 1382, 1393, 1421, 1437, 1466, 1494, 1519, 1538, 1563,
+ 1582, 1594, 1601, 1667, 1677, 1687, 1693, 1699, 1704, 1709,
+ 1717, 1729, 1750, 1758, 1764, 1775, 1780, 1785, 1791, 1797,
+ 1806, 1810, 1818, 1818, 1829, 1834, 1842, 1843, 1847, 1847,
+ 1851, 1851, 1854, 1857, 1869, 1893, 1904, 1904, 1914, 1914,
+ 1922, 1922, 1932, 1935, 1941, 1954, 1958, 1963, 1965, 1970,
+ 1975, 1984, 1994, 2005, 2009, 2018, 2027, 2032, 2138, 2138,
+ 2140, 2149, 2149, 2151, 2156, 2168, 2172, 2177, 2181, 2185,
+ 2189, 2193, 2197, 2201, 2205, 2209, 2234, 2238, 2252, 2256,
+ 2260, 2264, 2270, 2270, 2276, 2285, 2289, 2298, 2309, 2318,
+ 2330, 2343, 2347, 2351, 2356, 2366, 2385, 2394, 2461, 2465,
+ 2472, 2483, 2496, 2505, 2516, 2526, 2534, 2542, 2545, 2546,
+ 2553, 2557, 2562, 2583, 2600, 2613, 2626, 2638, 2646, 2653,
+ 2659, 2665, 2671, 2686, 2750, 2755, 2759, 2766, 2773, 2781,
+ 2788, 2796, 2804, 2818, 2835
};
+#endif
-static const short yypgoto[] = { 402,
- 408, 414, 415, 329, 332, -203,-32768, 0, 15, 455,
- 11,-32768,-32768,-32768, 204,-32768,-32768, -174, -286, -380,
--32768, -231,-32768, -296, 45,-32768, -228,-32768,-32768, -24,
- 309, -278,-32768, 440, 449, -69, -108, -179, 168,-32768,
--32768, 529,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 467,-32768,-32768,-32768,-32768,-32768,-32768,
- -429, -74, 118, -159,-32768, 498,-32768,-32768,-32768,-32768,
--32768, 74, 171,-32768,-32768,-32768,-32768
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL",
+ "LOCALVAL_ID", "GLOBALVAL_ID", "FPVAL", "VOID", "INTTYPE", "FLOAT",
+ "DOUBLE", "LABEL", "TYPE", "LOCALVAR", "GLOBALVAR", "LABELSTR",
+ "STRINGCONSTANT", "ATSTRINGCONSTANT", "IMPLEMENTATION",
+ "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK",
+ "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO",
+ "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL", "LINKONCE", "WEAK",
+ "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE",
+ "EXTERNAL", "TARGET", "TRIPLE", "ALIGN", "DEPLIBS", "CALL", "TAIL",
+ "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_TOK", "FASTCC_TOK",
+ "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT",
+ "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB",
+ "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR",
+ "XOR", "SHL", "LSHR", "ASHR", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT",
+ "SLE", "SGE", "ULT", "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT",
+ "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE", "MALLOC", "ALLOCA", "FREE",
+ "LOAD", "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT", "SEXT", "FPTRUNC",
+ "FPEXT", "BITCAST", "UITOFP", "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR",
+ "PTRTOINT", "PHI_TOK", "SELECT", "VAARG", "EXTRACTELEMENT",
+ "INSERTELEMENT", "SHUFFLEVECTOR", "NORETURN", "INREG", "SRET", "DEFAULT",
+ "HIDDEN", "'='", "','", "'*'", "'\\\\'", "'('", "')'", "'['", "'x'",
+ "']'", "'<'", "'>'", "'{'", "'}'", "'c'", "$accept", "ArithmeticOps",
+ "LogicalOps", "CastOps", "IPredicates", "FPredicates", "IntType",
+ "FPType", "LocalName", "OptLocalName", "OptLocalAssign", "GlobalName",
+ "OptGlobalAssign", "GVInternalLinkage", "GVExternalLinkage",
+ "GVVisibilityStyle", "FunctionDeclareLinkage", "FunctionDefineLinkage",
+ "OptCallingConv", "ParamAttr", "OptParamAttrs", "FuncAttr",
+ "OptFuncAttrs", "OptAlign", "OptCAlign", "SectionString", "OptSection",
+ "GlobalVarAttributes", "GlobalVarAttribute", "PrimType", "Types",
+ "ArgType", "ResultTypes", "ArgTypeList", "ArgTypeListI", "TypeListI",
+ "ConstVal", "ConstExpr", "ConstVector", "GlobalType", "Module",
+ "DefinitionList", "Definition", "@1", "@2", "@3", "@4", "@5", "AsmBlock",
+ "TargetDefinition", "LibrariesDefinition", "LibList", "ArgListH",
+ "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader", "END",
+ "Function", "FunctionProto", "OptSideEffect", "ConstValueRef",
+ "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList",
+ "BasicBlock", "InstructionList", "BBTerminatorInst", "JumpTable", "Inst",
+ "PHIList", "ValueRefList", "IndexList", "OptTailCall", "InstVal",
+ "OptVolatile", "MemoryInst", 0
};
+#endif
-
-#define YYLAST 1445
-
-
-static const short yytable[] = { 11,
- 73, 297, 190, 279, 281, 379, 96, 330, 197, 112,
- 13, 331, 332, 296, 11, 296, 22, 58, 59, 373,
- 98, 61, 62, 63, 64, 13, 1, 2, 427, 3,
- 4, 298, 82, 429, 138, 458, 191, 392, 351, 396,
- 85, 135, 124, 396, 100, 319, 320, 23, 19, 125,
- 135, 316, 136, 303, 65, 352, 307, 308, 309, 310,
- 311, 237, 20, 314, 315, 428, 321, 322, 127, 102,
- 428, 103, 100, 77, 78, 319, 320, 328, 127, 24,
- 139, -54, -54, 11, 351, 27, 28, 29, 30, 31,
- 32, 33, 340, 34, 195, 395, 321, 322, 344, 140,
- 141, 1, 340, 346, 3, 25, 234, 235, 547, 341,
- 238, 58, 59, 518, 98, 61, 62, 63, 64, 553,
- 1, 2, 340, 3, 4, 414, 340, 26, 198, 58,
- 59, 345, 60, 61, 62, 63, 64, 407, 1, 2,
- 340, 3, 4, 540, 537, 97, 548, 66, 65, 462,
- 67, 376, 102, 68, 103, 69, 99, 56, 394, 102,
- 86, 103, 319, 320, 447, 327, 65, 1, 448, 554,
- 3, 504, 52, 505, 44, 45, 46, 2, 292, 47,
- 4, 35, 395, 321, 322, 421, 301, 302, 292, 304,
- 305, 292, 292, 292, 292, 292, 312, 313, 292, 292,
- 335, 336, 337, 338, 339, 525, 289, 127, 396, 526,
- 142, 143, 551, 347, 348, 349, 350, 368, 294, 368,
- 368, 295, 368, 433, 54, 435, 436, 437, 495, 368,
- 53, 441, 525, 40, 190, 41, 529, 368, 368, 75,
- 76, 66, 104, 105, 67, 80, 102, 68, 103, 69,
- 133, 81, 102, 343, 103, 396, 381, 396, 35, 66,
- 319, 320, 67, 398, 399, 68, 82, 69, 191, 102,
- 405, 103, 489, 195, 374, 375, 378, 102, 89, 103,
- 90, 321, 322, 317, 318, 91, 93, 482, 319, 320,
- 94, 195, 393, 292, 542, 95, 131, 544, 368, 368,
- 368, -55, 132, -56, 144, 193, 368, 230, 395, 321,
- 322, 232, 233, 508, 509, 510, 236, 368, 368, 538,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 416, 449, 450, 451, 452, 549, 239, 270, 454, 455,
- 271, 457, 113, 114, 115, 116, 117, 118, 272, 273,
- 274, 282, 368, 283, 368, -175, 284, 368, 292, 434,
- 292, 292, 292, 368, 368, 440, 292, 285, -62, 1,
- 2, 286, 3, 4, 5, 480, 481, 287, 290, 296,
- 6, 7, 333, 329, 334, 456, 382, 355, 368, 368,
- 383, 368, 368, 384, 390, 385, 368, 386, 387, 8,
- 391, 406, 9, 401, 368, 402, 10, 403, 404, 408,
- 409, 370, 371, 515, 372, 516, 517, 410, 411, 479,
- 412, 380, 292, 413, 368, 419, 422, 461, 423, 388,
- 389, 469, 368, 438, 494, 439, 432, 444, 445, 446,
- 499, 453, 459, 463, 460, 464, 465, 466, 292, 292,
- 292, 467, 447, 499, 471, 473, 474, 491, 475, 483,
- 478, 368, 485, 521, 58, 59, 368, 98, 106, 107,
- 108, 64, 484, 1, 2, 486, 3, 4, 487, 527,
- 368, 368, 488, 490, 496, 368, 503, 507, 368, 513,
- 424, 425, 426, 514, 253, 254, 523, 522, 431, 428,
- 541, 65, 530, 531, 532, 536, 534, 545, 543, 442,
- 443, 552, 555, 556, 557, 561, 560, 491, 563, 566,
- 567, 58, 59, 221, 98, 106, 107, 108, 64, 222,
- 1, 2, 533, 3, 4, 223, 224, 299, 122, 519,
- 325, 300, 137, 39, 468, 134, 470, 121, 88, 472,
- 430, 511, 0, 0, 0, 476, 477, 0, 65, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 0, 0, 0, 0, 0, 0, 0,
- 497, 498, 0, 501, 502, 0, 0, 0, 506, 0,
- 0, 0, -174, 0, 66, 0, 512, 67, 0, 0,
- 68, 0, 69, 280, 0, -62, 1, 2, 0, 3,
- 4, 5, 0, 0, 0, 0, 524, 6, 7, 0,
- 58, 59, 0, 0, 528, 0, 0, 0, 0, 1,
- 2, 0, 3, 4, 0, 145, 8, 0, 0, 9,
- 0, 0, 0, 10, 0, 0, 0, 0, 146, 147,
- 0, 66, 0, 546, 67, 0, 0, 68, 550, 69,
- 342, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 558, 559, 0, 0, 0, 562, 0, 0,
- 564, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 0, 175, 176, 177, 178, 0, 179,
- 180, 181, 0, 0, 0, 0, 0, 0, 0, 102,
- 0, 103, 0, 182, 0, 0, 183, 0, 184, 0,
- 185, 356, 357, 58, 59, 358, 0, 0, 0, 0,
- 0, 0, 1, 2, 0, 3, 4, 0, 359, 360,
- 361, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 362, 363, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 58, 59, 364, 98,
- 106, 107, 108, 64, 0, 1, 2, 0, 3, 4,
- 0, 0, 0, 0, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 0, 0,
- 0, 0, 0, 65, 58, 59, 0, 98, 106, 107,
- 108, 64, 0, 1, 2, 0, 3, 4, 0, 0,
- 0, 0, 0, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 0, 175, 176, 177,
- 178, 65, 179, 180, 181, 0, 356, 357, 58, 59,
- 358, 0, 102, 0, 103, 0, 0, 1, 2, 365,
- 3, 4, 0, 359, 360, 361, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 362, 363, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 364, 0, 0, 66, 0, 0, 67,
- 0, 275, 68, 0, 69, 0, 0, 0, 0, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 0, 0, 67, 0, 0,
- 68, 0, 69, 0, 0, 0, 0, 0, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 0, 175, 176, 177, 178, 0, 179, 180, 181,
- 356, 357, 0, 0, 358, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 365, 0, 0, 359, 360, 361,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 362, 363, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 364, 58, 59,
- 0, 98, 61, 62, 63, 64, 0, 1, 2, 0,
- 3, 4, 0, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 0, 0, 0,
- 0, 0, 0, 0, 0, 65, 0, 0, 58, 59,
- 0, 98, 61, 62, 63, 64, 0, 1, 2, 0,
- 3, 4, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 126, 175, 176, 177, 178,
- 0, 179, 180, 181, 0, 65, 0, 58, 59, 0,
- 98, 61, 62, 63, 64, 0, 1, 2, 365, 3,
- 4, 0, 0, 58, 59, 0, 98, 61, 62, 63,
- 64, 0, 1, 2, 324, 3, 4, 0, 0, 0,
- 0, 0, 58, 59, 65, 98, 61, 62, 63, 64,
- 415, 1, 2, 0, 3, 4, 0, 0, 66, 0,
- 65, 67, 0, 0, 68, 0, 69, 0, 0, 493,
- 0, 58, 59, 0, 194, 61, 62, 63, 64, 65,
- 1, 2, 0, 3, 4, 0, 0, 58, 59, 0,
- 98, 106, 107, 108, 64, 0, 1, 2, 66, 3,
- 4, 67, 0, 0, 68, 0, 69, 0, 65, 58,
- 59, 0, 291, 61, 62, 63, 64, 0, 1, 2,
- 0, 3, 4, 0, 65, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
- 67, 0, 0, 68, 0, 69, 65, 0, 0, 0,
- 0, 0, 0, 66, 0, 0, 67, 0, 0, 68,
- 0, 69, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 67, 0, 0, 68, 0,
- 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 66, 0, 0, 67, 0, 0, 68, 0, 69,
- 0, 0, 0, 0, 0, 0, 0, 66, 200, 0,
- 67, 0, 0, 68, 0, 278, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 201, 202, 0, 66,
- 0, 0, 67, 0, 0, 68, 0, 69, 203, 204,
- 205, 206, 207, 208, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 209, 210, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 211, 212,
- 213, 0, 0, 214, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 215, 216, 176, 177,
- 178, 217, 218, 219, 220
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const unsigned short int yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 61, 44, 42, 92, 40, 41, 91, 120,
+ 93, 60, 62, 123, 125, 99
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const unsigned char yyr1[] =
+{
+ 0, 146, 147, 147, 147, 147, 147, 147, 147, 147,
+ 147, 148, 148, 148, 148, 148, 148, 149, 149, 149,
+ 149, 149, 149, 149, 149, 149, 149, 149, 149, 150,
+ 150, 150, 150, 150, 150, 150, 150, 150, 150, 151,
+ 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+ 151, 151, 151, 151, 151, 152, 153, 153, 154, 154,
+ 155, 155, 156, 156, 157, 157, 158, 158, 159, 159,
+ 159, 159, 159, 160, 160, 160, 161, 161, 162, 162,
+ 162, 163, 163, 163, 163, 163, 164, 164, 164, 164,
+ 164, 164, 164, 165, 165, 165, 165, 166, 166, 167,
+ 167, 168, 168, 169, 169, 170, 170, 171, 172, 172,
+ 173, 173, 174, 174, 175, 175, 175, 175, 176, 176,
+ 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
+ 176, 177, 178, 178, 179, 179, 180, 180, 180, 180,
+ 181, 181, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
+ 184, 184, 185, 185, 186, 186, 187, 187, 189, 188,
+ 190, 188, 188, 188, 188, 188, 191, 188, 192, 188,
+ 193, 188, 188, 188, 194, 195, 195, 196, 197, 197,
+ 197, 198, 198, 199, 199, 199, 199, 200, 201, 201,
+ 202, 203, 203, 204, 205, 206, 206, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 208, 208,
+ 208, 208, 209, 209, 210, 211, 211, 212, 213, 213,
+ 213, 214, 214, 214, 214, 214, 214, 214, 214, 214,
+ 215, 215, 216, 217, 217, 218, 218, 218, 219, 219,
+ 220, 220, 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 222, 222, 223, 223, 223,
+ 223, 223, 223, 223, 223
};
-static const short yycheck[] = { 0,
- 25, 205, 111, 183, 184, 302, 4, 239, 23, 79,
- 0, 240, 241, 9, 15, 9, 132, 5, 6, 298,
- 8, 9, 10, 11, 12, 15, 14, 15, 9, 17,
- 18, 206, 16, 9, 104, 416, 111, 316, 29, 326,
- 24, 133, 133, 330, 69, 107, 108, 50, 45, 140,
- 133, 226, 144, 213, 42, 46, 216, 217, 218, 219,
- 220, 144, 59, 223, 224, 46, 128, 129, 93, 134,
- 46, 136, 97, 27, 28, 107, 108, 142, 103, 132,
- 105, 3, 4, 84, 29, 35, 36, 37, 38, 39,
- 40, 41, 133, 43, 119, 127, 128, 129, 278, 21,
- 22, 14, 133, 144, 17, 13, 131, 132, 538, 140,
- 135, 5, 6, 494, 8, 9, 10, 11, 12, 549,
- 14, 15, 133, 17, 18, 354, 133, 132, 143, 5,
- 6, 142, 8, 9, 10, 11, 12, 144, 14, 15,
- 133, 17, 18, 524, 140, 143, 140, 135, 42, 142,
- 138, 133, 134, 141, 136, 143, 144, 17, 318, 134,
- 144, 136, 107, 108, 133, 140, 42, 14, 137, 550,
- 17, 468, 132, 470, 35, 36, 37, 15, 203, 40,
- 18, 131, 127, 128, 129, 365, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 270, 271, 272, 273, 274, 133, 196, 232, 495, 137,
- 3, 4, 31, 283, 284, 285, 286, 292, 9, 294,
- 295, 12, 297, 383, 138, 385, 386, 387, 460, 304,
- 132, 391, 133, 39, 343, 41, 137, 312, 313, 36,
- 37, 135, 75, 76, 138, 42, 134, 141, 136, 143,
- 144, 48, 134, 278, 136, 542, 138, 544, 131, 135,
- 107, 108, 138, 333, 334, 141, 16, 143, 343, 134,
- 340, 136, 137, 298, 299, 300, 133, 134, 17, 136,
- 17, 128, 129, 103, 104, 17, 136, 447, 107, 108,
- 4, 316, 317, 318, 526, 4, 139, 529, 373, 374,
- 375, 7, 139, 7, 7, 4, 381, 17, 127, 128,
- 129, 133, 137, 473, 474, 475, 142, 392, 393, 523,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 355, 401, 402, 403, 404, 539, 137, 136, 408, 409,
- 136, 411, 53, 54, 55, 56, 57, 58, 136, 136,
- 136, 17, 427, 136, 429, 0, 136, 432, 383, 384,
- 385, 386, 387, 438, 439, 390, 391, 136, 13, 14,
- 15, 136, 17, 18, 19, 445, 446, 133, 48, 9,
- 25, 26, 136, 142, 136, 410, 133, 136, 463, 464,
- 133, 466, 467, 133, 31, 133, 471, 133, 133, 44,
- 133, 142, 47, 133, 479, 133, 51, 133, 133, 133,
- 133, 294, 295, 483, 297, 485, 486, 31, 133, 444,
- 17, 304, 447, 4, 499, 52, 133, 17, 133, 312,
- 313, 4, 507, 133, 459, 133, 138, 133, 133, 133,
- 465, 142, 133, 12, 137, 12, 136, 133, 473, 474,
- 475, 133, 133, 478, 133, 133, 133, 458, 133, 133,
- 136, 536, 133, 17, 5, 6, 541, 8, 9, 10,
- 11, 12, 137, 14, 15, 133, 17, 18, 137, 140,
- 555, 556, 137, 137, 133, 560, 133, 133, 563, 137,
- 373, 374, 375, 137, 21, 22, 138, 133, 381, 46,
- 525, 42, 137, 137, 137, 12, 46, 4, 140, 392,
- 393, 133, 12, 12, 133, 64, 12, 518, 12, 0,
- 0, 5, 6, 122, 8, 9, 10, 11, 12, 122,
- 14, 15, 518, 17, 18, 122, 122, 209, 84, 495,
- 232, 210, 103, 15, 427, 97, 429, 81, 51, 432,
- 380, 478, -1, -1, -1, 438, 439, -1, 42, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, -1, -1, -1, -1, -1, -1, -1,
- 463, 464, -1, 466, 467, -1, -1, -1, 471, -1,
- -1, -1, 0, -1, 135, -1, 479, 138, -1, -1,
- 141, -1, 143, 144, -1, 13, 14, 15, -1, 17,
- 18, 19, -1, -1, -1, -1, 499, 25, 26, -1,
- 5, 6, -1, -1, 507, -1, -1, -1, -1, 14,
- 15, -1, 17, 18, -1, 20, 44, -1, -1, 47,
- -1, -1, -1, 51, -1, -1, -1, -1, 33, 34,
- -1, 135, -1, 536, 138, -1, -1, 141, 541, 143,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 555, 556, -1, -1, -1, 560, -1, -1,
- 563, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, -1, 119, 120, 121, 122, -1, 124,
- 125, 126, -1, -1, -1, -1, -1, -1, -1, 134,
- -1, 136, -1, 138, -1, -1, 141, -1, 143, -1,
- 145, 3, 4, 5, 6, 7, -1, -1, -1, -1,
- -1, -1, 14, 15, -1, 17, 18, -1, 20, 21,
- 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 33, 34, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5, 6, 50, 8,
- 9, 10, 11, 12, -1, 14, 15, -1, 17, 18,
- -1, -1, -1, -1, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, -1, -1,
- -1, -1, -1, 42, 5, 6, -1, 8, 9, 10,
- 11, 12, -1, 14, 15, -1, 17, 18, -1, -1,
- -1, -1, -1, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, -1, 119, 120, 121,
- 122, 42, 124, 125, 126, -1, 3, 4, 5, 6,
- 7, -1, 134, -1, 136, -1, -1, 14, 15, 141,
- 17, 18, -1, 20, 21, 22, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 33, 34, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 50, -1, -1, 135, -1, -1, 138,
- -1, 140, 141, -1, 143, -1, -1, -1, -1, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, 138, -1, -1,
- 141, -1, 143, -1, -1, -1, -1, -1, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, -1, 119, 120, 121, 122, -1, 124, 125, 126,
- 3, 4, -1, -1, 7, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 141, -1, -1, 20, 21, 22,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 33, 34, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 50, 5, 6,
- -1, 8, 9, 10, 11, 12, -1, 14, 15, -1,
- 17, 18, -1, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, -1, -1, -1,
- -1, -1, -1, -1, -1, 42, -1, -1, 5, 6,
- -1, 8, 9, 10, 11, 12, -1, 14, 15, -1,
- 17, 18, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 32, 119, 120, 121, 122,
- -1, 124, 125, 126, -1, 42, -1, 5, 6, -1,
- 8, 9, 10, 11, 12, -1, 14, 15, 141, 17,
- 18, -1, -1, 5, 6, -1, 8, 9, 10, 11,
- 12, -1, 14, 15, 32, 17, 18, -1, -1, -1,
- -1, -1, 5, 6, 42, 8, 9, 10, 11, 12,
- 32, 14, 15, -1, 17, 18, -1, -1, 135, -1,
- 42, 138, -1, -1, 141, -1, 143, -1, -1, 32,
- -1, 5, 6, -1, 8, 9, 10, 11, 12, 42,
- 14, 15, -1, 17, 18, -1, -1, 5, 6, -1,
- 8, 9, 10, 11, 12, -1, 14, 15, 135, 17,
- 18, 138, -1, -1, 141, -1, 143, -1, 42, 5,
- 6, -1, 8, 9, 10, 11, 12, -1, 14, 15,
- -1, 17, 18, -1, 42, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- 138, -1, -1, 141, -1, 143, 42, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, 138, -1, -1, 141,
- -1, 143, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, 138, -1, -1, 141, -1,
- 143, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, 138, -1, -1, 141, -1, 143,
- -1, -1, -1, -1, -1, -1, -1, 135, 30, -1,
- 138, -1, -1, 141, -1, 143, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 48, 49, -1, 135,
- -1, -1, 138, -1, -1, 141, -1, 143, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 100, 101,
- 102, -1, -1, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const unsigned char yyr2[] =
+{
+ 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 2, 0, 1, 1, 2, 0, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
+ 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,
+ 1, 1, 2, 1, 1, 1, 1, 0, 2, 1,
+ 1, 0, 2, 0, 2, 0, 3, 2, 0, 1,
+ 0, 3, 1, 2, 1, 1, 1, 1, 1, 1,
+ 2, 1, 2, 5, 5, 5, 5, 3, 2, 5,
+ 4, 2, 1, 1, 1, 3, 1, 3, 1, 0,
+ 1, 3, 4, 3, 3, 4, 4, 3, 6, 5,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 6, 5, 8, 6, 6, 7, 7, 6, 8, 8,
+ 3, 1, 1, 1, 1, 0, 1, 2, 0, 3,
+ 0, 3, 3, 1, 3, 3, 0, 6, 0, 7,
+ 0, 7, 2, 3, 1, 3, 3, 3, 3, 1,
+ 0, 5, 3, 1, 3, 1, 0, 9, 1, 1,
+ 4, 1, 1, 2, 3, 0, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 1, 5, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 3, 2, 0,
+ 1, 2, 2, 3, 9, 9, 8, 14, 1, 1,
+ 6, 5, 2, 6, 7, 3, 5, 0, 0, 3,
+ 2, 1, 5, 5, 6, 6, 4, 6, 4, 4,
+ 6, 6, 2, 8, 1, 1, 0, 3, 6, 3,
+ 6, 2, 4, 6, 4
};
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/share/bison.simple"
-/* This file comes from bison-1.28. */
-/* Skeleton output parser for bison,
- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const unsigned short int yydefact[] =
+{
+ 67, 58, 64, 59, 65, 183, 180, 178, 0, 0,
+ 0, 0, 0, 0, 76, 0, 67, 176, 78, 81,
+ 0, 0, 192, 0, 0, 62, 0, 66, 68, 70,
+ 69, 71, 73, 72, 74, 75, 77, 76, 76, 0,
+ 1, 177, 79, 80, 76, 181, 82, 83, 84, 85,
+ 76, 239, 179, 239, 0, 0, 200, 193, 194, 182,
+ 228, 229, 185, 114, 115, 116, 117, 118, 0, 0,
+ 0, 0, 230, 231, 119, 184, 121, 0, 0, 172,
+ 173, 0, 86, 86, 240, 236, 63, 211, 212, 213,
+ 235, 195, 196, 199, 0, 139, 122, 0, 0, 0,
+ 0, 128, 140, 0, 120, 139, 0, 0, 114, 115,
+ 116, 0, 0, 0, 186, 0, 87, 88, 89, 90,
+ 91, 0, 214, 0, 276, 238, 0, 197, 138, 97,
+ 134, 136, 0, 0, 0, 0, 0, 0, 127, 0,
+ 188, 190, 157, 158, 155, 156, 159, 154, 150, 151,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 14,
+ 15, 16, 11, 12, 13, 0, 0, 0, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 153, 152, 110, 92, 133, 132, 0, 208, 209,
+ 210, 275, 261, 0, 0, 0, 0, 86, 248, 249,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 237, 86, 252, 0, 274,
+ 198, 131, 0, 101, 0, 0, 130, 0, 141, 101,
+ 110, 110, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 0, 53, 54, 49, 50, 51, 52, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 0,
+ 0, 0, 0, 0, 0, 143, 171, 0, 0, 0,
+ 147, 0, 144, 0, 0, 0, 0, 187, 0, 260,
+ 242, 0, 241, 0, 0, 55, 0, 0, 0, 0,
+ 105, 105, 281, 0, 0, 272, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 93, 94, 95,
+ 96, 98, 137, 135, 124, 125, 126, 129, 123, 189,
+ 191, 0, 0, 258, 0, 0, 0, 0, 0, 142,
+ 128, 140, 0, 145, 146, 0, 0, 0, 0, 0,
+ 112, 110, 206, 217, 218, 219, 224, 220, 221, 222,
+ 223, 215, 0, 226, 233, 232, 234, 0, 243, 0,
+ 0, 0, 0, 0, 277, 0, 279, 258, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 99, 100, 102, 0, 0, 0, 0, 0, 0,
+ 0, 170, 149, 0, 0, 0, 0, 107, 113, 111,
+ 205, 97, 203, 0, 216, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 284, 0, 0, 0, 268,
+ 269, 0, 0, 0, 0, 266, 0, 282, 0, 0,
+ 0, 0, 161, 0, 0, 0, 0, 148, 0, 0,
+ 0, 61, 0, 101, 0, 225, 0, 0, 257, 0,
+ 0, 105, 106, 105, 0, 0, 0, 0, 0, 262,
+ 263, 257, 0, 0, 0, 259, 0, 167, 0, 0,
+ 163, 164, 160, 60, 202, 204, 97, 108, 0, 0,
+ 0, 0, 0, 264, 265, 0, 278, 280, 0, 0,
+ 267, 270, 271, 0, 283, 165, 166, 0, 0, 0,
+ 61, 109, 103, 227, 0, 0, 97, 0, 101, 253,
+ 0, 101, 162, 168, 169, 201, 0, 207, 0, 246,
+ 0, 0, 255, 0, 0, 254, 273, 104, 244, 0,
+ 245, 0, 97, 0, 0, 0, 256, 0, 0, 0,
+ 0, 251, 0, 0, 250, 0, 247
+};
- This program 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 2, or (at your option)
- any later version.
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+ -1, 188, 189, 190, 252, 269, 111, 112, 72, 484,
+ 12, 73, 14, 37, 38, 39, 44, 50, 121, 321,
+ 231, 393, 324, 527, 374, 350, 512, 287, 351, 74,
+ 113, 130, 197, 131, 132, 103, 276, 363, 277, 81,
+ 15, 16, 17, 19, 18, 193, 240, 241, 59, 22,
+ 57, 94, 412, 413, 122, 200, 51, 89, 52, 45,
+ 415, 364, 76, 366, 292, 53, 85, 86, 225, 531,
+ 125, 305, 492, 396, 226, 227, 228, 229
+};
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -399
+static const short int yypact[] =
+{
+ 406, -399, -399, -399, -399, -399, -399, -399, -26, -114,
+ -16, -53, 92, -11, 54, 136, 526, -399, 247, 173,
+ 43, 49, -399, 62, 194, -399, 814, -399, -399, -399,
+ -399, -399, -399, -399, -399, -399, -399, 134, 134, 99,
+ -399, -399, -399, -399, 134, -399, -399, -399, -399, -399,
+ 134, 212, -399, -1, 219, 225, 253, -399, -399, -399,
+ -399, -399, 135, -399, -399, -399, -399, -399, 271, 275,
+ 3, 33, -399, -399, -399, 160, -399, 99, 99, -399,
+ -399, 1029, 287, 287, -399, -399, 220, -399, -399, -399,
+ -399, -399, -399, -399, 20, 1071, -399, 141, 148, 105,
+ 135, -399, 160, -75, -399, 1071, 1029, 1174, 32, 286,
+ 293, 151, 294, 590, -399, 298, -399, -399, -399, -399,
+ -399, 1190, -399, -13, 1313, -399, 289, -399, -399, 160,
+ -399, 170, 167, 1174, 1174, 165, -68, 1174, -399, 174,
+ -399, 160, -399, -399, -399, -399, -399, -399, -399, -399,
+ -399, -399, -399, -399, -399, -399, -399, -399, -399, -399,
+ -399, -399, -399, -399, -399, 495, 591, 176, -399, -399,
+ -399, -399, -399, -399, -399, -399, -399, -399, -399, -399,
+ 177, 178, 182, 183, 776, 1212, 123, 305, 187, 188,
+ 189, -399, -399, 193, -399, 135, 160, 266, -399, -399,
+ -399, -399, -399, 284, 1229, 283, 325, 287, -399, -399,
+ 495, 591, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
+ 1174, 1174, 1174, 1174, 1174, -399, 287, -399, 144, -399,
+ -399, -4, 1110, -399, -63, -110, -399, 204, 160, -399,
+ 193, 193, -399, -399, -399, -399, -399, -399, -399, -399,
+ -399, -399, 211, -399, -399, -399, -399, -399, -399, -399,
+ -399, -399, -399, -399, -399, -399, -399, -399, -399, 214,
+ 1029, 1029, 1029, 1029, 1029, -399, -399, 79, 494, -111,
+ -399, -66, -399, 1029, 1029, 1029, 39, -399, 216, -399,
+ 135, 733, -399, 858, 858, -399, 858, 1190, 1174, 1174,
+ 50, 111, -399, 733, 97, 215, 230, 231, 232, 233,
+ 234, 733, 733, 322, 1190, 1174, 1174, -399, -399, -399,
+ -399, -399, -399, -399, -27, -399, -399, -399, -27, -399,
+ -399, 1029, 1029, -399, 235, 236, 239, 240, 1029, -399,
+ 237, 590, 26, -399, -399, 241, 242, 345, 360, 374,
+ -399, 193, 1126, -399, -399, -399, -399, -399, -399, -399,
+ -399, 328, 1029, -399, -399, -399, -399, 249, -399, 252,
+ 858, 733, 733, 11, -399, 18, -399, -399, 858, 250,
+ 1174, 1174, 1174, 1174, 1174, 256, 257, 1174, 858, 733,
+ 259, -399, -399, -399, 262, 264, -34, 1029, 1029, 1029,
+ 1029, -399, -399, 258, 1029, 1029, 1174, -399, -399, -399,
+ -399, 160, 265, 267, -399, 384, -61, 390, 393, 272,
+ 281, 282, 858, 413, 858, 295, 296, 858, 297, 160,
+ -399, 301, 302, 858, 858, 160, 300, -399, 1174, 1029,
+ 1029, 1174, -399, 304, 285, 306, 307, -399, 308, 310,
+ 118, 38, 1145, -399, 311, -399, 858, 858, 1174, 858,
+ 858, 315, -399, 315, 858, 316, 1174, 1174, 1174, -399,
+ -399, 1174, 733, 317, 319, -399, 1029, -399, 1029, 1029,
+ -399, -399, -399, -399, -399, -399, 160, 149, 421, 326,
+ 314, 733, 19, -399, -399, 412, -399, -399, 321, 858,
+ -399, -399, -399, 36, -399, -399, -399, 327, 329, 330,
+ 38, -399, 416, -399, 451, 2, -399, 1174, -399, -399,
+ 333, -399, -399, -399, -399, -399, 461, -399, 858, -399,
+ 982, 5, -4, 733, 210, -399, -27, -399, -399, 335,
+ -399, 982, -399, 457, 464, 344, -4, 858, 858, 468,
+ 417, -399, 858, 471, -399, 858, -399
+};
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+/* YYPGOTO[NTERM-NUM]. */
+static const short int yypgoto[] =
+{
+ -399, 361, 362, 363, 274, 279, -198, -399, 0, -19,
+ 407, 9, -399, -399, -399, 113, -399, -399, -177, -307,
+ -398, -399, -236, -399, -299, 7, -399, -212, -399, -399,
+ -25, 263, -210, -399, 391, 398, -69, -109, -180, 179,
+ -399, -399, 482, -399, -399, -399, -399, -399, -399, -399,
+ -399, -399, -399, -399, 418, -399, -399, -399, -399, -399,
+ -399, -369, -73, 100, -158, -399, 454, -399, -399, -399,
+ -399, -399, 42, 137, -399, -399, -399, -399
+};
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -176
+static const short int yytable[] =
+{
+ 11, 75, 376, 328, 191, 279, 281, 98, 296, 13,
+ 198, 295, 114, 451, 295, 84, 11, 392, 23, 20,
+ 422, 392, 338, 87, 104, 13, 105, 424, 329, 330,
+ 297, 343, 326, 21, 24, -55, -55, 140, 60, 61,
+ 192, 100, 63, 64, 65, 66, 102, 1, 2, 314,
+ 3, 4, 1, 142, 143, 3, 302, 423, 137, 306,
+ 307, 308, 309, 310, 423, 137, 313, 338, 348, 138,
+ 129, 104, 338, 105, 102, 67, 237, 325, 344, 25,
+ 129, 455, 141, 317, 318, 349, 11, 370, 510, 28,
+ 29, 30, 31, 32, 33, 34, 196, 35, 342, 441,
+ 391, 319, 320, 442, 388, 26, 317, 318, 234, 235,
+ 60, 61, 238, 100, 63, 64, 65, 66, 532, 1,
+ 2, 27, 3, 4, 319, 320, 79, 80, 60, 61,
+ 199, 100, 108, 109, 110, 66, 40, 1, 2, 409,
+ 3, 4, 529, 88, 546, 540, 99, 67, 317, 318,
+ 77, 78, 517, 126, 144, 145, 518, 82, 390, 338,
+ 127, 539, 496, 83, 497, 67, 319, 320, 68, 517,
+ 403, 69, 545, 521, 70, 54, 71, 101, 348, 291,
+ 392, 55, 416, 373, 104, 36, 105, 300, 301, 291,
+ 303, 304, 291, 291, 291, 291, 291, 311, 312, 291,
+ 56, 333, 334, 335, 336, 337, 288, 129, 46, 47,
+ 48, 58, 338, 49, 345, 346, 347, 487, 365, 339,
+ 365, 365, 428, 365, 430, 431, 432, 392, 84, 392,
+ 365, 104, 191, 105, 1, 378, 91, 3, 365, 365,
+ 68, 543, 92, 69, 375, 104, 70, 105, 71, 135,
+ 315, 316, 104, 341, 105, 482, 106, 107, 68, 317,
+ 318, 69, 394, 395, 70, 36, 71, 280, 192, 401,
+ 93, 95, 196, 371, 372, 96, 391, 319, 320, 97,
+ 133, 2, 534, 475, 4, 536, 42, 134, 43, 196,
+ 389, 291, 293, -56, 104, 294, 105, 365, 365, 365,
+ -57, 146, 194, 232, 233, 365, 230, 236, 500, 501,
+ 502, 239, 270, 271, 272, 365, 365, 530, 273, 274,
+ 317, 318, 282, 283, 284, 285, 286, 411, 443, 444,
+ 445, 446, 289, 541, 295, 448, 449, 391, 319, 320,
+ 115, 116, 117, 118, 119, 120, 327, 331, 379, 365,
+ 332, 365, 352, 387, 365, 291, 429, 291, 291, 291,
+ 365, 365, 435, 380, 381, 382, 383, 384, 397, 398,
+ 473, 474, 399, 400, 404, 405, 406, 407, 408, 402,
+ 414, 450, 417, 365, 365, 418, 365, 365, 427, 433,
+ 434, 365, 438, 367, 368, 439, 369, 440, 452, 365,
+ 447, 454, 456, 377, 453, 457, -175, 507, 458, 508,
+ 509, 385, 386, 472, 459, 460, 291, 462, 365, -63,
+ 1, 2, 477, 3, 4, 5, 365, 486, 441, 464,
+ 466, 6, 7, 491, 467, 468, 471, 476, 513, 478,
+ 479, 291, 291, 291, 488, 480, 491, 481, 495, 499,
+ 8, 483, 515, 9, 505, 365, 506, 10, 423, 514,
+ 365, 519, 526, 528, 522, 537, 523, 524, 544, 547,
+ 419, 420, 421, 535, 365, 365, 548, 549, 426, 365,
+ 552, 553, 365, 555, 298, 222, 223, 224, 436, 437,
+ 299, 525, 533, 124, 511, 323, 139, 136, 41, 60,
+ 61, 123, 100, 108, 109, 110, 66, 90, 1, 2,
+ 483, 3, 4, 503, 425, 0, 0, 0, 0, 0,
+ 0, 0, 461, 0, 463, 0, -174, 465, 0, 0,
+ 0, 0, 0, 469, 470, 0, 67, 0, 0, -63,
+ 1, 2, 0, 3, 4, 5, 0, 0, 0, 0,
+ 0, 6, 7, 0, 0, 0, 489, 490, 0, 493,
+ 494, 0, 0, 0, 498, 0, 0, 0, 0, 0,
+ 8, 0, 504, 9, 0, 0, 0, 10, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 0, 0,
+ 0, 516, 0, 0, 0, 60, 61, 0, 0, 520,
+ 0, 0, 0, 0, 1, 2, 0, 3, 4, 0,
+ 147, 0, 253, 254, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 149, 0, 0, 0, 538, 68,
+ 0, 0, 69, 542, 0, 70, 0, 71, 340, 0,
+ 0, 0, 0, 0, 0, 0, 0, 550, 551, 0,
+ 0, 0, 554, 0, 0, 556, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 0, 0, 0, 0, 0, 0, 0,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 0, 0, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 0, 181, 182, 183, 0, 0, 0,
+ 0, 0, 0, 0, 104, 0, 105, 0, 184, 0,
+ 0, 185, 0, 186, 0, 187, 353, 354, 60, 61,
+ 355, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 3, 4, 0, 356, 357, 358, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 359, 360, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 60, 61, 361, 100, 108, 109, 110, 66, 0,
+ 1, 2, 0, 3, 4, 0, 0, 0, 0, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 0, 0, 67, 60,
+ 61, 0, 62, 63, 64, 65, 66, 0, 1, 2,
+ 0, 3, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 67, 181, 182, 183,
+ 0, 353, 354, 60, 61, 355, 0, 104, 0, 105,
+ 0, 0, 1, 2, 362, 3, 4, 0, 356, 357,
+ 358, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 359, 360, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 361, 0,
+ 0, 68, 0, 0, 69, 0, 275, 70, 0, 71,
+ 0, 0, 0, 0, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 0, 0, 69, 0, 0, 70, 0, 71, 0, 0,
+ 0, 0, 0, 0, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 0, 181, 182, 183, 353, 354, 0, 0, 355,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 362,
+ 0, 0, 356, 357, 358, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 359, 360, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 361, 0, 60, 61, 0, 100, 108, 109,
+ 110, 66, 0, 1, 2, 0, 3, 4, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 0, 0, 0, 0, 0,
+ 0, 67, 0, 0, 0, 0, 60, 61, 0, 100,
+ 63, 64, 65, 66, 0, 1, 2, 0, 3, 4,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 128, 180, 0, 181, 182, 183, 0,
+ 0, 0, 0, 67, 0, 60, 61, 0, 100, 63,
+ 64, 65, 66, 362, 1, 2, 0, 3, 4, 0,
+ 0, 60, 61, 0, 100, 63, 64, 65, 66, 0,
+ 1, 2, 322, 3, 4, 0, 0, 0, 0, 0,
+ 60, 61, 67, 100, 63, 64, 65, 66, 410, 1,
+ 2, 0, 3, 4, 68, 0, 0, 69, 67, 0,
+ 70, 0, 71, 0, 0, 0, 0, 485, 0, 60,
+ 61, 0, 100, 63, 64, 65, 66, 67, 1, 2,
+ 0, 3, 4, 0, 0, 60, 61, 0, 195, 63,
+ 64, 65, 66, 0, 1, 2, 68, 3, 4, 69,
+ 0, 0, 70, 0, 71, 0, 67, 60, 61, 0,
+ 100, 108, 109, 110, 66, 0, 1, 2, 0, 3,
+ 4, 0, 67, 0, 60, 61, 0, 290, 63, 64,
+ 65, 66, 0, 1, 2, 68, 3, 4, 69, 0,
+ 0, 70, 0, 71, 67, 0, 0, 0, 0, 0,
+ 0, 68, 0, 0, 69, 0, 0, 70, 0, 71,
+ 0, 67, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 0, 0, 69, 0, 0, 70, 0, 71, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 0, 0, 69, 0, 0, 70, 0, 71, 0, 0,
+ 0, 0, 0, 0, 0, 68, 0, 0, 69, 0,
+ 0, 70, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 201, 0, 0, 0, 68, 0, 0,
+ 69, 0, 0, 70, 0, 278, 0, 0, 0, 0,
+ 0, 202, 203, 0, 68, 0, 0, 69, 0, 0,
+ 70, 0, 71, 204, 205, 206, 207, 208, 209, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 210, 211, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 212, 213, 214, 0,
+ 0, 215, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 216, 217, 218, 219, 220, 221
+};
-/* This is the parser code that is written into each bison parser
- when the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C. */
-/* This used to test MSDOS, but that is a bad idea
- since that symbol is in the user namespace. */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
- instead, just don't use alloca. */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
- So I turned it off. rms, 2 May 1997. */
-/* #include <malloc.h> */
- #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
- and on HPUX 10. Eventually we can turn this on. */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
+static const short int yycheck[] =
+{
+ 0, 26, 301, 239, 113, 185, 186, 4, 206, 0,
+ 23, 9, 81, 411, 9, 16, 16, 324, 132, 45,
+ 9, 328, 133, 24, 134, 16, 136, 9, 240, 241,
+ 207, 142, 142, 59, 50, 3, 4, 106, 5, 6,
+ 113, 8, 9, 10, 11, 12, 71, 14, 15, 226,
+ 17, 18, 14, 21, 22, 17, 214, 46, 133, 217,
+ 218, 219, 220, 221, 46, 133, 224, 133, 29, 144,
+ 95, 134, 133, 136, 99, 42, 144, 140, 144, 132,
+ 105, 142, 107, 110, 111, 46, 86, 297, 486, 35,
+ 36, 37, 38, 39, 40, 41, 121, 43, 278, 133,
+ 127, 128, 129, 137, 314, 13, 110, 111, 133, 134,
+ 5, 6, 137, 8, 9, 10, 11, 12, 516, 14,
+ 15, 132, 17, 18, 128, 129, 27, 28, 5, 6,
+ 143, 8, 9, 10, 11, 12, 0, 14, 15, 351,
+ 17, 18, 140, 144, 542, 140, 143, 42, 110, 111,
+ 37, 38, 133, 133, 3, 4, 137, 44, 316, 133,
+ 140, 530, 461, 50, 463, 42, 128, 129, 135, 133,
+ 144, 138, 541, 137, 141, 132, 143, 144, 29, 204,
+ 487, 132, 362, 133, 134, 131, 136, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 138, 270, 271, 272, 273, 274, 197, 232, 35, 36,
+ 37, 17, 133, 40, 283, 284, 285, 453, 291, 140,
+ 293, 294, 380, 296, 382, 383, 384, 534, 16, 536,
+ 303, 134, 341, 136, 14, 138, 17, 17, 311, 312,
+ 135, 31, 17, 138, 133, 134, 141, 136, 143, 144,
+ 106, 107, 134, 278, 136, 137, 77, 78, 135, 110,
+ 111, 138, 331, 332, 141, 131, 143, 144, 341, 338,
+ 17, 136, 297, 298, 299, 4, 127, 128, 129, 4,
+ 139, 15, 518, 441, 18, 521, 39, 139, 41, 314,
+ 315, 316, 9, 7, 134, 12, 136, 370, 371, 372,
+ 7, 7, 4, 133, 137, 378, 17, 142, 466, 467,
+ 468, 137, 136, 136, 136, 388, 389, 515, 136, 136,
+ 110, 111, 17, 136, 136, 136, 133, 352, 397, 398,
+ 399, 400, 48, 531, 9, 404, 405, 127, 128, 129,
+ 53, 54, 55, 56, 57, 58, 142, 136, 133, 422,
+ 136, 424, 136, 31, 427, 380, 381, 382, 383, 384,
+ 433, 434, 387, 133, 133, 133, 133, 133, 133, 133,
+ 439, 440, 133, 133, 133, 133, 31, 17, 4, 142,
+ 52, 406, 133, 456, 457, 133, 459, 460, 138, 133,
+ 133, 464, 133, 293, 294, 133, 296, 133, 133, 472,
+ 142, 17, 12, 303, 137, 12, 0, 476, 136, 478,
+ 479, 311, 312, 438, 133, 133, 441, 4, 491, 13,
+ 14, 15, 137, 17, 18, 19, 499, 452, 133, 133,
+ 133, 25, 26, 458, 133, 133, 136, 133, 17, 133,
+ 133, 466, 467, 468, 133, 137, 471, 137, 133, 133,
+ 44, 451, 138, 47, 137, 528, 137, 51, 46, 133,
+ 533, 140, 46, 12, 137, 4, 137, 137, 133, 12,
+ 370, 371, 372, 140, 547, 548, 12, 133, 378, 552,
+ 12, 64, 555, 12, 210, 124, 124, 124, 388, 389,
+ 211, 510, 517, 86, 487, 232, 105, 99, 16, 5,
+ 6, 83, 8, 9, 10, 11, 12, 53, 14, 15,
+ 510, 17, 18, 471, 377, -1, -1, -1, -1, -1,
+ -1, -1, 422, -1, 424, -1, 0, 427, -1, -1,
+ -1, -1, -1, 433, 434, -1, 42, -1, -1, 13,
+ 14, 15, -1, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, 26, -1, -1, -1, 456, 457, -1, 459,
+ 460, -1, -1, -1, 464, -1, -1, -1, -1, -1,
+ 44, -1, 472, 47, -1, -1, -1, 51, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, -1, -1,
+ -1, 491, -1, -1, -1, 5, 6, -1, -1, 499,
+ -1, -1, -1, -1, 14, 15, -1, 17, 18, -1,
+ 20, -1, 21, 22, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 33, 34, -1, -1, -1, 528, 135,
+ -1, -1, 138, 533, -1, 141, -1, 143, 144, -1,
+ -1, -1, -1, -1, -1, -1, -1, 547, 548, -1,
+ -1, -1, 552, -1, -1, 555, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, -1, -1, -1, -1, -1, -1, -1,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, -1, -1, -1, -1, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, -1, 122, -1, 124, 125, 126, -1, -1, -1,
+ -1, -1, -1, -1, 134, -1, 136, -1, 138, -1,
+ -1, 141, -1, 143, -1, 145, 3, 4, 5, 6,
+ 7, -1, -1, -1, -1, -1, -1, 14, 15, -1,
+ 17, 18, -1, 20, 21, 22, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 33, 34, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5, 6, 50, 8, 9, 10, 11, 12, -1,
+ 14, 15, -1, 17, 18, -1, -1, -1, -1, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, -1, -1, 42, 5,
+ 6, -1, 8, 9, 10, 11, 12, -1, 14, 15,
+ -1, 17, 18, -1, -1, -1, -1, -1, -1, -1,
+ -1, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, -1, 122, 42, 124, 125, 126,
+ -1, 3, 4, 5, 6, 7, -1, 134, -1, 136,
+ -1, -1, 14, 15, 141, 17, 18, -1, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 33, 34, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 50, -1,
+ -1, 135, -1, -1, 138, -1, 140, 141, -1, 143,
+ -1, -1, -1, -1, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, 138, -1, -1, 141, -1, 143, -1, -1,
+ -1, -1, -1, -1, -1, -1, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, -1,
+ 122, -1, 124, 125, 126, 3, 4, -1, -1, 7,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 141,
+ -1, -1, 20, 21, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 33, 34, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 50, -1, 5, 6, -1, 8, 9, 10,
+ 11, 12, -1, 14, 15, -1, 17, 18, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, 5, 6, -1, 8,
+ 9, 10, 11, 12, -1, 14, 15, -1, 17, 18,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 32, 122, -1, 124, 125, 126, -1,
+ -1, -1, -1, 42, -1, 5, 6, -1, 8, 9,
+ 10, 11, 12, 141, 14, 15, -1, 17, 18, -1,
+ -1, 5, 6, -1, 8, 9, 10, 11, 12, -1,
+ 14, 15, 32, 17, 18, -1, -1, -1, -1, -1,
+ 5, 6, 42, 8, 9, 10, 11, 12, 32, 14,
+ 15, -1, 17, 18, 135, -1, -1, 138, 42, -1,
+ 141, -1, 143, -1, -1, -1, -1, 32, -1, 5,
+ 6, -1, 8, 9, 10, 11, 12, 42, 14, 15,
+ -1, 17, 18, -1, -1, 5, 6, -1, 8, 9,
+ 10, 11, 12, -1, 14, 15, 135, 17, 18, 138,
+ -1, -1, 141, -1, 143, -1, 42, 5, 6, -1,
+ 8, 9, 10, 11, 12, -1, 14, 15, -1, 17,
+ 18, -1, 42, -1, 5, 6, -1, 8, 9, 10,
+ 11, 12, -1, 14, 15, 135, 17, 18, 138, -1,
+ -1, 141, -1, 143, 42, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, 138, -1, -1, 141, -1, 143,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, 138, -1, -1, 141, -1, 143, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, 138, -1, -1, 141, -1, 143, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, 138, -1,
+ -1, 141, -1, 143, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 30, -1, -1, -1, 135, -1, -1,
+ 138, -1, -1, 141, -1, 143, -1, -1, -1, -1,
+ -1, 48, 49, -1, 135, -1, -1, 138, -1, -1,
+ 141, -1, 143, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 103, 104, 105, -1,
+ -1, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126
+};
-/* Note: there must be only one dollar sign in this file.
- It is replaced by the list of actions, each action
- as one case of the switch. */
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const unsigned char yystos[] =
+{
+ 0, 14, 15, 17, 18, 19, 25, 26, 44, 47,
+ 51, 154, 156, 157, 158, 186, 187, 188, 190, 189,
+ 45, 59, 195, 132, 50, 132, 13, 132, 35, 36,
+ 37, 38, 39, 40, 41, 43, 131, 159, 160, 161,
+ 0, 188, 39, 41, 162, 205, 35, 36, 37, 40,
+ 163, 202, 204, 211, 132, 132, 138, 196, 17, 194,
+ 5, 6, 8, 9, 10, 11, 12, 42, 135, 138,
+ 141, 143, 154, 157, 175, 176, 208, 161, 161, 27,
+ 28, 185, 161, 161, 16, 212, 213, 24, 144, 203,
+ 212, 17, 17, 17, 197, 136, 4, 4, 4, 143,
+ 8, 144, 176, 181, 134, 136, 185, 185, 9, 10,
+ 11, 152, 153, 176, 182, 53, 54, 55, 56, 57,
+ 58, 164, 200, 200, 156, 216, 133, 140, 32, 176,
+ 177, 179, 180, 139, 139, 144, 181, 133, 144, 180,
+ 182, 176, 21, 22, 3, 4, 7, 20, 33, 34,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 122, 124, 125, 126, 138, 141, 143, 145, 147, 148,
+ 149, 183, 208, 191, 4, 8, 176, 178, 23, 143,
+ 201, 30, 48, 49, 60, 61, 62, 63, 64, 65,
+ 81, 82, 103, 104, 105, 108, 121, 122, 123, 124,
+ 125, 126, 147, 148, 149, 214, 220, 221, 222, 223,
+ 17, 166, 133, 137, 176, 176, 142, 144, 176, 137,
+ 192, 193, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 150, 21, 22, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 151,
+ 136, 136, 136, 136, 136, 140, 182, 184, 143, 184,
+ 144, 184, 17, 136, 136, 136, 133, 173, 157, 48,
+ 8, 176, 210, 9, 12, 9, 152, 164, 150, 151,
+ 176, 176, 210, 176, 176, 217, 210, 210, 210, 210,
+ 210, 176, 176, 210, 164, 106, 107, 110, 111, 128,
+ 129, 165, 32, 177, 168, 140, 142, 142, 168, 173,
+ 173, 136, 136, 182, 182, 182, 182, 182, 133, 140,
+ 144, 176, 184, 142, 144, 182, 182, 182, 29, 46,
+ 171, 174, 136, 3, 4, 7, 20, 21, 22, 33,
+ 34, 50, 141, 183, 207, 208, 209, 209, 209, 209,
+ 178, 176, 176, 133, 170, 133, 170, 209, 138, 133,
+ 133, 133, 133, 133, 133, 209, 209, 31, 178, 176,
+ 210, 127, 165, 167, 182, 182, 219, 133, 133, 133,
+ 133, 182, 142, 144, 133, 133, 31, 17, 4, 173,
+ 32, 176, 198, 199, 52, 206, 184, 133, 133, 209,
+ 209, 209, 9, 46, 9, 219, 209, 138, 210, 176,
+ 210, 210, 210, 133, 133, 176, 209, 209, 133, 133,
+ 133, 133, 137, 182, 182, 182, 182, 142, 182, 182,
+ 176, 166, 133, 137, 17, 142, 12, 12, 136, 133,
+ 133, 209, 4, 209, 133, 209, 133, 133, 133, 209,
+ 209, 136, 176, 182, 182, 210, 133, 137, 133, 133,
+ 137, 137, 137, 154, 155, 32, 176, 168, 133, 209,
+ 209, 176, 218, 209, 209, 133, 170, 170, 209, 133,
+ 210, 210, 210, 218, 209, 137, 137, 182, 182, 182,
+ 166, 171, 172, 17, 133, 138, 209, 133, 137, 140,
+ 209, 137, 137, 137, 137, 155, 46, 169, 12, 140,
+ 152, 215, 166, 176, 168, 140, 168, 4, 209, 207,
+ 140, 152, 209, 31, 133, 207, 166, 12, 12, 133,
+ 209, 209, 12, 64, 209, 12, 209
+};
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY -2
+#define YYEMPTY (-2)
#define YYEOF 0
+
#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
-/* Like YYERROR except do call yyerror.
- This remains here temporarily to ease the
- transition to the new meaning of YYERROR, for GCC.
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
+
#define YYFAIL goto yyerrlab
+
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+
+#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
- { yychar = (token), yylval = (value); \
- yychar1 = YYTRANSLATE (yychar); \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
- { yyerror ("syntax error: cannot back up"); YYERROR; } \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
while (0)
+
#define YYTERROR 1
#define YYERRCODE 256
-#ifndef YYPURE
-#define YYLEX yylex()
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (N) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (0)
#endif
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX yylex(&yylval, &yylloc)
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
#endif
-#else /* not YYLSP_NEEDED */
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
#ifdef YYLEX_PARAM
-#define YYLEX yylex(&yylval, YYLEX_PARAM)
+# define YYLEX yylex (YYLEX_PARAM)
#else
-#define YYLEX yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
+# define YYLEX yylex ()
#endif
-/* If nonreentrant, generate the variables here */
+/* Enable debugging if requested. */
+#if YYDEBUG
-#ifndef YYPURE
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
-int yychar; /* the lookahead symbol */
-YYSTYPE yylval; /* the semantic value of the */
- /* lookahead symbol */
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc; /* location data for the lookahead */
- /* symbol */
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ short int *bottom;
+ short int *top;
#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
-int yynerrs; /* number of parse errors so far */
-#endif /* not YYPURE */
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
-#if YYDEBUG != 0
-int yydebug; /* nonzero means print parse trace */
-/* Since this is uninitialized, it does not stop multiple parsers
- from coexisting. */
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+ int yyrule;
#endif
+{
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+ yyrule - 1, yylno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+} while (0)
-/* YYINITDEPTH indicates the initial size of the parser's stacks */
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
#endif
-/* YYMAXDEPTH is the maximum size the stacks can grow to
- (effective only if the built-in stack extension method is used). */
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# define YYMAXDEPTH 10000
#endif
+
-/* Define __yy_memcpy. Note that the size argument
- should be passed with type unsigned int, because that is what the non-GCC
- definitions require. With GCC, __builtin_memcpy takes an arg
- of type size_t, but it can handle unsigned int. */
-
-#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
-#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
-#else /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
-static void
-__yy_memcpy (to, from, count)
- char *to;
- char *from;
- unsigned int count;
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
{
- register char *f = from;
- register char *t = to;
- register int i = count;
+ const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
- while (i-- > 0)
- *t++ = *f++;
+ return yys - yystr - 1;
}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ size_t yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
-#else /* __cplusplus */
+#endif /* YYERROR_VERBOSE */
+
+
-/* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+yysymprint (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
{
- register char *t = to;
- register char *f = from;
- register int i = count;
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
- while (i-- > 0)
- *t++ = *f++;
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+ YYFPRINTF (yyoutput, ")");
}
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
#endif
-#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
-#line 217 "/usr/share/bison.simple"
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
+/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
int yyparse (void);
+#else
+int yyparse ();
#endif
-#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+/* The look-ahead symbol. */
+int yychar;
+
+/* The semantic value of the look-ahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
int
-yyparse(YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
{
- register int yystate;
- register int yyn;
- register short *yyssp;
- register YYSTYPE *yyvsp;
- int yyerrstatus; /* number of tokens to shift before error messages enabled */
- int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ int yystate;
+ int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Look-ahead token as an internal (translated) token number. */
+ int yytoken = 0;
- short yyssa[YYINITDEPTH]; /* the state stack */
- YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short int yyssa[YYINITDEPTH];
+ short int *yyss = yyssa;
+ short int *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
- short *yyss = yyssa; /* refer to the stacks thru separate pointers */
- YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-#ifdef YYLSP_NEEDED
- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
-#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
#define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
- int yystacksize = YYINITDEPTH;
- int yyfree_stacks = 0;
+ YYSIZE_T yystacksize = YYINITDEPTH;
-#ifdef YYPURE
- int yychar;
- YYSTYPE yylval;
- int yynerrs;
-#ifdef YYLSP_NEEDED
- YYLTYPE yylloc;
-#endif
-#endif
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
- YYSTYPE yyval; /* the variable used to return */
- /* semantic values from the action */
- /* routines */
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
int yylen;
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Starting parse\n");
-#endif
+ YYDPRINTF ((stderr, "Starting parse\n"));
yystate = 0;
yyerrstatus = 0;
@@ -2126,644 +2792,675 @@ yyparse(YYPARSE_PARAM_ARG)
so that they stay on the same level as the state stack.
The wasted elements are never initialized. */
- yyssp = yyss - 1;
+ yyssp = yyss;
yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
- yylsp = yyls;
-#endif
-/* Push a new state, which is found in yystate . */
-/* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks. */
-yynewstate:
+ goto yysetstate;
- *++yyssp = yystate;
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
- if (yyssp >= yyss + yystacksize - 1)
- {
- /* Give user a chance to reallocate the stack */
- /* Use copies of these so that the &'s don't force the real ones into memory. */
- YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
- YYLTYPE *yyls1 = yyls;
-#endif
+ yysetstate:
+ *yyssp = yystate;
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
/* Get the current used size of the three stacks, in elements. */
- int size = yyssp - yyss + 1;
+ YYSIZE_T yysize = yyssp - yyss + 1;
#ifdef yyoverflow
- /* Each stack pointer address is followed by the size of
- the data in use in that stack, in bytes. */
-#ifdef YYLSP_NEEDED
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow("parser stack overflow",
- &yyss1, size * sizeof (*yyssp),
- &yyvs1, size * sizeof (*yyvsp),
- &yyls1, size * sizeof (*yylsp),
- &yystacksize);
-#else
- yyoverflow("parser stack overflow",
- &yyss1, size * sizeof (*yyssp),
- &yyvs1, size * sizeof (*yyvsp),
- &yystacksize);
-#endif
-
- yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
- yyls = yyls1;
-#endif
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short int *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
/* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- {
- yyerror("parser stack overflow");
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
- return 2;
- }
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
+ if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
- yyfree_stacks = 1;
-#endif
- yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
- __yy_memcpy ((char *)yyss, (char *)yyss1,
- size * (unsigned int) sizeof (*yyssp));
- yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
- __yy_memcpy ((char *)yyvs, (char *)yyvs1,
- size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
- yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
- __yy_memcpy ((char *)yyls, (char *)yyls1,
- size * (unsigned int) sizeof (*yylsp));
-#endif
+
+ {
+ short int *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
#endif /* no yyoverflow */
- yyssp = yyss + size - 1;
- yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
- yylsp = yyls + size - 1;
-#endif
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
goto yybackup;
- yybackup:
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
+/* Read a look-ahead token if we need one and don't already have one. */
/* yyresume: */
- /* First try to decide what to do without reference to lookahead token. */
+ /* First try to decide what to do without reference to look-ahead token. */
yyn = yypact[yystate];
- if (yyn == YYFLAG)
+ if (yyn == YYPACT_NINF)
goto yydefault;
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
+ /* Not known => get a look-ahead token if don't already have one. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
if (yychar == YYEMPTY)
{
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Reading a token: ");
-#endif
+ YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
+ if (yychar <= YYEOF)
{
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Now at end of input.\n");
-#endif
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
- yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
- if (yydebug)
- {
- fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
- /* Give the individual parser a way to print the precise meaning
- of a token, for further debugging info. */
-#ifdef YYPRINT
- YYPRINT (stderr, yychar, yylval);
-#endif
- fprintf (stderr, ")\n");
- }
-#endif
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
}
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
goto yydefault;
-
yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
+ if (yyn <= 0)
{
- if (yyn == YYFLAG)
+ if (yyn == 0 || yyn == YYTABLE_NINF)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
- else if (yyn == 0)
- goto yyerrlab;
if (yyn == YYFINAL)
YYACCEPT;
- /* Shift the lookahead token. */
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
- /* count tokens shifted since error; after three, turn off error status. */
- if (yyerrstatus) yyerrstatus--;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
yystate = yyn;
goto yynewstate;
-/* Do the default action for the current state. */
-yydefault:
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
yyn = yydefact[yystate];
if (yyn == 0)
goto yyerrlab;
+ goto yyreduce;
+
-/* Do a reduction. yyn is the number of a rule to reduce with. */
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
yyreduce:
+ /* yyn is the number of a rule to reduce with. */
yylen = yyr2[yyn];
- if (yylen > 0)
- yyval = yyvsp[1-yylen]; /* implement default value of the action */
-#if YYDEBUG != 0
- if (yydebug)
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
{
- int i;
+ case 29:
+#line 1039 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
+ break;
- fprintf (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
+ case 30:
+#line 1039 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
+ break;
- /* Print the symbols being reduced, and their result. */
- for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
- fprintf (stderr, "%s ", yytname[yyrhs[i]]);
- fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
+ case 31:
+#line 1040 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
+ break;
+ case 32:
+#line 1040 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
+ break;
- switch (yyn) {
-
-case 28:
-#line 1038 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_EQ; ;
- break;}
-case 29:
-#line 1038 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_NE; ;
- break;}
-case 30:
-#line 1039 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SLT; ;
- break;}
-case 31:
-#line 1039 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SGT; ;
- break;}
-case 32:
-#line 1040 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SLE; ;
- break;}
-case 33:
-#line 1040 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SGE; ;
- break;}
-case 34:
-#line 1041 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_ULT; ;
- break;}
-case 35:
-#line 1041 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_UGT; ;
- break;}
-case 36:
-#line 1042 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_ULE; ;
- break;}
-case 37:
-#line 1042 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_UGE; ;
- break;}
-case 38:
-#line 1046 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OEQ; ;
- break;}
-case 39:
-#line 1046 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ONE; ;
- break;}
-case 40:
-#line 1047 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OLT; ;
- break;}
-case 41:
-#line 1047 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OGT; ;
- break;}
-case 42:
-#line 1048 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OLE; ;
- break;}
-case 43:
-#line 1048 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OGE; ;
- break;}
-case 44:
-#line 1049 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ORD; ;
- break;}
-case 45:
-#line 1049 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UNO; ;
- break;}
-case 46:
-#line 1050 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UEQ; ;
- break;}
-case 47:
-#line 1050 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UNE; ;
- break;}
-case 48:
-#line 1051 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ULT; ;
- break;}
-case 49:
-#line 1051 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UGT; ;
- break;}
-case 50:
-#line 1052 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ULE; ;
- break;}
-case 51:
-#line 1052 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UGE; ;
- break;}
-case 52:
-#line 1053 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_TRUE; ;
- break;}
-case 53:
-#line 1054 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_FALSE; ;
- break;}
-case 60:
-#line 1063 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = 0; ;
- break;}
-case 61:
-#line 1067 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.StrVal = yyvsp[-1].StrVal;
+ case 33:
+#line 1041 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
+ break;
+
+ case 34:
+#line 1041 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
+ break;
+
+ case 35:
+#line 1042 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
+ break;
+
+ case 36:
+#line 1042 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
+ break;
+
+ case 37:
+#line 1043 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
+ break;
+
+ case 38:
+#line 1043 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
+ break;
+
+ case 39:
+#line 1047 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
+ break;
+
+ case 40:
+#line 1047 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
+ break;
+
+ case 41:
+#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
+ break;
+
+ case 42:
+#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
+ break;
+
+ case 43:
+#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
+ break;
+
+ case 44:
+#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
+ break;
+
+ case 45:
+#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
+ break;
+
+ case 46:
+#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
+ break;
+
+ case 47:
+#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
+ break;
+
+ case 48:
+#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
+ break;
+
+ case 49:
+#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
+ break;
+
+ case 50:
+#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
+ break;
+
+ case 51:
+#line 1053 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
+ break;
+
+ case 52:
+#line 1053 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
+ break;
+
+ case 53:
+#line 1054 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
+ break;
+
+ case 54:
+#line 1055 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
+ break;
+
+ case 61:
+#line 1064 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.StrVal) = 0; ;}
+ break;
+
+ case 62:
+#line 1068 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.StrVal) = (yyvsp[-1].StrVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 62:
-#line 1071 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.StrVal = 0;
+ ;}
+ break;
+
+ case 63:
+#line 1072 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.StrVal) = 0;
CHECK_FOR_ERROR
- ;
- break;}
-case 65:
-#line 1078 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.StrVal = yyvsp[-1].StrVal;
+ ;}
+ break;
+
+ case 66:
+#line 1079 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.StrVal) = (yyvsp[-1].StrVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 66:
-#line 1082 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.StrVal = 0;
- CHECK_FOR_ERROR
- ;
- break;}
-case 67:
-#line 1088 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::InternalLinkage; ;
- break;}
-case 68:
-#line 1089 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::WeakLinkage; ;
- break;}
-case 69:
-#line 1090 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
- break;}
-case 70:
-#line 1091 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::AppendingLinkage; ;
- break;}
-case 71:
-#line 1092 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLExportLinkage; ;
- break;}
-case 72:
-#line 1096 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLImportLinkage; ;
- break;}
-case 73:
-#line 1097 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalWeakLinkage; ;
- break;}
-case 74:
-#line 1098 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
- break;}
-case 75:
-#line 1102 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Visibility = GlobalValue::DefaultVisibility; ;
- break;}
-case 76:
-#line 1103 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Visibility = GlobalValue::HiddenVisibility; ;
- break;}
-case 77:
-#line 1107 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
- break;}
-case 78:
-#line 1108 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLImportLinkage; ;
- break;}
-case 79:
-#line 1109 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalWeakLinkage; ;
- break;}
-case 80:
-#line 1113 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
- break;}
-case 81:
-#line 1114 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::InternalLinkage; ;
- break;}
-case 82:
-#line 1115 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
- break;}
-case 83:
-#line 1116 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::WeakLinkage; ;
- break;}
-case 84:
-#line 1117 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLExportLinkage; ;
- break;}
-case 85:
-#line 1120 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::C; ;
- break;}
-case 86:
-#line 1121 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::C; ;
- break;}
-case 87:
-#line 1122 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::Fast; ;
- break;}
-case 88:
-#line 1123 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::Cold; ;
- break;}
-case 89:
-#line 1124 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::X86_StdCall; ;
- break;}
-case 90:
-#line 1125 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::X86_FastCall; ;
- break;}
-case 91:
-#line 1126 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)
+ ;}
+ break;
+
+ case 67:
+#line 1083 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.StrVal) = 0;
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 68:
+#line 1089 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
+ break;
+
+ case 69:
+#line 1090 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
+ break;
+
+ case 70:
+#line 1091 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
+ break;
+
+ case 71:
+#line 1092 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
+ break;
+
+ case 72:
+#line 1093 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
+ break;
+
+ case 73:
+#line 1097 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
+ break;
+
+ case 74:
+#line 1098 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
+ break;
+
+ case 75:
+#line 1099 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+ break;
+
+ case 76:
+#line 1103 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;}
+ break;
+
+ case 77:
+#line 1104 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Visibility) = GlobalValue::HiddenVisibility; ;}
+ break;
+
+ case 78:
+#line 1108 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+ break;
+
+ case 79:
+#line 1109 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
+ break;
+
+ case 80:
+#line 1110 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
+ break;
+
+ case 81:
+#line 1114 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+ break;
+
+ case 82:
+#line 1115 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
+ break;
+
+ case 83:
+#line 1116 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
+ break;
+
+ case 84:
+#line 1117 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
+ break;
+
+ case 85:
+#line 1118 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
+ break;
+
+ case 86:
+#line 1121 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = CallingConv::C; ;}
+ break;
+
+ case 87:
+#line 1122 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = CallingConv::C; ;}
+ break;
+
+ case 88:
+#line 1123 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = CallingConv::Fast; ;}
+ break;
+
+ case 89:
+#line 1124 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = CallingConv::Cold; ;}
+ break;
+
+ case 90:
+#line 1125 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
+ break;
+
+ case 91:
+#line 1126 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
+ break;
+
+ case 92:
+#line 1127 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
GEN_ERROR("Calling conv too large!");
- yyval.UIntVal = yyvsp[0].UInt64Val;
+ (yyval.UIntVal) = (yyvsp[0].UInt64Val);
CHECK_FOR_ERROR
- ;
- break;}
-case 92:
-#line 1133 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::ZExtAttribute; ;
- break;}
-case 93:
-#line 1134 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::SExtAttribute; ;
- break;}
-case 94:
-#line 1135 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::InRegAttribute; ;
- break;}
-case 95:
-#line 1136 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::StructRetAttribute; ;
- break;}
-case 96:
-#line 1139 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::NoAttributeSet; ;
- break;}
-case 97:
-#line 1140 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ParamAttrs = FunctionType::ParameterAttributes(yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs);
- ;
- break;}
-case 98:
-#line 1145 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::NoReturnAttribute; ;
- break;}
-case 100:
-#line 1149 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = FunctionType::NoAttributeSet; ;
- break;}
-case 101:
-#line 1150 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ParamAttrs = FunctionType::ParameterAttributes(yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs);
- ;
- break;}
-case 102:
-#line 1157 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = 0; ;
- break;}
-case 103:
-#line 1158 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.UIntVal = yyvsp[0].UInt64Val;
- if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
+ ;}
+ break;
+
+ case 93:
+#line 1134 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;}
+ break;
+
+ case 94:
+#line 1135 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;}
+ break;
+
+ case 95:
+#line 1136 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::InRegAttribute; ;}
+ break;
+
+ case 96:
+#line 1137 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::StructRetAttribute; ;}
+ break;
+
+ case 97:
+#line 1140 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
+ break;
+
+ case 98:
+#line 1141 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
+ ;}
+ break;
+
+ case 99:
+#line 1146 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::NoReturnAttribute; ;}
+ break;
+
+ case 101:
+#line 1150 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
+ break;
+
+ case 102:
+#line 1151 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
+ ;}
+ break;
+
+ case 103:
+#line 1158 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = 0; ;}
+ break;
+
+ case 104:
+#line 1159 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.UIntVal) = (yyvsp[0].UInt64Val);
+ if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
GEN_ERROR("Alignment must be a power of two!");
CHECK_FOR_ERROR
-;
- break;}
-case 104:
-#line 1164 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = 0; ;
- break;}
-case 105:
-#line 1165 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.UIntVal = yyvsp[0].UInt64Val;
- if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
+;}
+ break;
+
+ case 105:
+#line 1165 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.UIntVal) = 0; ;}
+ break;
+
+ case 106:
+#line 1166 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.UIntVal) = (yyvsp[0].UInt64Val);
+ if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
GEN_ERROR("Alignment must be a power of two!");
CHECK_FOR_ERROR
-;
- break;}
-case 106:
-#line 1173 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- for (unsigned i = 0, e = strlen(yyvsp[0].StrVal); i != e; ++i)
- if (yyvsp[0].StrVal[i] == '"' || yyvsp[0].StrVal[i] == '\\')
+;}
+ break;
+
+ case 107:
+#line 1174 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i)
+ if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\')
GEN_ERROR("Invalid character in section name!");
- yyval.StrVal = yyvsp[0].StrVal;
+ (yyval.StrVal) = (yyvsp[0].StrVal);
CHECK_FOR_ERROR
-;
- break;}
-case 107:
-#line 1181 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = 0; ;
- break;}
-case 108:
-#line 1182 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = yyvsp[0].StrVal; ;
- break;}
-case 109:
-#line 1187 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{;
- break;}
-case 110:
-#line 1188 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{;
- break;}
-case 111:
-#line 1189 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- CurGV->setSection(yyvsp[0].StrVal);
- free(yyvsp[0].StrVal);
+;}
+ break;
+
+ case 108:
+#line 1182 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.StrVal) = 0; ;}
+ break;
+
+ case 109:
+#line 1183 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.StrVal) = (yyvsp[0].StrVal); ;}
+ break;
+
+ case 110:
+#line 1188 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {;}
+ break;
+
+ case 111:
+#line 1189 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {;}
+ break;
+
+ case 112:
+#line 1190 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ CurGV->setSection((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 112:
-#line 1194 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val))
+ ;}
+ break;
+
+ case 113:
+#line 1195 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
GEN_ERROR("Alignment must be a power of two!");
- CurGV->setAlignment(yyvsp[0].UInt64Val);
+ CurGV->setAlignment((yyvsp[0].UInt64Val));
CHECK_FOR_ERROR
- ;
- break;}
-case 117:
-#line 1210 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeVal = new PATypeHolder(OpaqueType::get());
+ ;}
+ break;
+
+ case 118:
+#line 1211 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
CHECK_FOR_ERROR
- ;
- break;}
-case 118:
-#line 1214 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType);
- CHECK_FOR_ERROR
- ;
- break;}
-case 119:
-#line 1218 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Pointer type?
- if (*yyvsp[-1].TypeVal == Type::LabelTy)
+ ;}
+ break;
+
+ case 119:
+#line 1215 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 120:
+#line 1219 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Pointer type?
+ if (*(yyvsp[-1].TypeVal) == Type::LabelTy)
GEN_ERROR("Cannot form a pointer to a basic block");
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal)));
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 120:
-#line 1225 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Named types are also simple types...
- const Type* tmp = getTypeVal(yyvsp[0].ValIDVal);
- CHECK_FOR_ERROR
- yyval.TypeVal = new PATypeHolder(tmp);
- ;
- break;}
-case 121:
-#line 1230 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Type UpReference
- if (yyvsp[0].UInt64Val > (uint64_t)~0U) GEN_ERROR("Value out of range!");
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[-1].TypeVal))));
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 121:
+#line 1226 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Named types are also simple types...
+ const Type* tmp = getTypeVal((yyvsp[0].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyval.TypeVal) = new PATypeHolder(tmp);
+ ;}
+ break;
+
+ case 122:
+#line 1231 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Type UpReference
+ if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!");
OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder
- UpRefs.push_back(UpRefRecord((unsigned)yyvsp[0].UInt64Val, OT)); // Add to vector...
- yyval.TypeVal = new PATypeHolder(OT);
+ UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[0].UInt64Val), OT)); // Add to vector...
+ (yyval.TypeVal) = new PATypeHolder(OT);
UR_OUT("New Upreference!\n");
CHECK_FOR_ERROR
- ;
- break;}
-case 122:
-#line 1238 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 123:
+#line 1239 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
std::vector<const Type*> Params;
std::vector<FunctionType::ParameterAttributes> Attrs;
- Attrs.push_back(yyvsp[0].ParamAttrs);
- for (TypeWithAttrsList::iterator I=yyvsp[-2].TypeWithAttrsList->begin(), E=yyvsp[-2].TypeWithAttrsList->end(); I != E; ++I) {
+ Attrs.push_back((yyvsp[0].ParamAttrs));
+ for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) {
Params.push_back(I->Ty->get());
if (I->Ty->get() != Type::VoidTy)
Attrs.push_back(I->Attrs);
@@ -2771,20 +3468,21 @@ case 122:
bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back();
- FunctionType *FT = FunctionType::get(*yyvsp[-4].TypeVal, Params, isVarArg, Attrs);
- delete yyvsp[-2].TypeWithAttrsList; // Delete the argument list
- delete yyvsp[-4].TypeVal; // Delete the return type handle
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT));
+ FunctionType *FT = FunctionType::get(*(yyvsp[-4].TypeVal), Params, isVarArg, Attrs);
+ delete (yyvsp[-2].TypeWithAttrsList); // Delete the argument list
+ delete (yyvsp[-4].TypeVal); // Delete the return type handle
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT));
CHECK_FOR_ERROR
- ;
- break;}
-case 123:
-#line 1256 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 124:
+#line 1257 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
std::vector<const Type*> Params;
std::vector<FunctionType::ParameterAttributes> Attrs;
- Attrs.push_back(yyvsp[0].ParamAttrs);
- for (TypeWithAttrsList::iterator I=yyvsp[-2].TypeWithAttrsList->begin(), E=yyvsp[-2].TypeWithAttrsList->end(); I != E; ++I) {
+ Attrs.push_back((yyvsp[0].ParamAttrs));
+ for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) {
Params.push_back(I->Ty->get());
if (I->Ty->get() != Type::VoidTy)
Attrs.push_back(I->Attrs);
@@ -2792,282 +3490,303 @@ case 123:
bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back();
- FunctionType *FT = FunctionType::get(yyvsp[-4].PrimType, Params, isVarArg, Attrs);
- delete yyvsp[-2].TypeWithAttrsList; // Delete the argument list
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT));
- CHECK_FOR_ERROR
- ;
- break;}
-case 124:
-#line 1274 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Sized array type?
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 125:
-#line 1279 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Packed array type?
- const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
- if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val)
+ FunctionType *FT = FunctionType::get((yyvsp[-4].PrimType), Params, isVarArg, Attrs);
+ delete (yyvsp[-2].TypeWithAttrsList); // Delete the argument list
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 125:
+#line 1275 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Sized array type?
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 126:
+#line 1280 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Packed array type?
+ const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get();
+ if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
GEN_ERROR("Unsigned result not equal to signed result");
if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
GEN_ERROR("Element type of a PackedType must be primitive");
- if (!isPowerOf2_32(yyvsp[-3].UInt64Val))
+ if (!isPowerOf2_32((yyvsp[-3].UInt64Val)))
GEN_ERROR("Vector length should be a power of 2!");
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(PackedType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
- delete yyvsp[-1].TypeVal;
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
+ delete (yyvsp[-1].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 126:
-#line 1291 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Structure type?
+ ;}
+ break;
+
+ case 127:
+#line 1292 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Structure type?
std::vector<const Type*> Elements;
- for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
- E = yyvsp[-1].TypeList->end(); I != E; ++I)
+ for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(),
+ E = (yyvsp[-1].TypeList)->end(); I != E; ++I)
Elements.push_back(*I);
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
- delete yyvsp[-1].TypeList;
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
+ delete (yyvsp[-1].TypeList);
CHECK_FOR_ERROR
- ;
- break;}
-case 127:
-#line 1301 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Empty structure type?
- yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>()));
+ ;}
+ break;
+
+ case 128:
+#line 1302 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Empty structure type?
+ (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
CHECK_FOR_ERROR
- ;
- break;}
-case 128:
-#line 1305 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 129:
+#line 1306 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
std::vector<const Type*> Elements;
- for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-2].TypeList->begin(),
- E = yyvsp[-2].TypeList->end(); I != E; ++I)
+ for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-2].TypeList)->begin(),
+ E = (yyvsp[-2].TypeList)->end(); I != E; ++I)
Elements.push_back(*I);
- yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
- delete yyvsp[-2].TypeList;
- CHECK_FOR_ERROR
- ;
- break;}
-case 129:
-#line 1315 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Empty structure type?
- yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
- CHECK_FOR_ERROR
- ;
- break;}
-case 130:
-#line 1322 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeWithAttrs.Ty = yyvsp[-1].TypeVal;
- yyval.TypeWithAttrs.Attrs = yyvsp[0].ParamAttrs;
- ;
- break;}
-case 131:
-#line 1329 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
+ delete (yyvsp[-2].TypeList);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 130:
+#line 1316 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Empty structure type?
+ (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 131:
+#line 1323 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal);
+ (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs);
+ ;}
+ break;
+
+ case 132:
+#line 1330 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
- if (!(*yyvsp[0].TypeVal)->isFirstClassType())
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+ if (!(*(yyvsp[0].TypeVal))->isFirstClassType())
GEN_ERROR("LLVM functions cannot return aggregate types!");
- yyval.TypeVal = yyvsp[0].TypeVal;
- ;
- break;}
-case 132:
-#line 1336 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeVal = new PATypeHolder(Type::VoidTy);
- ;
- break;}
-case 133:
-#line 1341 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeWithAttrsList = new TypeWithAttrsList();
- yyval.TypeWithAttrsList->push_back(yyvsp[0].TypeWithAttrs);
+ (yyval.TypeVal) = (yyvsp[0].TypeVal);
+ ;}
+ break;
+
+ case 133:
+#line 1337 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
+ ;}
+ break;
+
+ case 134:
+#line 1342 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
+ (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs));
CHECK_FOR_ERROR
- ;
- break;}
-case 134:
-#line 1346 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- (yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList)->push_back(yyvsp[0].TypeWithAttrs);
+ ;}
+ break;
+
+ case 135:
+#line 1347 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs));
CHECK_FOR_ERROR
- ;
- break;}
-case 136:
-#line 1354 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList;
+ ;}
+ break;
+
+ case 137:
+#line 1355 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList);
TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
TWA.Ty = new PATypeHolder(Type::VoidTy);
- yyval.TypeWithAttrsList->push_back(TWA);
+ (yyval.TypeWithAttrsList)->push_back(TWA);
CHECK_FOR_ERROR
- ;
- break;}
-case 137:
-#line 1361 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeWithAttrsList = new TypeWithAttrsList;
+ ;}
+ break;
+
+ case 138:
+#line 1362 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
TWA.Ty = new PATypeHolder(Type::VoidTy);
- yyval.TypeWithAttrsList->push_back(TWA);
+ (yyval.TypeWithAttrsList)->push_back(TWA);
CHECK_FOR_ERROR
- ;
- break;}
-case 138:
-#line 1368 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeWithAttrsList = new TypeWithAttrsList();
+ ;}
+ break;
+
+ case 139:
+#line 1369 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
CHECK_FOR_ERROR
- ;
- break;}
-case 139:
-#line 1376 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TypeList = new std::list<PATypeHolder>();
- yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
+ ;}
+ break;
+
+ case 140:
+#line 1377 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TypeList) = new std::list<PATypeHolder>();
+ (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 140:
-#line 1381 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
+ ;}
+ break;
+
+ case 141:
+#line 1382 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 141:
-#line 1392 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized arr
+ ;}
+ break;
+
+ case 142:
+#line 1393 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Nonempty unsized arr
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
- const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-3].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+ const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal)->get());
if (ATy == 0)
GEN_ERROR("Cannot make array constant with type: '" +
- (*yyvsp[-3].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
const Type *ETy = ATy->getElementType();
int NumElements = ATy->getNumElements();
// Verify that we have the correct size...
- if (NumElements != -1 && NumElements != (int)yyvsp[-1].ConstVector->size())
+ if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
GEN_ERROR("Type mismatch: constant sized array initialized with " +
- utostr(yyvsp[-1].ConstVector->size()) + " arguments, but has size of " +
+ utostr((yyvsp[-1].ConstVector)->size()) + " arguments, but has size of " +
itostr(NumElements) + "!");
// Verify all elements are correct type!
- for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) {
- if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+ for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+ if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
GEN_ERROR("Element #" + utostr(i) + " is not of type '" +
ETy->getDescription() +"' as required!\nIt is of type '"+
- (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+ (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
}
- yyval.ConstVal = ConstantArray::get(ATy, *yyvsp[-1].ConstVector);
- delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+ (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[-1].ConstVector));
+ delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
- ;
- break;}
-case 142:
-#line 1420 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 143:
+#line 1421 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
if (ATy == 0)
GEN_ERROR("Cannot make array constant with type: '" +
- (*yyvsp[-2].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
int NumElements = ATy->getNumElements();
if (NumElements != -1 && NumElements != 0)
GEN_ERROR("Type mismatch: constant sized array initialized with 0"
" arguments, but has size of " + itostr(NumElements) +"!");
- yyval.ConstVal = ConstantArray::get(ATy, std::vector<Constant*>());
- delete yyvsp[-2].TypeVal;
+ (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>());
+ delete (yyvsp[-2].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 143:
-#line 1436 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 144:
+#line 1437 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
if (ATy == 0)
GEN_ERROR("Cannot make array constant with type: '" +
- (*yyvsp[-2].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
int NumElements = ATy->getNumElements();
const Type *ETy = ATy->getElementType();
- char *EndStr = UnEscapeLexed(yyvsp[0].StrVal, true);
- if (NumElements != -1 && NumElements != (EndStr-yyvsp[0].StrVal))
+ char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+ if (NumElements != -1 && NumElements != (EndStr-(yyvsp[0].StrVal)))
GEN_ERROR("Can't build string constant of size " +
- itostr((int)(EndStr-yyvsp[0].StrVal)) +
+ itostr((int)(EndStr-(yyvsp[0].StrVal))) +
" when array has size " + itostr(NumElements) + "!");
std::vector<Constant*> Vals;
if (ETy == Type::Int8Ty) {
- for (unsigned char *C = (unsigned char *)yyvsp[0].StrVal;
+ for (unsigned char *C = (unsigned char *)(yyvsp[0].StrVal);
C != (unsigned char*)EndStr; ++C)
Vals.push_back(ConstantInt::get(ETy, *C));
} else {
- free(yyvsp[0].StrVal);
+ free((yyvsp[0].StrVal));
GEN_ERROR("Cannot build string arrays of non byte sized elements!");
}
- free(yyvsp[0].StrVal);
- yyval.ConstVal = ConstantArray::get(ATy, Vals);
- delete yyvsp[-2].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 144:
-#line 1465 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized arr
+ free((yyvsp[0].StrVal));
+ (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
+ delete (yyvsp[-2].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 145:
+#line 1466 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Nonempty unsized arr
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
- const PackedType *PTy = dyn_cast<PackedType>(yyvsp[-3].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+ const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal)->get());
if (PTy == 0)
GEN_ERROR("Cannot make packed constant with type: '" +
- (*yyvsp[-3].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
const Type *ETy = PTy->getElementType();
int NumElements = PTy->getNumElements();
// Verify that we have the correct size...
- if (NumElements != -1 && NumElements != (int)yyvsp[-1].ConstVector->size())
+ if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
GEN_ERROR("Type mismatch: constant sized packed initialized with " +
- utostr(yyvsp[-1].ConstVector->size()) + " arguments, but has size of " +
+ utostr((yyvsp[-1].ConstVector)->size()) + " arguments, but has size of " +
itostr(NumElements) + "!");
// Verify all elements are correct type!
- for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) {
- if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+ for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+ if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
GEN_ERROR("Element #" + utostr(i) + " is not of type '" +
ETy->getDescription() +"' as required!\nIt is of type '"+
- (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+ (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
}
- yyval.ConstVal = ConstantPacked::get(PTy, *yyvsp[-1].ConstVector);
- delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+ (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[-1].ConstVector));
+ delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
- ;
- break;}
-case 145:
-#line 1493 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());
+ ;}
+ break;
+
+ case 146:
+#line 1494 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get());
if (STy == 0)
GEN_ERROR("Cannot make struct constant with type: '" +
- (*yyvsp[-3].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
- if (yyvsp[-1].ConstVector->size() != STy->getNumContainedTypes())
+ if ((yyvsp[-1].ConstVector)->size() != STy->getNumContainedTypes())
GEN_ERROR("Illegal number of initializers for structure type!");
// Check to ensure that constants are compatible with the type initializer!
- for (unsigned i = 0, e = yyvsp[-1].ConstVector->size(); i != e; ++i)
- if ((*yyvsp[-1].ConstVector)[i]->getType() != STy->getElementType(i))
+ for (unsigned i = 0, e = (yyvsp[-1].ConstVector)->size(); i != e; ++i)
+ if ((*(yyvsp[-1].ConstVector))[i]->getType() != STy->getElementType(i))
GEN_ERROR("Expected type '" +
STy->getElementType(i)->getDescription() +
"' for element #" + utostr(i) +
@@ -3077,20 +3796,21 @@ case 145:
if (STy->isPacked())
GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
- yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector);
- delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+ (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector));
+ delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
- ;
- break;}
-case 146:
-#line 1518 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 147:
+#line 1519 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- const StructType *STy = dyn_cast<StructType>(yyvsp[-2].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal)->get());
if (STy == 0)
GEN_ERROR("Cannot make struct constant with type: '" +
- (*yyvsp[-2].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
if (STy->getNumContainedTypes() != 0)
GEN_ERROR("Illegal number of initializers for structure type!");
@@ -3099,25 +3819,26 @@ case 146:
if (STy->isPacked())
GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
- yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
- delete yyvsp[-2].TypeVal;
+ (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+ delete (yyvsp[-2].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 147:
-#line 1537 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- const StructType *STy = dyn_cast<StructType>(yyvsp[-5].TypeVal->get());
+ ;}
+ break;
+
+ case 148:
+#line 1538 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal)->get());
if (STy == 0)
GEN_ERROR("Cannot make struct constant with type: '" +
- (*yyvsp[-5].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-5].TypeVal))->getDescription() + "'!");
- if (yyvsp[-2].ConstVector->size() != STy->getNumContainedTypes())
+ if ((yyvsp[-2].ConstVector)->size() != STy->getNumContainedTypes())
GEN_ERROR("Illegal number of initializers for structure type!");
// Check to ensure that constants are compatible with the type initializer!
- for (unsigned i = 0, e = yyvsp[-2].ConstVector->size(); i != e; ++i)
- if ((*yyvsp[-2].ConstVector)[i]->getType() != STy->getElementType(i))
+ for (unsigned i = 0, e = (yyvsp[-2].ConstVector)->size(); i != e; ++i)
+ if ((*(yyvsp[-2].ConstVector))[i]->getType() != STy->getElementType(i))
GEN_ERROR("Expected type '" +
STy->getElementType(i)->getDescription() +
"' for element #" + utostr(i) +
@@ -3127,20 +3848,21 @@ case 147:
if (!STy->isPacked())
GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
- yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-2].ConstVector);
- delete yyvsp[-5].TypeVal; delete yyvsp[-2].ConstVector;
+ (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-2].ConstVector));
+ delete (yyvsp[-5].TypeVal); delete (yyvsp[-2].ConstVector);
CHECK_FOR_ERROR
- ;
- break;}
-case 148:
-#line 1562 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 149:
+#line 1563 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription());
- const StructType *STy = dyn_cast<StructType>(yyvsp[-4].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-4].TypeVal)->get());
if (STy == 0)
GEN_ERROR("Cannot make struct constant with type: '" +
- (*yyvsp[-4].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-4].TypeVal))->getDescription() + "'!");
if (STy->getNumContainedTypes() != 0)
GEN_ERROR("Illegal number of initializers for structure type!");
@@ -3149,42 +3871,45 @@ case 148:
if (!STy->isPacked())
GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
- yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
- delete yyvsp[-4].TypeVal;
+ (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+ delete (yyvsp[-4].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 149:
-#line 1581 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 150:
+#line 1582 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- const PointerType *PTy = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
if (PTy == 0)
GEN_ERROR("Cannot make null pointer constant with type: '" +
- (*yyvsp[-1].TypeVal)->getDescription() + "'!");
+ (*(yyvsp[-1].TypeVal))->getDescription() + "'!");
- yyval.ConstVal = ConstantPointerNull::get(PTy);
- delete yyvsp[-1].TypeVal;
+ (yyval.ConstVal) = ConstantPointerNull::get(PTy);
+ delete (yyvsp[-1].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 150:
-#line 1593 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 151:
+#line 1594 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get());
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 151:
-#line 1600 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal)->get());
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 152:
+#line 1601 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- const PointerType *Ty = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
if (Ty == 0)
GEN_ERROR("Global const reference must be a pointer type!");
@@ -3198,7 +3923,7 @@ case 151:
Function *SavedCurFn = CurFun.CurrentFunction;
CurFun.CurrentFunction = 0;
- Value *V = getValNonImprovising(Ty, yyvsp[0].ValIDVal);
+ Value *V = getValNonImprovising(Ty, (yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
CurFun.CurrentFunction = SavedCurFn;
@@ -3213,16 +3938,16 @@ case 151:
// First check to see if the forward references value is already created!
PerModuleInfo::GlobalRefsType::iterator I =
- CurModule.GlobalRefs.find(std::make_pair(PT, yyvsp[0].ValIDVal));
+ CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[0].ValIDVal)));
if (I != CurModule.GlobalRefs.end()) {
V = I->second; // Placeholder already exists, use it...
- yyvsp[0].ValIDVal.destroy();
+ (yyvsp[0].ValIDVal).destroy();
} else {
std::string Name;
- if (yyvsp[0].ValIDVal.Type == ValID::GlobalName)
- Name = yyvsp[0].ValIDVal.Name;
- else if (yyvsp[0].ValIDVal.Type != ValID::GlobalID)
+ if ((yyvsp[0].ValIDVal).Type == ValID::GlobalName)
+ Name = (yyvsp[0].ValIDVal).Name;
+ else if ((yyvsp[0].ValIDVal).Type != ValID::GlobalID)
GEN_ERROR("Invalid reference to global");
// Create the forward referenced global.
@@ -3238,282 +3963,299 @@ case 151:
}
// Keep track of the fact that we have a forward ref to recycle it
- CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, yyvsp[0].ValIDVal), GV));
+ CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[0].ValIDVal)), GV));
V = GV;
}
}
- yyval.ConstVal = cast<GlobalValue>(V);
- delete yyvsp[-1].TypeVal; // Free the type handle
+ (yyval.ConstVal) = cast<GlobalValue>(V);
+ delete (yyvsp[-1].TypeVal); // Free the type handle
CHECK_FOR_ERROR
- ;
- break;}
-case 152:
-#line 1666 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 153:
+#line 1667 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType())
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType())
GEN_ERROR("Mismatched types for constant expression: " +
- (*yyvsp[-1].TypeVal)->getDescription() + " and " + yyvsp[0].ConstVal->getType()->getDescription());
- yyval.ConstVal = yyvsp[0].ConstVal;
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 153:
-#line 1676 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (*(yyvsp[-1].TypeVal))->getDescription() + " and " + (yyvsp[0].ConstVal)->getType()->getDescription());
+ (yyval.ConstVal) = (yyvsp[0].ConstVal);
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 154:
+#line 1677 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- const Type *Ty = yyvsp[-1].TypeVal->get();
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ const Type *Ty = (yyvsp[-1].TypeVal)->get();
if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
GEN_ERROR("Cannot create a null initialized value of this type!");
- yyval.ConstVal = Constant::getNullValue(Ty);
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 154:
-#line 1686 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // integral constants
- if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val))
+ (yyval.ConstVal) = Constant::getNullValue(Ty);
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 155:
+#line 1687 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // integral constants
+ if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
- yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val);
- CHECK_FOR_ERROR
- ;
- break;}
-case 155:
-#line 1692 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // integral constants
- if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val))
+ (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 156:
+#line 1693 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // integral constants
+ if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
- yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].UInt64Val);
- CHECK_FOR_ERROR
- ;
- break;}
-case 156:
-#line 1698 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Boolean constants
- assert(cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?");
- yyval.ConstVal = ConstantInt::getTrue();
- CHECK_FOR_ERROR
- ;
- break;}
-case 157:
-#line 1703 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Boolean constants
- assert(cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?");
- yyval.ConstVal = ConstantInt::getFalse();
- CHECK_FOR_ERROR
- ;
- break;}
-case 158:
-#line 1708 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Float & Double constants
- if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].FPVal))
+ (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 157:
+#line 1699 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Boolean constants
+ assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
+ (yyval.ConstVal) = ConstantInt::getTrue();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 158:
+#line 1704 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Boolean constants
+ assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
+ (yyval.ConstVal) = ConstantInt::getFalse();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 159:
+#line 1709 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Float & Double constants
+ if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal)))
GEN_ERROR("Floating point constant invalid for type!!");
- yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, yyvsp[0].FPVal);
+ (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].PrimType), (yyvsp[0].FPVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 159:
-#line 1716 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 160:
+#line 1717 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- Constant *Val = yyvsp[-3].ConstVal;
- const Type *DestTy = yyvsp[-1].TypeVal->get();
- if (!CastInst::castIsValid(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ Constant *Val = (yyvsp[-3].ConstVal);
+ const Type *DestTy = (yyvsp[-1].TypeVal)->get();
+ if (!CastInst::castIsValid((yyvsp[-5].CastOpVal), (yyvsp[-3].ConstVal), DestTy))
GEN_ERROR("invalid cast opcode for cast from '" +
Val->getType()->getDescription() + "' to '" +
DestTy->getDescription() + "'!");
- yyval.ConstVal = ConstantExpr::getCast(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy);
- delete yyvsp[-1].TypeVal;
- ;
- break;}
-case 160:
-#line 1728 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))
+ (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[-5].CastOpVal), (yyvsp[-3].ConstVal), DestTy);
+ delete (yyvsp[-1].TypeVal);
+ ;}
+ break;
+
+ case 161:
+#line 1729 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
GEN_ERROR("GetElementPtr requires a pointer operand!");
const Type *IdxTy =
- GetElementPtrInst::getIndexedType(yyvsp[-2].ConstVal->getType(), *yyvsp[-1].ValueList, true);
+ GetElementPtrInst::getIndexedType((yyvsp[-2].ConstVal)->getType(), *(yyvsp[-1].ValueList), true);
if (!IdxTy)
GEN_ERROR("Index list invalid for constant getelementptr!");
SmallVector<Constant*, 8> IdxVec;
- for (unsigned i = 0, e = yyvsp[-1].ValueList->size(); i != e; ++i)
- if (Constant *C = dyn_cast<Constant>((*yyvsp[-1].ValueList)[i]))
+ for (unsigned i = 0, e = (yyvsp[-1].ValueList)->size(); i != e; ++i)
+ if (Constant *C = dyn_cast<Constant>((*(yyvsp[-1].ValueList))[i]))
IdxVec.push_back(C);
else
GEN_ERROR("Indices to constant getelementptr must be constants!");
- delete yyvsp[-1].ValueList;
+ delete (yyvsp[-1].ValueList);
- yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, &IdxVec[0], IdxVec.size());
+ (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[-2].ConstVal), &IdxVec[0], IdxVec.size());
CHECK_FOR_ERROR
- ;
- break;}
-case 161:
-#line 1749 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-5].ConstVal->getType() != Type::Int1Ty)
+ ;}
+ break;
+
+ case 162:
+#line 1750 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[-5].ConstVal)->getType() != Type::Int1Ty)
GEN_ERROR("Select condition must be of boolean type!");
- if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+ if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Select operand types must match!");
- yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+ (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 162:
-#line 1757 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+ ;}
+ break;
+
+ case 163:
+#line 1758 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Binary operator types must match!");
CHECK_FOR_ERROR;
- yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
- ;
- break;}
-case 163:
-#line 1763 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+ (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+ ;}
+ break;
+
+ case 164:
+#line 1764 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Logical operator types must match!");
- if (!yyvsp[-3].ConstVal->getType()->isInteger()) {
- if (!isa<PackedType>(yyvsp[-3].ConstVal->getType()) ||
- !cast<PackedType>(yyvsp[-3].ConstVal->getType())->getElementType()->isInteger())
+ if (!(yyvsp[-3].ConstVal)->getType()->isInteger()) {
+ if (Instruction::isShift((yyvsp[-5].BinaryOpVal)) || !isa<PackedType>((yyvsp[-3].ConstVal)->getType()) ||
+ !cast<PackedType>((yyvsp[-3].ConstVal)->getType())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!");
}
- yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+ (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 164:
-#line 1774 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+ ;}
+ break;
+
+ case 165:
+#line 1775 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("icmp operand types must match!");
- yyval.ConstVal = ConstantExpr::getICmp(yyvsp[-5].IPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
- ;
- break;}
-case 165:
-#line 1779 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+ (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[-5].IPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+ ;}
+ break;
+
+ case 166:
+#line 1780 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("fcmp operand types must match!");
- yyval.ConstVal = ConstantExpr::getFCmp(yyvsp[-5].FPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
- ;
- break;}
-case 166:
-#line 1784 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-1].ConstVal->getType() != Type::Int8Ty)
- GEN_ERROR("Shift count for shift constant must be i8 type!");
- if (!yyvsp[-3].ConstVal->getType()->isInteger())
- GEN_ERROR("Shift constant expression requires integer operand!");
- CHECK_FOR_ERROR;
- yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 167:
-#line 1793 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!ExtractElementInst::isValidOperands(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
+ (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[-5].FPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+ ;}
+ break;
+
+ case 167:
+#line 1785 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid extractelement operands!");
- yyval.ConstVal = ConstantExpr::getExtractElement(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+ (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 168:
-#line 1799 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!InsertElementInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
+ ;}
+ break;
+
+ case 168:
+#line 1791 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid insertelement operands!");
- yyval.ConstVal = ConstantExpr::getInsertElement(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+ (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 169:
-#line 1805 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!ShuffleVectorInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
+ ;}
+ break;
+
+ case 169:
+#line 1797 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid shufflevector operands!");
- yyval.ConstVal = ConstantExpr::getShuffleVector(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+ (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 170:
-#line 1814 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal);
+ ;}
+ break;
+
+ case 170:
+#line 1806 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 171:
-#line 1818 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ConstVector = new std::vector<Constant*>();
- yyval.ConstVector->push_back(yyvsp[0].ConstVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 172:
-#line 1826 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = false; ;
- break;}
-case 173:
-#line 1826 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = true; ;
- break;}
-case 174:
-#line 1837 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ModuleVal = ParserResult = CurModule.CurrentModule;
+ ;}
+ break;
+
+ case 171:
+#line 1810 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ConstVector) = new std::vector<Constant*>();
+ (yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 172:
+#line 1818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.BoolVal) = false; ;}
+ break;
+
+ case 173:
+#line 1818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.BoolVal) = true; ;}
+ break;
+
+ case 174:
+#line 1829 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
CurModule.ModuleDone();
CHECK_FOR_ERROR;
- ;
- break;}
-case 175:
-#line 1842 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ModuleVal = ParserResult = CurModule.CurrentModule;
+ ;}
+ break;
+
+ case 175:
+#line 1834 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
CurModule.ModuleDone();
CHECK_FOR_ERROR;
- ;
- break;}
-case 178:
-#line 1855 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ CurFun.isDeclare = false; ;
- break;}
-case 179:
-#line 1855 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 178:
+#line 1847 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { CurFun.isDeclare = false; ;}
+ break;
+
+ case 179:
+#line 1847 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CurFun.FunctionDone();
CHECK_FOR_ERROR
- ;
- break;}
-case 180:
-#line 1859 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ CurFun.isDeclare = true; ;
- break;}
-case 181:
-#line 1859 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 180:
+#line 1851 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { CurFun.isDeclare = true; ;}
+ break;
+
+ case 181:
+#line 1851 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CHECK_FOR_ERROR
- ;
- break;}
-case 182:
-#line 1862 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 182:
+#line 1854 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CHECK_FOR_ERROR
- ;
- break;}
-case 183:
-#line 1865 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 183:
+#line 1857 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
// Emit an error if there are any unresolved types left.
if (!CurModule.LateResolveTypes.empty()) {
const ValID &DID = CurModule.LateResolveTypes.begin()->first;
@@ -3524,13 +4266,14 @@ case 183:
}
}
CHECK_FOR_ERROR
- ;
- break;}
-case 184:
-#line 1877 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 184:
+#line 1869 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
// Eagerly resolve types. This is not an optimization, this is a
// requirement that is due to the fact that we could have this:
//
@@ -3540,226 +4283,248 @@ case 184:
// If types are not resolved eagerly, then the two types will not be
// determined to be the same type!
//
- ResolveTypeTo(yyvsp[-2].StrVal, *yyvsp[0].TypeVal);
+ ResolveTypeTo((yyvsp[-2].StrVal), *(yyvsp[0].TypeVal));
- if (!setTypeName(*yyvsp[0].TypeVal, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) {
+ if (!setTypeName(*(yyvsp[0].TypeVal), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
CHECK_FOR_ERROR
// If this is a named type that is not a redefinition, add it to the slot
// table.
- CurModule.Types.push_back(*yyvsp[0].TypeVal);
+ CurModule.Types.push_back(*(yyvsp[0].TypeVal));
}
- delete yyvsp[0].TypeVal;
+ delete (yyvsp[0].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 185:
-#line 1901 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- ResolveTypeTo(yyvsp[-2].StrVal, yyvsp[0].PrimType);
+ ;}
+ break;
+
+ case 185:
+#line 1893 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType));
- if (!setTypeName(yyvsp[0].PrimType, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) {
+ if (!setTypeName((yyvsp[0].PrimType), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
CHECK_FOR_ERROR
// If this is a named type that is not a redefinition, add it to the slot
// table.
- CurModule.Types.push_back(yyvsp[0].PrimType);
+ CurModule.Types.push_back((yyvsp[0].PrimType));
}
CHECK_FOR_ERROR
- ;
- break;}
-case 186:
-#line 1912 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 186:
+#line 1904 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
/* "Externally Visible" Linkage */
- if (yyvsp[0].ConstVal == 0)
+ if ((yyvsp[0].ConstVal) == 0)
GEN_ERROR("Global value initializer is not a constant!");
- CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage,
- yyvsp[-2].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal);
+ CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage,
+ (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 187:
-#line 1919 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 187:
+#line 1911 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CurGV = 0;
- ;
- break;}
-case 188:
-#line 1922 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[0].ConstVal == 0)
+ ;}
+ break;
+
+ case 188:
+#line 1914 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[0].ConstVal) == 0)
GEN_ERROR("Global value initializer is not a constant!");
- CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal);
+ CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 189:
-#line 1927 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 189:
+#line 1919 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CurGV = 0;
- ;
- break;}
-case 190:
-#line 1930 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 190:
+#line 1922 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
- CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].Visibility, yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0);
- CHECK_FOR_ERROR
- delete yyvsp[0].TypeVal;
- ;
- break;}
-case 191:
-#line 1936 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+ CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0);
+ CHECK_FOR_ERROR
+ delete (yyvsp[0].TypeVal);
+ ;}
+ break;
+
+ case 191:
+#line 1928 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CurGV = 0;
CHECK_FOR_ERROR
- ;
- break;}
-case 192:
-#line 1940 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 192:
+#line 1932 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CHECK_FOR_ERROR
- ;
- break;}
-case 193:
-#line 1943 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 193:
+#line 1935 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CHECK_FOR_ERROR
- ;
- break;}
-case 194:
-#line 1949 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 194:
+#line 1941 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
- char *EndStr = UnEscapeLexed(yyvsp[0].StrVal, true);
- std::string NewAsm(yyvsp[0].StrVal, EndStr);
- free(yyvsp[0].StrVal);
+ char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+ std::string NewAsm((yyvsp[0].StrVal), EndStr);
+ free((yyvsp[0].StrVal));
if (AsmSoFar.empty())
CurModule.CurrentModule->setModuleInlineAsm(NewAsm);
else
CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+NewAsm);
CHECK_FOR_ERROR
-;
- break;}
-case 195:
-#line 1962 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal);
- free(yyvsp[0].StrVal);
- ;
- break;}
-case 196:
-#line 1966 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- CurModule.CurrentModule->setDataLayout(yyvsp[0].StrVal);
- free(yyvsp[0].StrVal);
- ;
- break;}
-case 198:
-#line 1973 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
- free(yyvsp[0].StrVal);
+;}
+ break;
+
+ case 195:
+#line 1954 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
+ ;}
+ break;
+
+ case 196:
+#line 1958 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
+ ;}
+ break;
+
+ case 198:
+#line 1965 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 199:
-#line 1978 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
- free(yyvsp[0].StrVal);
+ ;}
+ break;
+
+ case 199:
+#line 1970 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 200:
-#line 1983 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 200:
+#line 1975 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
CHECK_FOR_ERROR
- ;
- break;}
-case 201:
-#line 1992 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 201:
+#line 1984 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- if (*yyvsp[-2].TypeVal == Type::VoidTy)
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ if (*(yyvsp[-2].TypeVal) == Type::VoidTy)
GEN_ERROR("void typed arguments are invalid!");
- ArgListEntry E; E.Attrs = yyvsp[-1].ParamAttrs; E.Ty = yyvsp[-2].TypeVal; E.Name = yyvsp[0].StrVal;
- yyval.ArgList = yyvsp[-4].ArgList;
- yyvsp[-4].ArgList->push_back(E);
- CHECK_FOR_ERROR
- ;
- break;}
-case 202:
-#line 2002 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal);
+ (yyval.ArgList) = (yyvsp[-4].ArgList);
+ (yyvsp[-4].ArgList)->push_back(E);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 202:
+#line 1994 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- if (*yyvsp[-2].TypeVal == Type::VoidTy)
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ if (*(yyvsp[-2].TypeVal) == Type::VoidTy)
GEN_ERROR("void typed arguments are invalid!");
- ArgListEntry E; E.Attrs = yyvsp[-1].ParamAttrs; E.Ty = yyvsp[-2].TypeVal; E.Name = yyvsp[0].StrVal;
- yyval.ArgList = new ArgListType;
- yyval.ArgList->push_back(E);
- CHECK_FOR_ERROR
- ;
- break;}
-case 203:
-#line 2013 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ArgList = yyvsp[0].ArgList;
+ ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal);
+ (yyval.ArgList) = new ArgListType;
+ (yyval.ArgList)->push_back(E);
CHECK_FOR_ERROR
- ;
- break;}
-case 204:
-#line 2017 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ArgList = yyvsp[-2].ArgList;
+ ;}
+ break;
+
+ case 203:
+#line 2005 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ArgList) = (yyvsp[0].ArgList);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 204:
+#line 2009 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ArgList) = (yyvsp[-2].ArgList);
struct ArgListEntry E;
E.Ty = new PATypeHolder(Type::VoidTy);
E.Name = 0;
E.Attrs = FunctionType::NoAttributeSet;
- yyval.ArgList->push_back(E);
+ (yyval.ArgList)->push_back(E);
CHECK_FOR_ERROR
- ;
- break;}
-case 205:
-#line 2026 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ArgList = new ArgListType;
+ ;}
+ break;
+
+ case 205:
+#line 2018 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ArgList) = new ArgListType;
struct ArgListEntry E;
E.Ty = new PATypeHolder(Type::VoidTy);
E.Name = 0;
E.Attrs = FunctionType::NoAttributeSet;
- yyval.ArgList->push_back(E);
+ (yyval.ArgList)->push_back(E);
CHECK_FOR_ERROR
- ;
- break;}
-case 206:
-#line 2035 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ArgList = 0;
+ ;}
+ break;
+
+ case 206:
+#line 2027 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ArgList) = 0;
CHECK_FOR_ERROR
- ;
- break;}
-case 207:
-#line 2041 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- UnEscapeLexed(yyvsp[-6].StrVal);
- std::string FunctionName(yyvsp[-6].StrVal);
- free(yyvsp[-6].StrVal); // Free strdup'd memory!
+ ;}
+ break;
+
+ case 207:
+#line 2033 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ UnEscapeLexed((yyvsp[-6].StrVal));
+ std::string FunctionName((yyvsp[-6].StrVal));
+ free((yyvsp[-6].StrVal)); // Free strdup'd memory!
// Check the function result for abstractness if this is a define. We should
// have no abstract types at this point
- if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(yyvsp[-7].TypeVal))
- GEN_ERROR("Reference to abstract result: "+ yyvsp[-7].TypeVal->get()->getDescription());
+ if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[-7].TypeVal)))
+ GEN_ERROR("Reference to abstract result: "+ (yyvsp[-7].TypeVal)->get()->getDescription());
std::vector<const Type*> ParamTypeList;
std::vector<FunctionType::ParameterAttributes> ParamAttrs;
- ParamAttrs.push_back(yyvsp[-2].ParamAttrs);
- if (yyvsp[-4].ArgList) { // If there are arguments...
- for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I) {
+ ParamAttrs.push_back((yyvsp[-2].ParamAttrs));
+ if ((yyvsp[-4].ArgList)) { // If there are arguments...
+ for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I) {
const Type* Ty = I->Ty->get();
if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty))
GEN_ERROR("Reference to abstract argument: " + Ty->getDescription());
@@ -3772,10 +4537,10 @@ case 207:
bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy;
if (isVarArg) ParamTypeList.pop_back();
- FunctionType *FT = FunctionType::get(*yyvsp[-7].TypeVal, ParamTypeList, isVarArg,
+ FunctionType *FT = FunctionType::get(*(yyvsp[-7].TypeVal), ParamTypeList, isVarArg,
ParamAttrs);
const PointerType *PFT = PointerType::get(FT);
- delete yyvsp[-7].TypeVal;
+ delete (yyvsp[-7].TypeVal);
ValID ID;
if (!FunctionName.empty()) {
@@ -3820,24 +4585,24 @@ case 207:
Fn->setLinkage(CurFun.Linkage);
Fn->setVisibility(CurFun.Visibility);
}
- Fn->setCallingConv(yyvsp[-8].UIntVal);
- Fn->setAlignment(yyvsp[0].UIntVal);
- if (yyvsp[-1].StrVal) {
- Fn->setSection(yyvsp[-1].StrVal);
- free(yyvsp[-1].StrVal);
+ Fn->setCallingConv((yyvsp[-8].UIntVal));
+ Fn->setAlignment((yyvsp[0].UIntVal));
+ if ((yyvsp[-1].StrVal)) {
+ Fn->setSection((yyvsp[-1].StrVal));
+ free((yyvsp[-1].StrVal));
}
// Add all of the arguments we parsed to the function...
- if (yyvsp[-4].ArgList) { // Is null if empty...
+ if ((yyvsp[-4].ArgList)) { // Is null if empty...
if (isVarArg) { // Nuke the last entry
- assert(yyvsp[-4].ArgList->back().Ty->get() == Type::VoidTy && yyvsp[-4].ArgList->back().Name == 0&&
+ assert((yyvsp[-4].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[-4].ArgList)->back().Name == 0&&
"Not a varargs marker!");
- delete yyvsp[-4].ArgList->back().Ty;
- yyvsp[-4].ArgList->pop_back(); // Delete the last entry
+ delete (yyvsp[-4].ArgList)->back().Ty;
+ (yyvsp[-4].ArgList)->pop_back(); // Delete the last entry
}
Function::arg_iterator ArgIt = Fn->arg_begin();
unsigned Idx = 1;
- for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I, ++ArgIt) {
+ for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I, ++ArgIt) {
delete I->Ty; // Delete the typeholder...
setValueName(ArgIt, I->Name); // Insert arg into symtab...
CHECK_FOR_ERROR
@@ -3845,114 +4610,128 @@ case 207:
Idx++;
}
- delete yyvsp[-4].ArgList; // We're now done with the argument list
+ delete (yyvsp[-4].ArgList); // We're now done with the argument list
}
CHECK_FOR_ERROR
-;
- break;}
-case 210:
-#line 2148 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.FunctionVal = CurFun.CurrentFunction;
+;}
+ break;
+
+ case 210:
+#line 2140 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.FunctionVal) = CurFun.CurrentFunction;
// Make sure that we keep track of the linkage type even if there was a
// previous "declare".
- yyval.FunctionVal->setLinkage(yyvsp[-3].Linkage);
- yyval.FunctionVal->setVisibility(yyvsp[-2].Visibility);
-;
- break;}
-case 213:
-#line 2159 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.FunctionVal = yyvsp[-1].FunctionVal;
+ (yyval.FunctionVal)->setLinkage((yyvsp[-3].Linkage));
+ (yyval.FunctionVal)->setVisibility((yyvsp[-2].Visibility));
+;}
+ break;
+
+ case 213:
+#line 2151 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
-;
- break;}
-case 214:
-#line 2164 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- CurFun.CurrentFunction->setLinkage(yyvsp[-2].Linkage);
- CurFun.CurrentFunction->setVisibility(yyvsp[-1].Visibility);
- yyval.FunctionVal = CurFun.CurrentFunction;
+;}
+ break;
+
+ case 214:
+#line 2156 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ CurFun.CurrentFunction->setLinkage((yyvsp[-2].Linkage));
+ CurFun.CurrentFunction->setVisibility((yyvsp[-1].Visibility));
+ (yyval.FunctionVal) = CurFun.CurrentFunction;
CurFun.FunctionDone();
CHECK_FOR_ERROR
- ;
- break;}
-case 215:
-#line 2176 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BoolVal = false;
+ ;}
+ break;
+
+ case 215:
+#line 2168 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BoolVal) = false;
CHECK_FOR_ERROR
- ;
- break;}
-case 216:
-#line 2180 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BoolVal = true;
- CHECK_FOR_ERROR
- ;
- break;}
-case 217:
-#line 2185 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // A reference to a direct constant
- yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val);
- CHECK_FOR_ERROR
- ;
- break;}
-case 218:
-#line 2189 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val);
- CHECK_FOR_ERROR
- ;
- break;}
-case 219:
-#line 2193 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Perhaps it's an FP constant?
- yyval.ValIDVal = ValID::create(yyvsp[0].FPVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 220:
-#line 2197 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::create(ConstantInt::getTrue());
+ ;}
+ break;
+
+ case 216:
+#line 2172 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BoolVal) = true;
CHECK_FOR_ERROR
- ;
- break;}
-case 221:
-#line 2201 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::create(ConstantInt::getFalse());
+ ;}
+ break;
+
+ case 217:
+#line 2177 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // A reference to a direct constant
+ (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val));
CHECK_FOR_ERROR
- ;
- break;}
-case 222:
-#line 2205 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::createNull();
+ ;}
+ break;
+
+ case 218:
+#line 2181 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val));
CHECK_FOR_ERROR
- ;
- break;}
-case 223:
-#line 2209 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::createUndef();
- CHECK_FOR_ERROR
- ;
- break;}
-case 224:
-#line 2213 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // A vector zero constant.
- yyval.ValIDVal = ValID::createZeroInit();
- CHECK_FOR_ERROR
- ;
- break;}
-case 225:
-#line 2217 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized packed vector
- const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();
- int NumElements = yyvsp[-1].ConstVector->size();
+ ;}
+ break;
+
+ case 219:
+#line 2185 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Perhaps it's an FP constant?
+ (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 220:
+#line 2189 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 221:
+#line 2193 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 222:
+#line 2197 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::createNull();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 223:
+#line 2201 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::createUndef();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 224:
+#line 2205 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // A vector zero constant.
+ (yyval.ValIDVal) = ValID::createZeroInit();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 225:
+#line 2209 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Nonempty unsized packed vector
+ const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType();
+ int NumElements = (yyvsp[-1].ConstVector)->size();
PackedType* pt = PackedType::get(ETy, NumElements);
PATypeHolder* PTy = new PATypeHolder(
@@ -3964,119 +4743,131 @@ case 225:
);
// Verify all elements are correct type!
- for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) {
- if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+ for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+ if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
GEN_ERROR("Element #" + utostr(i) + " is not of type '" +
ETy->getDescription() +"' as required!\nIt is of type '" +
- (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+ (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
}
- yyval.ValIDVal = ValID::create(ConstantPacked::get(pt, *yyvsp[-1].ConstVector));
- delete PTy; delete yyvsp[-1].ConstVector;
+ (yyval.ValIDVal) = ValID::create(ConstantPacked::get(pt, *(yyvsp[-1].ConstVector)));
+ delete PTy; delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
- ;
- break;}
-case 226:
-#line 2242 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal);
+ ;}
+ break;
+
+ case 226:
+#line 2234 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 227:
-#line 2246 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- char *End = UnEscapeLexed(yyvsp[-2].StrVal, true);
- std::string AsmStr = std::string(yyvsp[-2].StrVal, End);
- End = UnEscapeLexed(yyvsp[0].StrVal, true);
- std::string Constraints = std::string(yyvsp[0].StrVal, End);
- yyval.ValIDVal = ValID::createInlineAsm(AsmStr, Constraints, yyvsp[-3].BoolVal);
- free(yyvsp[-2].StrVal);
- free(yyvsp[0].StrVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 228:
-#line 2260 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Is it an integer reference...?
- yyval.ValIDVal = ValID::createLocalID(yyvsp[0].UIntVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 229:
-#line 2264 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValIDVal = ValID::createGlobalID(yyvsp[0].UIntVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 230:
-#line 2268 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Is it a named reference...?
- yyval.ValIDVal = ValID::createLocalName(yyvsp[0].StrVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 231:
-#line 2272 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Is it a named reference...?
- yyval.ValIDVal = ValID::createGlobalName(yyvsp[0].StrVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 234:
-#line 2284 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 227:
+#line 2238 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
+ std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
+ End = UnEscapeLexed((yyvsp[0].StrVal), true);
+ std::string Constraints = std::string((yyvsp[0].StrVal), End);
+ (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[-3].BoolVal));
+ free((yyvsp[-2].StrVal));
+ free((yyvsp[0].StrVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 228:
+#line 2252 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Is it an integer reference...?
+ (yyval.ValIDVal) = ValID::createLocalID((yyvsp[0].UIntVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 229:
+#line 2256 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[0].UIntVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 230:
+#line 2260 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Is it a named reference...?
+ (yyval.ValIDVal) = ValID::createLocalName((yyvsp[0].StrVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 231:
+#line 2264 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Is it a named reference...?
+ (yyval.ValIDVal) = ValID::createGlobalName((yyvsp[0].StrVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 234:
+#line 2276 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- yyval.ValueVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal);
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 235:
-#line 2293 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.FunctionVal = yyvsp[-1].FunctionVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 236:
-#line 2297 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Do not allow functions with 0 basic blocks
- yyval.FunctionVal = yyvsp[-1].FunctionVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 237:
-#line 2306 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
+ delete (yyvsp[-1].TypeVal);
CHECK_FOR_ERROR
- InsertValue(yyvsp[0].TermInstVal);
+ ;}
+ break;
- yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal);
- InsertValue(yyvsp[-2].BasicBlockVal);
- yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal;
+ case 235:
+#line 2285 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 238:
-#line 2317 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (CastInst *CI1 = dyn_cast<CastInst>(yyvsp[0].InstVal))
+ ;}
+ break;
+
+ case 236:
+#line 2289 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Do not allow functions with 0 basic blocks
+ (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 237:
+#line 2298 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal));
+ CHECK_FOR_ERROR
+ InsertValue((yyvsp[0].TermInstVal));
+
+ (yyvsp[-2].BasicBlockVal)->getInstList().push_back((yyvsp[0].TermInstVal));
+ InsertValue((yyvsp[-2].BasicBlockVal));
+ (yyval.BasicBlockVal) = (yyvsp[-2].BasicBlockVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 238:
+#line 2309 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal)))
if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
if (CI2->getParent() == 0)
- yyvsp[-1].BasicBlockVal->getInstList().push_back(CI2);
- yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);
- yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 239:
-#line 2326 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BasicBlockVal = getBBVal(ValID::createLocalID(CurFun.NextBBNum++), true);
+ (yyvsp[-1].BasicBlockVal)->getInstList().push_back(CI2);
+ (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal));
+ (yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 239:
+#line 2318 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BasicBlockVal) = getBBVal(ValID::createLocalID(CurFun.NextBBNum++), true);
CHECK_FOR_ERROR
// Make sure to move the basic block to the correct location in the
@@ -4084,14 +4875,15 @@ case 239:
// referenced.
Function::BasicBlockListType &BBL =
CurFun.CurrentFunction->getBasicBlockList();
- BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
+ BBL.splice(BBL.end(), BBL, (yyval.BasicBlockVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 240:
-#line 2338 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BasicBlockVal = getBBVal(ValID::createLocalName(yyvsp[0].StrVal), true);
+ ;}
+ break;
+
+ case 240:
+#line 2330 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BasicBlockVal) = getBBVal(ValID::createLocalName((yyvsp[0].StrVal)), true);
CHECK_FOR_ERROR
// Make sure to move the basic block to the correct location in the
@@ -4099,93 +4891,100 @@ case 240:
// referenced.
Function::BasicBlockListType &BBL =
CurFun.CurrentFunction->getBasicBlockList();
- BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 241:
-#line 2351 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Return with a result...
- yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 242:
-#line 2355 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Return with no result...
- yyval.TermInstVal = new ReturnInst();
- CHECK_FOR_ERROR
- ;
- break;}
-case 243:
-#line 2359 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Unconditional Branch...
- BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
- CHECK_FOR_ERROR
- yyval.TermInstVal = new BranchInst(tmpBB);
- ;
- break;}
-case 244:
-#line 2364 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- assert(cast<IntegerType>(yyvsp[-7].PrimType)->getBitWidth() == 1 && "Not Bool?");
- BasicBlock* tmpBBA = getBBVal(yyvsp[-3].ValIDVal);
- CHECK_FOR_ERROR
- BasicBlock* tmpBBB = getBBVal(yyvsp[0].ValIDVal);
- CHECK_FOR_ERROR
- Value* tmpVal = getVal(Type::Int1Ty, yyvsp[-6].ValIDVal);
- CHECK_FOR_ERROR
- yyval.TermInstVal = new BranchInst(tmpBBA, tmpBBB, tmpVal);
- ;
- break;}
-case 245:
-#line 2374 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- Value* tmpVal = getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal);
+ BBL.splice(BBL.end(), BBL, (yyval.BasicBlockVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 241:
+#line 2343 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Return with a result...
+ (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal));
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 242:
+#line 2347 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Return with no result...
+ (yyval.TermInstVal) = new ReturnInst();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 243:
+#line 2351 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Unconditional Branch...
+ BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyval.TermInstVal) = new BranchInst(tmpBB);
+ ;}
+ break;
+
+ case 244:
+#line 2356 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ assert(cast<IntegerType>((yyvsp[-7].PrimType))->getBitWidth() == 1 && "Not Bool?");
+ BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal));
+ CHECK_FOR_ERROR
+ BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal));
+ CHECK_FOR_ERROR
+ Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[-6].ValIDVal));
CHECK_FOR_ERROR
- BasicBlock* tmpBB = getBBVal(yyvsp[-3].ValIDVal);
+ (yyval.TermInstVal) = new BranchInst(tmpBBA, tmpBBB, tmpVal);
+ ;}
+ break;
+
+ case 245:
+#line 2366 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal));
CHECK_FOR_ERROR
- SwitchInst *S = new SwitchInst(tmpVal, tmpBB, yyvsp[-1].JumpTable->size());
- yyval.TermInstVal = S;
+ BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal));
+ CHECK_FOR_ERROR
+ SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[-1].JumpTable)->size());
+ (yyval.TermInstVal) = S;
- std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = yyvsp[-1].JumpTable->begin(),
- E = yyvsp[-1].JumpTable->end();
+ std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[-1].JumpTable)->begin(),
+ E = (yyvsp[-1].JumpTable)->end();
for (; I != E; ++I) {
if (ConstantInt *CI = dyn_cast<ConstantInt>(I->first))
S->addCase(CI, I->second);
else
GEN_ERROR("Switch case is constant, but not a simple integer!");
}
- delete yyvsp[-1].JumpTable;
+ delete (yyvsp[-1].JumpTable);
CHECK_FOR_ERROR
- ;
- break;}
-case 246:
-#line 2393 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- Value* tmpVal = getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal);
+ ;}
+ break;
+
+ case 246:
+#line 2385 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal));
CHECK_FOR_ERROR
- BasicBlock* tmpBB = getBBVal(yyvsp[-2].ValIDVal);
+ BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal));
CHECK_FOR_ERROR
SwitchInst *S = new SwitchInst(tmpVal, tmpBB, 0);
- yyval.TermInstVal = S;
+ (yyval.TermInstVal) = S;
CHECK_FOR_ERROR
- ;
- break;}
-case 247:
-#line 2403 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 247:
+#line 2395 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
// Handle the short syntax
const PointerType *PFTy = 0;
const FunctionType *Ty = 0;
- if (!(PFTy = dyn_cast<PointerType>(yyvsp[-11].TypeVal->get())) ||
+ if (!(PFTy = dyn_cast<PointerType>((yyvsp[-11].TypeVal)->get())) ||
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
// Pull out the types of all of the arguments...
std::vector<const Type*> ParamTypes;
FunctionType::ParamAttrsList ParamAttrs;
- ParamAttrs.push_back(yyvsp[-6].ParamAttrs);
- for (ValueRefList::iterator I = yyvsp[-8].ValueRefList->begin(), E = yyvsp[-8].ValueRefList->end(); I != E; ++I) {
+ ParamAttrs.push_back((yyvsp[-6].ParamAttrs));
+ for (ValueRefList::iterator I = (yyvsp[-8].ValueRefList)->begin(), E = (yyvsp[-8].ValueRefList)->end(); I != E; ++I) {
const Type *Ty = I->Val->getType();
if (Ty == Type::VoidTy)
GEN_ERROR("Short call syntax cannot be used with varargs");
@@ -4193,20 +4992,20 @@ case 247:
ParamAttrs.push_back(I->Attrs);
}
- Ty = FunctionType::get(yyvsp[-11].TypeVal->get(), ParamTypes, false, ParamAttrs);
+ Ty = FunctionType::get((yyvsp[-11].TypeVal)->get(), ParamTypes, false, ParamAttrs);
PFTy = PointerType::get(Ty);
}
- Value *V = getVal(PFTy, yyvsp[-10].ValIDVal); // Get the function we're calling...
+ Value *V = getVal(PFTy, (yyvsp[-10].ValIDVal)); // Get the function we're calling...
CHECK_FOR_ERROR
- BasicBlock *Normal = getBBVal(yyvsp[-3].ValIDVal);
+ BasicBlock *Normal = getBBVal((yyvsp[-3].ValIDVal));
CHECK_FOR_ERROR
- BasicBlock *Except = getBBVal(yyvsp[0].ValIDVal);
+ BasicBlock *Except = getBBVal((yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
// Check the arguments
ValueList Args;
- if (yyvsp[-8].ValueRefList->empty()) { // Has no arguments?
+ if ((yyvsp[-8].ValueRefList)->empty()) { // Has no arguments?
// Make sure no arguments is a good thing!
if (Ty->getNumParams() != 0)
GEN_ERROR("No arguments passed to a function that "
@@ -4216,7 +5015,7 @@ case 247:
// correctly!
FunctionType::param_iterator I = Ty->param_begin();
FunctionType::param_iterator E = Ty->param_end();
- ValueRefList::iterator ArgI = yyvsp[-8].ValueRefList->begin(), ArgE = yyvsp[-8].ValueRefList->end();
+ ValueRefList::iterator ArgI = (yyvsp[-8].ValueRefList)->begin(), ArgE = (yyvsp[-8].ValueRefList)->end();
for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
if (ArgI->Val->getType() != *I)
@@ -4235,326 +5034,340 @@ case 247:
// Create the InvokeInst
InvokeInst *II = new InvokeInst(V, Normal, Except, Args);
- II->setCallingConv(yyvsp[-12].UIntVal);
- yyval.TermInstVal = II;
- delete yyvsp[-8].ValueRefList;
- CHECK_FOR_ERROR
- ;
- break;}
-case 248:
-#line 2469 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TermInstVal = new UnwindInst();
+ II->setCallingConv((yyvsp[-12].UIntVal));
+ (yyval.TermInstVal) = II;
+ delete (yyvsp[-8].ValueRefList);
CHECK_FOR_ERROR
- ;
- break;}
-case 249:
-#line 2473 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.TermInstVal = new UnreachableInst();
+ ;}
+ break;
+
+ case 248:
+#line 2461 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TermInstVal) = new UnwindInst();
CHECK_FOR_ERROR
- ;
- break;}
-case 250:
-#line 2480 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.JumpTable = yyvsp[-5].JumpTable;
- Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
+ ;}
+ break;
+
+ case 249:
+#line 2465 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.TermInstVal) = new UnreachableInst();
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 250:
+#line 2472 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.JumpTable) = (yyvsp[-5].JumpTable);
+ Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
CHECK_FOR_ERROR
if (V == 0)
GEN_ERROR("May only switch on a constant pool value!");
- BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+ BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.JumpTable->push_back(std::make_pair(V, tmpBB));
- ;
- break;}
-case 251:
-#line 2491 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.JumpTable = new std::vector<std::pair<Constant*, BasicBlock*> >();
- Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
+ (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
+ ;}
+ break;
+
+ case 251:
+#line 2483 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
+ Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
CHECK_FOR_ERROR
if (V == 0)
GEN_ERROR("May only switch on a constant pool value!");
- BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+ BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.JumpTable->push_back(std::make_pair(V, tmpBB));
- ;
- break;}
-case 252:
-#line 2504 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
+ ;}
+ break;
+
+ case 252:
+#line 2496 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
// Is this definition named?? if so, assign the name...
- setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);
+ setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal));
CHECK_FOR_ERROR
- InsertValue(yyvsp[0].InstVal);
- yyval.InstVal = yyvsp[0].InstVal;
+ InsertValue((yyvsp[0].InstVal));
+ (yyval.InstVal) = (yyvsp[0].InstVal);
CHECK_FOR_ERROR
-;
- break;}
-case 253:
-#line 2513 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Used for PHI nodes
+;}
+ break;
+
+ case 253:
+#line 2505 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { // Used for PHI nodes
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-5].TypeVal)->getDescription());
- yyval.PHIList = new std::list<std::pair<Value*, BasicBlock*> >();
- Value* tmpVal = getVal(*yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal);
- CHECK_FOR_ERROR
- BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal);
- CHECK_FOR_ERROR
- yyval.PHIList->push_back(std::make_pair(tmpVal, tmpBB));
- delete yyvsp[-5].TypeVal;
- ;
- break;}
-case 254:
-#line 2524 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.PHIList = yyvsp[-6].PHIList;
- Value* tmpVal = getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal);
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription());
+ (yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >();
+ Value* tmpVal = getVal(*(yyvsp[-5].TypeVal), (yyvsp[-3].ValIDVal));
CHECK_FOR_ERROR
- BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal);
+ BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
CHECK_FOR_ERROR
- yyvsp[-6].PHIList->push_back(std::make_pair(tmpVal, tmpBB));
- ;
- break;}
-case 255:
-#line 2534 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+ delete (yyvsp[-5].TypeVal);
+ ;}
+ break;
+
+ case 254:
+#line 2516 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.PHIList) = (yyvsp[-6].PHIList);
+ Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal));
+ CHECK_FOR_ERROR
+ BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyvsp[-6].PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+ ;}
+ break;
+
+ case 255:
+#line 2526 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
// Used for call and invoke instructions
- yyval.ValueRefList = new ValueRefList();
- ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal);
- yyval.ValueRefList->push_back(E);
- ;
- break;}
-case 256:
-#line 2542 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (yyval.ValueRefList) = new ValueRefList();
+ ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal));
+ (yyval.ValueRefList)->push_back(E);
+ ;}
+ break;
+
+ case 256:
+#line 2534 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- yyval.ValueRefList = yyvsp[-4].ValueRefList;
- ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal);
- yyval.ValueRefList->push_back(E);
- CHECK_FOR_ERROR
- ;
- break;}
-case 257:
-#line 2550 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ValueRefList = new ValueRefList(); ;
- break;}
-case 258:
-#line 2553 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ValueList = new std::vector<Value*>(); ;
- break;}
-case 259:
-#line 2554 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.ValueList = yyvsp[-2].ValueList;
- yyval.ValueList->push_back(yyvsp[0].ValueVal);
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ (yyval.ValueRefList) = (yyvsp[-4].ValueRefList);
+ ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal));
+ (yyval.ValueRefList)->push_back(E);
CHECK_FOR_ERROR
- ;
- break;}
-case 260:
-#line 2561 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BoolVal = true;
+ ;}
+ break;
+
+ case 257:
+#line 2542 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ValueRefList) = new ValueRefList(); ;}
+ break;
+
+ case 258:
+#line 2545 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ { (yyval.ValueList) = new std::vector<Value*>(); ;}
+ break;
+
+ case 259:
+#line 2546 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.ValueList) = (yyvsp[-2].ValueList);
+ (yyval.ValueList)->push_back((yyvsp[0].ValueVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 261:
-#line 2565 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BoolVal = false;
+ ;}
+ break;
+
+ case 260:
+#line 2553 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BoolVal) = true;
CHECK_FOR_ERROR
- ;
- break;}
-case 262:
-#line 2570 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 261:
+#line 2557 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BoolVal) = false;
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 262:
+#line 2562 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
- if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() &&
- !isa<PackedType>((*yyvsp[-3].TypeVal).get()))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+ if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() &&
+ !isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
GEN_ERROR(
"Arithmetic operator requires integer, FP, or packed operands!");
- if (isa<PackedType>((*yyvsp[-3].TypeVal).get()) &&
- (yyvsp[-4].BinaryOpVal == Instruction::URem ||
- yyvsp[-4].BinaryOpVal == Instruction::SRem ||
- yyvsp[-4].BinaryOpVal == Instruction::FRem))
+ if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()) &&
+ ((yyvsp[-4].BinaryOpVal) == Instruction::URem ||
+ (yyvsp[-4].BinaryOpVal) == Instruction::SRem ||
+ (yyvsp[-4].BinaryOpVal) == Instruction::FRem))
GEN_ERROR("U/S/FRem not supported on packed types!");
- Value* val1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+ Value* val1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
CHECK_FOR_ERROR
- Value* val2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+ Value* val2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, val1, val2);
- if (yyval.InstVal == 0)
+ (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), val1, val2);
+ if ((yyval.InstVal) == 0)
GEN_ERROR("binary operator returned null!");
- delete yyvsp[-3].TypeVal;
- ;
- break;}
-case 263:
-#line 2591 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ delete (yyvsp[-3].TypeVal);
+ ;}
+ break;
+
+ case 263:
+#line 2583 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
- if (!(*yyvsp[-3].TypeVal)->isInteger()) {
- if (!isa<PackedType>(yyvsp[-3].TypeVal->get()) ||
- !cast<PackedType>(yyvsp[-3].TypeVal->get())->getElementType()->isInteger())
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+ if (!(*(yyvsp[-3].TypeVal))->isInteger()) {
+ if (Instruction::isShift((yyvsp[-4].BinaryOpVal)) || !isa<PackedType>((yyvsp[-3].TypeVal)->get()) ||
+ !cast<PackedType>((yyvsp[-3].TypeVal)->get())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!");
}
- Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+ Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
CHECK_FOR_ERROR
- Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+ Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, tmpVal1, tmpVal2);
- if (yyval.InstVal == 0)
+ (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), tmpVal1, tmpVal2);
+ if ((yyval.InstVal) == 0)
GEN_ERROR("binary operator returned null!");
- delete yyvsp[-3].TypeVal;
- ;
- break;}
-case 264:
-#line 2608 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ delete (yyvsp[-3].TypeVal);
+ ;}
+ break;
+
+ case 264:
+#line 2600 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
- if (isa<PackedType>((*yyvsp[-3].TypeVal).get()))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+ if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
GEN_ERROR("Packed types not supported by icmp instruction");
- Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+ Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
CHECK_FOR_ERROR
- Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+ Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.InstVal = CmpInst::create(yyvsp[-5].OtherOpVal, yyvsp[-4].IPredicate, tmpVal1, tmpVal2);
- if (yyval.InstVal == 0)
+ (yyval.InstVal) = CmpInst::create((yyvsp[-5].OtherOpVal), (yyvsp[-4].IPredicate), tmpVal1, tmpVal2);
+ if ((yyval.InstVal) == 0)
GEN_ERROR("icmp operator returned null!");
- ;
- break;}
-case 265:
-#line 2621 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 265:
+#line 2613 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
- if (isa<PackedType>((*yyvsp[-3].TypeVal).get()))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+ if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
GEN_ERROR("Packed types not supported by fcmp instruction");
- Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+ Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
CHECK_FOR_ERROR
- Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+ Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.InstVal = CmpInst::create(yyvsp[-5].OtherOpVal, yyvsp[-4].FPredicate, tmpVal1, tmpVal2);
- if (yyval.InstVal == 0)
+ (yyval.InstVal) = CmpInst::create((yyvsp[-5].OtherOpVal), (yyvsp[-4].FPredicate), tmpVal1, tmpVal2);
+ if ((yyval.InstVal) == 0)
GEN_ERROR("fcmp operator returned null!");
- ;
- break;}
-case 266:
-#line 2634 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[0].ValueVal->getType() != Type::Int8Ty)
- GEN_ERROR("Shift amount must be i8 type!");
- if (!yyvsp[-2].ValueVal->getType()->isInteger())
- GEN_ERROR("Shift constant expression requires integer operand!");
- CHECK_FOR_ERROR;
- yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
- CHECK_FOR_ERROR
- ;
- break;}
-case 267:
-#line 2643 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 266:
+#line 2626 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
- Value* Val = yyvsp[-2].ValueVal;
- const Type* DestTy = yyvsp[0].TypeVal->get();
- if (!CastInst::castIsValid(yyvsp[-3].CastOpVal, Val, DestTy))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+ Value* Val = (yyvsp[-2].ValueVal);
+ const Type* DestTy = (yyvsp[0].TypeVal)->get();
+ if (!CastInst::castIsValid((yyvsp[-3].CastOpVal), Val, DestTy))
GEN_ERROR("invalid cast opcode for cast from '" +
Val->getType()->getDescription() + "' to '" +
DestTy->getDescription() + "'!");
- yyval.InstVal = CastInst::create(yyvsp[-3].CastOpVal, Val, DestTy);
- delete yyvsp[0].TypeVal;
- ;
- break;}
-case 268:
-#line 2655 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (yyvsp[-4].ValueVal->getType() != Type::Int1Ty)
+ (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal), Val, DestTy);
+ delete (yyvsp[0].TypeVal);
+ ;}
+ break;
+
+ case 267:
+#line 2638 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if ((yyvsp[-4].ValueVal)->getType() != Type::Int1Ty)
GEN_ERROR("select condition must be boolean!");
- if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType())
+ if ((yyvsp[-2].ValueVal)->getType() != (yyvsp[0].ValueVal)->getType())
GEN_ERROR("select value types should match!");
- yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+ (yyval.InstVal) = new SelectInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 269:
-#line 2663 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 268:
+#line 2646 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
- yyval.InstVal = new VAArgInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);
- delete yyvsp[0].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 270:
-#line 2670 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!ExtractElementInst::isValidOperands(yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+ (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal));
+ delete (yyvsp[0].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 269:
+#line 2653 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid extractelement operands!");
- yyval.InstVal = new ExtractElementInst(yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+ (yyval.InstVal) = new ExtractElementInst((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 271:
-#line 2676 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!InsertElementInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+ ;}
+ break;
+
+ case 270:
+#line 2659 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid insertelement operands!");
- yyval.InstVal = new InsertElementInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+ (yyval.InstVal) = new InsertElementInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 272:
-#line 2682 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!ShuffleVectorInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+ ;}
+ break;
+
+ case 271:
+#line 2665 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid shufflevector operands!");
- yyval.InstVal = new ShuffleVectorInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+ (yyval.InstVal) = new ShuffleVectorInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 273:
-#line 2688 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- const Type *Ty = yyvsp[0].PHIList->front().first->getType();
+ ;}
+ break;
+
+ case 272:
+#line 2671 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ const Type *Ty = (yyvsp[0].PHIList)->front().first->getType();
if (!Ty->isFirstClassType())
GEN_ERROR("PHI node operands must be of first class type!");
- yyval.InstVal = new PHINode(Ty);
- ((PHINode*)yyval.InstVal)->reserveOperandSpace(yyvsp[0].PHIList->size());
- while (yyvsp[0].PHIList->begin() != yyvsp[0].PHIList->end()) {
- if (yyvsp[0].PHIList->front().first->getType() != Ty)
+ (yyval.InstVal) = new PHINode(Ty);
+ ((PHINode*)(yyval.InstVal))->reserveOperandSpace((yyvsp[0].PHIList)->size());
+ while ((yyvsp[0].PHIList)->begin() != (yyvsp[0].PHIList)->end()) {
+ if ((yyvsp[0].PHIList)->front().first->getType() != Ty)
GEN_ERROR("All elements of a PHI node must be of the same type!");
- cast<PHINode>(yyval.InstVal)->addIncoming(yyvsp[0].PHIList->front().first, yyvsp[0].PHIList->front().second);
- yyvsp[0].PHIList->pop_front();
+ cast<PHINode>((yyval.InstVal))->addIncoming((yyvsp[0].PHIList)->front().first, (yyvsp[0].PHIList)->front().second);
+ (yyvsp[0].PHIList)->pop_front();
}
- delete yyvsp[0].PHIList; // Free the list...
+ delete (yyvsp[0].PHIList); // Free the list...
CHECK_FOR_ERROR
- ;
- break;}
-case 274:
-#line 2704 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 273:
+#line 2687 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
// Handle the short syntax
const PointerType *PFTy = 0;
const FunctionType *Ty = 0;
- if (!(PFTy = dyn_cast<PointerType>(yyvsp[-5].TypeVal->get())) ||
+ if (!(PFTy = dyn_cast<PointerType>((yyvsp[-5].TypeVal)->get())) ||
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
// Pull out the types of all of the arguments...
std::vector<const Type*> ParamTypes;
FunctionType::ParamAttrsList ParamAttrs;
- ParamAttrs.push_back(yyvsp[0].ParamAttrs);
- for (ValueRefList::iterator I = yyvsp[-2].ValueRefList->begin(), E = yyvsp[-2].ValueRefList->end(); I != E; ++I) {
+ ParamAttrs.push_back((yyvsp[0].ParamAttrs));
+ for (ValueRefList::iterator I = (yyvsp[-2].ValueRefList)->begin(), E = (yyvsp[-2].ValueRefList)->end(); I != E; ++I) {
const Type *Ty = I->Val->getType();
if (Ty == Type::VoidTy)
GEN_ERROR("Short call syntax cannot be used with varargs");
@@ -4562,16 +5375,16 @@ case 274:
ParamAttrs.push_back(I->Attrs);
}
- Ty = FunctionType::get(yyvsp[-5].TypeVal->get(), ParamTypes, false, ParamAttrs);
+ Ty = FunctionType::get((yyvsp[-5].TypeVal)->get(), ParamTypes, false, ParamAttrs);
PFTy = PointerType::get(Ty);
}
- Value *V = getVal(PFTy, yyvsp[-4].ValIDVal); // Get the function we're calling...
+ Value *V = getVal(PFTy, (yyvsp[-4].ValIDVal)); // Get the function we're calling...
CHECK_FOR_ERROR
// Check the arguments
ValueList Args;
- if (yyvsp[-2].ValueRefList->empty()) { // Has no arguments?
+ if ((yyvsp[-2].ValueRefList)->empty()) { // Has no arguments?
// Make sure no arguments is a good thing!
if (Ty->getNumParams() != 0)
GEN_ERROR("No arguments passed to a function that "
@@ -4582,7 +5395,7 @@ case 274:
//
FunctionType::param_iterator I = Ty->param_begin();
FunctionType::param_iterator E = Ty->param_end();
- ValueRefList::iterator ArgI = yyvsp[-2].ValueRefList->begin(), ArgE = yyvsp[-2].ValueRefList->end();
+ ValueRefList::iterator ArgI = (yyvsp[-2].ValueRefList)->begin(), ArgE = (yyvsp[-2].ValueRefList)->end();
for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
if (ArgI->Val->getType() != *I)
@@ -4599,365 +5412,428 @@ case 274:
}
// Create the call node
CallInst *CI = new CallInst(V, Args);
- CI->setTailCall(yyvsp[-7].BoolVal);
- CI->setCallingConv(yyvsp[-6].UIntVal);
- yyval.InstVal = CI;
- delete yyvsp[-2].ValueRefList;
- delete yyvsp[-5].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 275:
-#line 2767 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.InstVal = yyvsp[0].InstVal;
+ CI->setTailCall((yyvsp[-7].BoolVal));
+ CI->setCallingConv((yyvsp[-6].UIntVal));
+ (yyval.InstVal) = CI;
+ delete (yyvsp[-2].ValueRefList);
+ delete (yyvsp[-5].TypeVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 276:
-#line 2772 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BoolVal = true;
+ ;}
+ break;
+
+ case 274:
+#line 2750 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.InstVal) = (yyvsp[0].InstVal);
CHECK_FOR_ERROR
- ;
- break;}
-case 277:
-#line 2776 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- yyval.BoolVal = false;
+ ;}
+ break;
+
+ case 275:
+#line 2755 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BoolVal) = true;
CHECK_FOR_ERROR
- ;
- break;}
-case 278:
-#line 2783 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 276:
+#line 2759 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ (yyval.BoolVal) = false;
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 277:
+#line 2766 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- yyval.InstVal = new MallocInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 279:
-#line 2790 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ (yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 278:
+#line 2773 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription());
- Value* tmpVal = getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal);
- CHECK_FOR_ERROR
- yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal);
- delete yyvsp[-4].TypeVal;
- ;
- break;}
-case 280:
-#line 2798 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
+ Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal));
+ delete (yyvsp[-4].TypeVal);
+ ;}
+ break;
+
+ case 279:
+#line 2781 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- yyval.InstVal = new AllocaInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
- delete yyvsp[-1].TypeVal;
- CHECK_FOR_ERROR
- ;
- break;}
-case 281:
-#line 2805 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ (yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
+ delete (yyvsp[-1].TypeVal);
+ CHECK_FOR_ERROR
+ ;}
+ break;
+
+ case 280:
+#line 2788 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription());
- Value* tmpVal = getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal);
- CHECK_FOR_ERROR
- yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal);
- delete yyvsp[-4].TypeVal;
- ;
- break;}
-case 282:
-#line 2813 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
- if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
+ Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal));
+ delete (yyvsp[-4].TypeVal);
+ ;}
+ break;
+
+ case 281:
+#line 2796 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
+ if (!isa<PointerType>((yyvsp[0].ValueVal)->getType()))
GEN_ERROR("Trying to free nonpointer type " +
- yyvsp[0].ValueVal->getType()->getDescription() + "!");
- yyval.InstVal = new FreeInst(yyvsp[0].ValueVal);
+ (yyvsp[0].ValueVal)->getType()->getDescription() + "!");
+ (yyval.InstVal) = new FreeInst((yyvsp[0].ValueVal));
CHECK_FOR_ERROR
- ;
- break;}
-case 283:
-#line 2821 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ ;}
+ break;
+
+ case 282:
+#line 2804 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- if (!isa<PointerType>(yyvsp[-1].TypeVal->get()))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ if (!isa<PointerType>((yyvsp[-1].TypeVal)->get()))
GEN_ERROR("Can't load from nonpointer type: " +
- (*yyvsp[-1].TypeVal)->getDescription());
- if (!cast<PointerType>(yyvsp[-1].TypeVal->get())->getElementType()->isFirstClassType())
+ (*(yyvsp[-1].TypeVal))->getDescription());
+ if (!cast<PointerType>((yyvsp[-1].TypeVal)->get())->getElementType()->isFirstClassType())
GEN_ERROR("Can't load from pointer of non-first-class type: " +
- (*yyvsp[-1].TypeVal)->getDescription());
- Value* tmpVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal);
- CHECK_FOR_ERROR
- yyval.InstVal = new LoadInst(tmpVal, "", yyvsp[-3].BoolVal);
- delete yyvsp[-1].TypeVal;
- ;
- break;}
-case 284:
-#line 2835 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (*(yyvsp[-1].TypeVal))->getDescription());
+ Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[-3].BoolVal));
+ delete (yyvsp[-1].TypeVal);
+ ;}
+ break;
+
+ case 283:
+#line 2818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
- const PointerType *PT = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+ const PointerType *PT = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
if (!PT)
GEN_ERROR("Can't store to a nonpointer type: " +
- (*yyvsp[-1].TypeVal)->getDescription());
+ (*(yyvsp[-1].TypeVal))->getDescription());
const Type *ElTy = PT->getElementType();
- if (ElTy != yyvsp[-3].ValueVal->getType())
- GEN_ERROR("Can't store '" + yyvsp[-3].ValueVal->getType()->getDescription() +
+ if (ElTy != (yyvsp[-3].ValueVal)->getType())
+ GEN_ERROR("Can't store '" + (yyvsp[-3].ValueVal)->getType()->getDescription() +
"' into space of type '" + ElTy->getDescription() + "'!");
- Value* tmpVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal);
+ Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
- yyval.InstVal = new StoreInst(yyvsp[-3].ValueVal, tmpVal, yyvsp[-5].BoolVal);
- delete yyvsp[-1].TypeVal;
- ;
- break;}
-case 285:
-#line 2852 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+ (yyval.InstVal) = new StoreInst((yyvsp[-3].ValueVal), tmpVal, (yyvsp[-5].BoolVal));
+ delete (yyvsp[-1].TypeVal);
+ ;}
+ break;
+
+ case 284:
+#line 2835 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ {
if (!UpRefs.empty())
- GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
- if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))
+ GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+ if (!isa<PointerType>((yyvsp[-2].TypeVal)->get()))
GEN_ERROR("getelementptr insn requires pointer operand!");
- if (!GetElementPtrInst::getIndexedType(*yyvsp[-2].TypeVal, *yyvsp[0].ValueList, true))
+ if (!GetElementPtrInst::getIndexedType(*(yyvsp[-2].TypeVal), *(yyvsp[0].ValueList), true))
GEN_ERROR("Invalid getelementptr indices for type '" +
- (*yyvsp[-2].TypeVal)->getDescription()+ "'!");
- Value* tmpVal = getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal);
- CHECK_FOR_ERROR
- yyval.InstVal = new GetElementPtrInst(tmpVal, *yyvsp[0].ValueList);
- delete yyvsp[-2].TypeVal;
- delete yyvsp[0].ValueList;
- ;
- break;}
-}
- /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
+ (*(yyvsp[-2].TypeVal))->getDescription()+ "'!");
+ Value* tmpVal = getVal(*(yyvsp[-2].TypeVal), (yyvsp[-1].ValIDVal));
+ CHECK_FOR_ERROR
+ (yyval.InstVal) = new GetElementPtrInst(tmpVal, *(yyvsp[0].ValueList));
+ delete (yyvsp[-2].TypeVal);
+ delete (yyvsp[0].ValueList);
+ ;}
+ break;
+
+
+ default: break;
+ }
+
+/* Line 1126 of yacc.c. */
+#line 5569 "llvmAsmParser.tab.c"
yyvsp -= yylen;
yyssp -= yylen;
-#ifdef YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-#if YYDEBUG != 0
- if (yydebug)
- {
- short *ssp1 = yyss - 1;
- fprintf (stderr, "state stack now");
- while (ssp1 != yyssp)
- fprintf (stderr, " %d", *++ssp1);
- fprintf (stderr, "\n");
- }
-#endif
+
+ YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
-#ifdef YYLSP_NEEDED
- yylsp++;
- if (yylen == 0)
- {
- yylsp->first_line = yylloc.first_line;
- yylsp->first_column = yylloc.first_column;
- yylsp->last_line = (yylsp-1)->last_line;
- yylsp->last_column = (yylsp-1)->last_column;
- yylsp->text = 0;
- }
- else
- {
- yylsp->last_line = (yylsp+yylen-1)->last_line;
- yylsp->last_column = (yylsp+yylen-1)->last_column;
- }
-#endif
- /* Now "shift" the result of the reduction.
- Determine what state that goes to,
- based on the state we popped back to
- and the rule number reduced by. */
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
yyn = yyr1[yyn];
- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
- yystate = yydefgoto[yyn - YYNTBASE];
+ yystate = yydefgoto[yyn - YYNTOKENS];
goto yynewstate;
-yyerrlab: /* here on detecting error */
- if (! yyerrstatus)
- /* If not already recovering from an error, report this error. */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
{
++yynerrs;
-
-#ifdef YYERROR_VERBOSE
+#if YYERROR_VERBOSE
yyn = yypact[yystate];
- if (yyn > YYFLAG && yyn < YYLAST)
+ if (YYPACT_NINF < yyn && yyn < YYLAST)
{
- int size = 0;
- char *msg;
- int x, count;
-
- count = 0;
- /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
- for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- size += strlen(yytname[x]) + 15, count++;
- msg = (char *) malloc(size + 15);
- if (msg != 0)
- {
- strcpy(msg, "parse error");
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ char *yymsg = 0;
+# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
- if (count < 5)
+#if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= yysize1 < yysize;
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= yysize1 < yysize;
+ yysize = yysize1;
+
+ if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyf))
{
- count = 0;
- for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- {
- strcat(msg, count == 0 ? ", expecting `" : " or `");
- strcat(msg, yytname[x]);
- strcat(msg, "'");
- count++;
- }
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
}
- yyerror(msg);
- free(msg);
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
}
else
- yyerror ("parse error; also virtual memory exceeded");
+ {
+ yyerror (YY_("syntax error"));
+ goto yyexhaustedlab;
+ }
}
else
#endif /* YYERROR_VERBOSE */
- yyerror("parse error");
+ yyerror (YY_("syntax error"));
}
- goto yyerrlab1;
-yyerrlab1: /* here on error raised explicitly by an action */
+
if (yyerrstatus == 3)
{
- /* if just tried and failed to reuse lookahead token after an error, discard it. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
- yychar = YYEMPTY;
+ /* If just tried and failed to reuse look-ahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding", yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
}
- /* Else will try to reuse lookahead token
- after shifting the error token. */
+ /* Else will try to reuse look-ahead token after shifting the error
+ token. */
+ goto yyerrlab1;
- yyerrstatus = 3; /* Each real token shifted decrements this */
- goto yyerrhandle;
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
-yyerrdefault: /* current state does not do anything special for the error token. */
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (0)
+ goto yyerrorlab;
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
- yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
- if (yyn) goto yydefault;
-#endif
+yyvsp -= yylen;
+ yyssp -= yylen;
+ yystate = *yyssp;
+ goto yyerrlab1;
-yyerrpop: /* pop the current state because it cannot handle the error token */
- if (yyssp == yyss) YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
- yylsp--;
-#endif
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
-#if YYDEBUG != 0
- if (yydebug)
+ for (;;)
{
- short *ssp1 = yyss - 1;
- fprintf (stderr, "Error: state stack now");
- while (ssp1 != yyssp)
- fprintf (stderr, " %d", *++ssp1);
- fprintf (stderr, "\n");
- }
-#endif
-
-yyerrhandle:
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yyerrdefault;
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
+ yydestruct ("Error: popping", yystos[yystate], yyvsp);
+ YYPOPSTACK;
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
}
- else if (yyn == 0)
- goto yyerrpop;
if (yyn == YYFINAL)
YYACCEPT;
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Shifting error token, ");
-#endif
-
*++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
yystate = yyn;
goto yynewstate;
- yyacceptlab:
- /* YYACCEPT comes here. */
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
#endif
- }
- return 0;
- yyabortlab:
- /* YYABORT comes here. */
- if (yyfree_stacks)
+yyreturn:
+ if (yychar != YYEOF && yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ while (yyssp != yyss)
{
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK;
}
- return 1;
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
}
-#line 2869 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+
+
+#line 2852 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
// common code from the two 'RunVMAsmParser' functions
@@ -5007,3 +5883,4 @@ int yyerror(const char *ErrorMsg) {
GenerateError(errMsg);
return 0;
}
+
diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs
index 2b79ec49e3..295a7b88f7 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -1,4 +1,302 @@
-typedef union {
+/* A Bison parser, made by GNU Bison 2.1. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program 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 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ ESINT64VAL = 258,
+ EUINT64VAL = 259,
+ LOCALVAL_ID = 260,
+ GLOBALVAL_ID = 261,
+ FPVAL = 262,
+ VOID = 263,
+ INTTYPE = 264,
+ FLOAT = 265,
+ DOUBLE = 266,
+ LABEL = 267,
+ TYPE = 268,
+ LOCALVAR = 269,
+ GLOBALVAR = 270,
+ LABELSTR = 271,
+ STRINGCONSTANT = 272,
+ ATSTRINGCONSTANT = 273,
+ IMPLEMENTATION = 274,
+ ZEROINITIALIZER = 275,
+ TRUETOK = 276,
+ FALSETOK = 277,
+ BEGINTOK = 278,
+ ENDTOK = 279,
+ DECLARE = 280,
+ DEFINE = 281,
+ GLOBAL = 282,
+ CONSTANT = 283,
+ SECTION = 284,
+ VOLATILE = 285,
+ TO = 286,
+ DOTDOTDOT = 287,
+ NULL_TOK = 288,
+ UNDEF = 289,
+ INTERNAL = 290,
+ LINKONCE = 291,
+ WEAK = 292,
+ APPENDING = 293,
+ DLLIMPORT = 294,
+ DLLEXPORT = 295,
+ EXTERN_WEAK = 296,
+ OPAQUE = 297,
+ EXTERNAL = 298,
+ TARGET = 299,
+ TRIPLE = 300,
+ ALIGN = 301,
+ DEPLIBS = 302,
+ CALL = 303,
+ TAIL = 304,
+ ASM_TOK = 305,
+ MODULE = 306,
+ SIDEEFFECT = 307,
+ CC_TOK = 308,
+ CCC_TOK = 309,
+ FASTCC_TOK = 310,
+ COLDCC_TOK = 311,
+ X86_STDCALLCC_TOK = 312,
+ X86_FASTCALLCC_TOK = 313,
+ DATALAYOUT = 314,
+ RET = 315,
+ BR = 316,
+ SWITCH = 317,
+ INVOKE = 318,
+ UNWIND = 319,
+ UNREACHABLE = 320,
+ ADD = 321,
+ SUB = 322,
+ MUL = 323,
+ UDIV = 324,
+ SDIV = 325,
+ FDIV = 326,
+ UREM = 327,
+ SREM = 328,
+ FREM = 329,
+ AND = 330,
+ OR = 331,
+ XOR = 332,
+ SHL = 333,
+ LSHR = 334,
+ ASHR = 335,
+ ICMP = 336,
+ FCMP = 337,
+ EQ = 338,
+ NE = 339,
+ SLT = 340,
+ SGT = 341,
+ SLE = 342,
+ SGE = 343,
+ ULT = 344,
+ UGT = 345,
+ ULE = 346,
+ UGE = 347,
+ OEQ = 348,
+ ONE = 349,
+ OLT = 350,
+ OGT = 351,
+ OLE = 352,
+ OGE = 353,
+ ORD = 354,
+ UNO = 355,
+ UEQ = 356,
+ UNE = 357,
+ MALLOC = 358,
+ ALLOCA = 359,
+ FREE = 360,
+ LOAD = 361,
+ STORE = 362,
+ GETELEMENTPTR = 363,
+ TRUNC = 364,
+ ZEXT = 365,
+ SEXT = 366,
+ FPTRUNC = 367,
+ FPEXT = 368,
+ BITCAST = 369,
+ UITOFP = 370,
+ SITOFP = 371,
+ FPTOUI = 372,
+ FPTOSI = 373,
+ INTTOPTR = 374,
+ PTRTOINT = 375,
+ PHI_TOK = 376,
+ SELECT = 377,
+ VAARG = 378,
+ EXTRACTELEMENT = 379,
+ INSERTELEMENT = 380,
+ SHUFFLEVECTOR = 381,
+ NORETURN = 382,
+ INREG = 383,
+ SRET = 384,
+ DEFAULT = 385,
+ HIDDEN = 386
+ };
+#endif
+/* Tokens. */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define LOCALVAL_ID 260
+#define GLOBALVAL_ID 261
+#define FPVAL 262
+#define VOID 263
+#define INTTYPE 264
+#define FLOAT 265
+#define DOUBLE 266
+#define LABEL 267
+#define TYPE 268
+#define LOCALVAR 269
+#define GLOBALVAR 270
+#define LABELSTR 271
+#define STRINGCONSTANT 272
+#define ATSTRINGCONSTANT 273
+#define IMPLEMENTATION 274
+#define ZEROINITIALIZER 275
+#define TRUETOK 276
+#define FALSETOK 277
+#define BEGINTOK 278
+#define ENDTOK 279
+#define DECLARE 280
+#define DEFINE 281
+#define GLOBAL 282
+#define CONSTANT 283
+#define SECTION 284
+#define VOLATILE 285
+#define TO 286
+#define DOTDOTDOT 287
+#define NULL_TOK 288
+#define UNDEF 289
+#define INTERNAL 290
+#define LINKONCE 291
+#define WEAK 292
+#define APPENDING 293
+#define DLLIMPORT 294
+#define DLLEXPORT 295
+#define EXTERN_WEAK 296
+#define OPAQUE 297
+#define EXTERNAL 298
+#define TARGET 299
+#define TRIPLE 300
+#define ALIGN 301
+#define DEPLIBS 302
+#define CALL 303
+#define TAIL 304
+#define ASM_TOK 305
+#define MODULE 306
+#define SIDEEFFECT 307
+#define CC_TOK 308
+#define CCC_TOK 309
+#define FASTCC_TOK 310
+#define COLDCC_TOK 311
+#define X86_STDCALLCC_TOK 312
+#define X86_FASTCALLCC_TOK 313
+#define DATALAYOUT 314
+#define RET 315
+#define BR 316
+#define SWITCH 317
+#define INVOKE 318
+#define UNWIND 319
+#define UNREACHABLE 320
+#define ADD 321
+#define SUB 322
+#define MUL 323
+#define UDIV 324
+#define SDIV 325
+#define FDIV 326
+#define UREM 327
+#define SREM 328
+#define FREM 329
+#define AND 330
+#define OR 331
+#define XOR 332
+#define SHL 333
+#define LSHR 334
+#define ASHR 335
+#define ICMP 336
+#define FCMP 337
+#define EQ 338
+#define NE 339
+#define SLT 340
+#define SGT 341
+#define SLE 342
+#define SGE 343
+#define ULT 344
+#define UGT 345
+#define ULE 346
+#define UGE 347
+#define OEQ 348
+#define ONE 349
+#define OLT 350
+#define OGT 351
+#define OLE 352
+#define OGE 353
+#define ORD 354
+#define UNO 355
+#define UEQ 356
+#define UNE 357
+#define MALLOC 358
+#define ALLOCA 359
+#define FREE 360
+#define LOAD 361
+#define STORE 362
+#define GETELEMENTPTR 363
+#define TRUNC 364
+#define ZEXT 365
+#define SEXT 366
+#define FPTRUNC 367
+#define FPEXT 368
+#define BITCAST 369
+#define UITOFP 370
+#define SITOFP 371
+#define FPTOUI 372
+#define FPTOSI 373
+#define INTTOPTR 374
+#define PTRTOINT 375
+#define PHI_TOK 376
+#define SELECT 377
+#define VAARG 378
+#define EXTRACTELEMENT 379
+#define INSERTELEMENT 380
+#define SHUFFLEVECTOR 381
+#define NORETURN 382
+#define INREG 383
+#define SRET 384
+#define DEFAULT 385
+#define HIDDEN 386
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 886 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
llvm::BasicBlock *BasicBlockVal;
@@ -43,135 +341,14 @@ typedef union {
llvm::ICmpInst::Predicate IPredicate;
llvm::FCmpInst::Predicate FPredicate;
} YYSTYPE;
-#define ESINT64VAL 257
-#define EUINT64VAL 258
-#define LOCALVAL_ID 259
-#define GLOBALVAL_ID 260
-#define FPVAL 261
-#define VOID 262
-#define INTTYPE 263
-#define FLOAT 264
-#define DOUBLE 265
-#define LABEL 266
-#define TYPE 267
-#define LOCALVAR 268
-#define GLOBALVAR 269
-#define LABELSTR 270
-#define STRINGCONSTANT 271
-#define ATSTRINGCONSTANT 272
-#define IMPLEMENTATION 273
-#define ZEROINITIALIZER 274
-#define TRUETOK 275
-#define FALSETOK 276
-#define BEGINTOK 277
-#define ENDTOK 278
-#define DECLARE 279
-#define DEFINE 280
-#define GLOBAL 281
-#define CONSTANT 282
-#define SECTION 283
-#define VOLATILE 284
-#define TO 285
-#define DOTDOTDOT 286
-#define NULL_TOK 287
-#define UNDEF 288
-#define INTERNAL 289
-#define LINKONCE 290
-#define WEAK 291
-#define APPENDING 292
-#define DLLIMPORT 293
-#define DLLEXPORT 294
-#define EXTERN_WEAK 295
-#define OPAQUE 296
-#define EXTERNAL 297
-#define TARGET 298
-#define TRIPLE 299
-#define ALIGN 300
-#define DEPLIBS 301
-#define CALL 302
-#define TAIL 303
-#define ASM_TOK 304
-#define MODULE 305
-#define SIDEEFFECT 306
-#define CC_TOK 307
-#define CCC_TOK 308
-#define FASTCC_TOK 309
-#define COLDCC_TOK 310
-#define X86_STDCALLCC_TOK 311
-#define X86_FASTCALLCC_TOK 312
-#define DATALAYOUT 313
-#define RET 314
-#define BR 315
-#define SWITCH 316
-#define INVOKE 317
-#define UNWIND 318
-#define UNREACHABLE 319
-#define ADD 320
-#define SUB 321
-#define MUL 322
-#define UDIV 323
-#define SDIV 324
-#define FDIV 325
-#define UREM 326
-#define SREM 327
-#define FREM 328
-#define AND 329
-#define OR 330
-#define XOR 331
-#define ICMP 332
-#define FCMP 333
-#define EQ 334
-#define NE 335
-#define SLT 336
-#define SGT 337
-#define SLE 338
-#define SGE 339
-#define ULT 340
-#define UGT 341
-#define ULE 342
-#define UGE 343
-#define OEQ 344
-#define ONE 345
-#define OLT 346
-#define OGT 347
-#define OLE 348
-#define OGE 349
-#define ORD 350
-#define UNO 351
-#define UEQ 352
-#define UNE 353
-#define MALLOC 354
-#define ALLOCA 355
-#define FREE 356
-#define LOAD 357
-#define STORE 358
-#define GETELEMENTPTR 359
-#define TRUNC 360
-#define ZEXT 361
-#define SEXT 362
-#define FPTRUNC 363
-#define FPEXT 364
-#define BITCAST 365
-#define UITOFP 366
-#define SITOFP 367
-#define FPTOUI 368
-#define FPTOSI 369
-#define INTTOPTR 370
-#define PTRTOINT 371
-#define PHI_TOK 372
-#define SELECT 373
-#define SHL 374
-#define LSHR 375
-#define ASHR 376
-#define VAARG 377
-#define EXTRACTELEMENT 378
-#define INSERTELEMENT 379
-#define SHUFFLEVECTOR 380
-#define NORETURN 381
-#define INREG 382
-#define SRET 383
-#define DEFAULT 384
-#define HIDDEN 385
-
+/* Line 1447 of yacc.c. */
+#line 346 "llvmAsmParser.tab.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
extern YYSTYPE llvmAsmlval;
+
+
+
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index 586896cfa0..9608da205c 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -997,6 +997,8 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
// Binary Operators
%type <BinaryOpVal> ArithmeticOps LogicalOps // Binops Subcatagories
%token <BinaryOpVal> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
+%token <BinaryOpVal> SHL LSHR ASHR
+
%token <OtherOpVal> ICMP FCMP
%type <IPredicate> IPredicates
%type <FPredicate> FPredicates
@@ -1012,8 +1014,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
%token <CastOpVal> UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT
// Other Operators
-%type <OtherOpVal> ShiftOps
-%token <OtherOpVal> PHI_TOK SELECT SHL LSHR ASHR VAARG
+%token <OtherOpVal> PHI_TOK SELECT VAARG
%token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
// Function Attributes
@@ -1030,10 +1031,10 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
// RET, BR, & SWITCH because they end basic blocks and are treated specially.
//
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
-LogicalOps : AND | OR | XOR;
+LogicalOps : SHL | LSHR | ASHR | AND | OR | XOR;
CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST |
UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT;
-ShiftOps : SHL | LSHR | ASHR;
+
IPredicates
: EQ { $$ = ICmpInst::ICMP_EQ; } | NE { $$ = ICmpInst::ICMP_NE; }
| SLT { $$ = ICmpInst::ICMP_SLT; } | SGT { $$ = ICmpInst::ICMP_SGT; }
@@ -1764,7 +1765,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
if ($3->getType() != $5->getType())
GEN_ERROR("Logical operator types must match!");
if (!$3->getType()->isInteger()) {
- if (!isa<PackedType>($3->getType()) ||
+ if (Instruction::isShift($1) || !isa<PackedType>($3->getType()) ||
!cast<PackedType>($3->getType())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!");
}
@@ -1781,15 +1782,6 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
GEN_ERROR("fcmp operand types must match!");
$$ = ConstantExpr::getFCmp($2, $4, $6);
}
- | ShiftOps '(' ConstVal ',' ConstVal ')' {
- if ($5->getType() != Type::Int8Ty)
- GEN_ERROR("Shift count for shift constant must be i8 type!");
- if (!$3->getType()->isInteger())
- GEN_ERROR("Shift constant expression requires integer operand!");
- CHECK_FOR_ERROR;
- $$ = ConstantExpr::get($1, $3, $5);
- CHECK_FOR_ERROR
- }
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
if (!ExtractElementInst::isValidOperands($3, $5))
GEN_ERROR("Invalid extractelement operands!");
@@ -2592,7 +2584,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
if (!(*$2)->isInteger()) {
- if (!isa<PackedType>($2->get()) ||
+ if (Instruction::isShift($1) || !isa<PackedType>($2->get()) ||
!cast<PackedType>($2->get())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!");
}
@@ -2631,15 +2623,6 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
if ($$ == 0)
GEN_ERROR("fcmp operator returned null!");
}
- | ShiftOps ResolvedVal ',' ResolvedVal {
- if ($4->getType() != Type::Int8Ty)
- GEN_ERROR("Shift amount must be i8 type!");
- if (!$2->getType()->isInteger())
- GEN_ERROR("Shift constant expression requires integer operand!");
- CHECK_FOR_ERROR;
- $$ = new ShiftInst($1, $2, $4);
- CHECK_FOR_ERROR
- }
| CastOps ResolvedVal TO Types {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription());
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index 586896cfa0..9608da205c 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -997,6 +997,8 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
// Binary Operators
%type <BinaryOpVal> ArithmeticOps LogicalOps // Binops Subcatagories
%token <BinaryOpVal> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
+%token <BinaryOpVal> SHL LSHR ASHR
+
%token <OtherOpVal> ICMP FCMP
%type <IPredicate> IPredicates
%type <FPredicate> FPredicates
@@ -1012,8 +1014,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
%token <CastOpVal> UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT
// Other Operators
-%type <OtherOpVal> ShiftOps
-%token <OtherOpVal> PHI_TOK SELECT SHL LSHR ASHR VAARG
+%token <OtherOpVal> PHI_TOK SELECT VAARG
%token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
// Function Attributes
@@ -1030,10 +1031,10 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
// RET, BR, & SWITCH because they end basic blocks and are treated specially.
//
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
-LogicalOps : AND | OR | XOR;
+LogicalOps : SHL | LSHR | ASHR | AND | OR | XOR;
CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST |
UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT;
-ShiftOps : SHL | LSHR | ASHR;
+
IPredicates
: EQ { $$ = ICmpInst::ICMP_EQ; } | NE { $$ = ICmpInst::ICMP_NE; }
| SLT { $$ = ICmpInst::ICMP_SLT; } | SGT { $$ = ICmpInst::ICMP_SGT; }
@@ -1764,7 +1765,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
if ($3->getType() != $5->getType())
GEN_ERROR("Logical operator types must match!");
if (!$3->getType()->isInteger()) {
- if (!isa<PackedType>($3->getType()) ||
+ if (Instruction::isShift($1) || !isa<PackedType>($3->getType()) ||
!cast<PackedType>($3->getType())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!");
}
@@ -1781,15 +1782,6 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
GEN_ERROR("fcmp operand types must match!");
$$ = ConstantExpr::getFCmp($2, $4, $6);
}
- | ShiftOps '(' ConstVal ',' ConstVal ')' {
- if ($5->getType() != Type::Int8Ty)
- GEN_ERROR("Shift count for shift constant must be i8 type!");
- if (!$3->getType()->isInteger())
- GEN_ERROR("Shift constant expression requires integer operand!");
- CHECK_FOR_ERROR;
- $$ = ConstantExpr::get($1, $3, $5);
- CHECK_FOR_ERROR
- }
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
if (!ExtractElementInst::isValidOperands($3, $5))
GEN_ERROR("Invalid extractelement operands!");
@@ -2592,7 +2584,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
if (!(*$2)->isInteger()) {
- if (!isa<PackedType>($2->get()) ||
+ if (Instruction::isShift($1) || !isa<PackedType>($2->get()) ||
!cast<PackedType>($2->get())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!");
}
@@ -2631,15 +2623,6 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
if ($$ == 0)
GEN_ERROR("fcmp operator returned null!");
}
- | ShiftOps ResolvedVal ',' ResolvedVal {
- if ($4->getType() != Type::Int8Ty)
- GEN_ERROR("Shift amount must be i8 type!");
- if (!$2->getType()->isInteger())
- GEN_ERROR("Shift constant expression requires integer operand!");
- CHECK_FOR_ERROR;
- $$ = new ShiftInst($1, $2, $4);
- CHECK_FOR_ERROR
- }
| CastOps ResolvedVal TO Types {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription());
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index c649a3b19c..e2505cc81e 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -607,13 +607,6 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
static_cast<unsigned short>(Oprnds[2]),
getValue(iType, Oprnds[0]), getValue(iType, Oprnds[1]));
break;
- case Instruction::Shl:
- case Instruction::LShr:
- case Instruction::AShr:
- Result = new ShiftInst(Instruction::OtherOps(Opcode),
- getValue(iType, Oprnds[0]),
- getValue(Int8TySlot, Oprnds[1]));
- break;
case Instruction::Ret:
if (Oprnds.size() == 0)
Result = new ReturnInst();
diff --git a/lib/CodeGen/IntrinsicLowering.cpp b/lib/CodeGen/IntrinsicLowering.cpp
index b6f85d4ae3..7bbe297910 100644
--- a/lib/CodeGen/IntrinsicLowering.cpp
+++ b/lib/CodeGen/IntrinsicLowering.cpp
@@ -118,22 +118,22 @@ static Value *LowerBSWAP(Value *V, Instruction *IP) {
switch(BitSize) {
default: assert(0 && "Unhandled type size of value to byteswap!");
case 16: {
- Value *Tmp1 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,8),"bswap.2",IP);
- Value *Tmp2 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,8),"bswap.1",IP);
+ Value *Tmp1 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),8),"bswap.2",IP);
+ Value *Tmp2 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),8),"bswap.1",IP);
V = BinaryOperator::createOr(Tmp1, Tmp2, "bswap.i16", IP);
break;
}
case 32: {
- Value *Tmp4 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,24),"bswap.4", IP);
- Value *Tmp3 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,8),"bswap.3",IP);
- Value *Tmp2 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,8),"bswap.2",IP);
- Value *Tmp1 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,24),"bswap.1", IP);
+ Value *Tmp4 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),24),"bswap.4", IP);
+ Value *Tmp3 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),8),"bswap.3",IP);
+ Value *Tmp2 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),8),"bswap.2",IP);
+ Value *Tmp1 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),24),"bswap.1", IP);
Tmp3 = BinaryOperator::createAnd(Tmp3,
ConstantInt::get(Type::Int32Ty, 0xFF0000),
"bswap.and3", IP);
@@ -146,22 +146,22 @@ static Value *LowerBSWAP(Value *V, Instruction *IP) {
break;
}
case 64: {
- Value *Tmp8 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,56),"bswap.8", IP);
- Value *Tmp7 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,40),"bswap.7", IP);
- Value *Tmp6 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,24),"bswap.6", IP);
- Value *Tmp5 = new ShiftInst(Instruction::Shl, V,
- ConstantInt::get(Type::Int8Ty,8),"bswap.5", IP);
- Value* Tmp4 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,8),"bswap.4", IP);
- Value* Tmp3 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,24),"bswap.3", IP);
- Value* Tmp2 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,40),"bswap.2", IP);
- Value* Tmp1 = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty,56),"bswap.1", IP);
+ Value *Tmp8 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),56),"bswap.8", IP);
+ Value *Tmp7 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),40),"bswap.7", IP);
+ Value *Tmp6 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),24),"bswap.6", IP);
+ Value *Tmp5 = BinaryOperator::create(Instruction::Shl, V,
+ ConstantInt::get(V->getType(),8),"bswap.5", IP);
+ Value* Tmp4 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),8),"bswap.4", IP);
+ Value* Tmp3 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),24),"bswap.3", IP);
+ Value* Tmp2 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),40),"bswap.2", IP);
+ Value* Tmp1 = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(),56),"bswap.1", IP);
Tmp7 = BinaryOperator::createAnd(Tmp7,
ConstantInt::get(Type::Int64Ty,
0xFF000000000000ULL),
@@ -210,8 +210,8 @@ static Value *LowerCTPOP(Value *V, Instruction *IP) {
for (unsigned i = 1, ct = 0; i != BitSize; i <<= 1, ++ct) {
Value *MaskCst = ConstantInt::get(V->getType(), MaskValues[ct]);
Value *LHS = BinaryOperator::createAnd(V, MaskCst, "cppop.and1", IP);
- Value *VShift = new ShiftInst(Instruction::LShr, V,
- ConstantInt::get(Type::Int8Ty, i), "ctpop.sh", IP);
+ Value *VShift = BinaryOperator::create(Instruction::LShr, V,
+ ConstantInt::get(V->getType(), i), "ctpop.sh", IP);
Value *RHS = BinaryOperator::createAnd(VShift, MaskCst, "cppop.and2", IP);
V = BinaryOperator::createAdd(LHS, RHS, "ctpop.step", IP);
}
@@ -225,8 +225,8 @@ static Value *LowerCTLZ(Value *V, Instruction *IP) {
unsigned BitSize = V->getType()->getPrimitiveSizeInBits();
for (unsigned i = 1; i != BitSize; i <<= 1) {
- Value *ShVal = ConstantInt::get(Type::Int8Ty, i);
- ShVal = new ShiftInst(Instruction::LShr, V, ShVal, "ctlz.sh", IP);
+ Value *ShVal = ConstantInt::get(V->getType(), i);
+ ShVal = BinaryOperator::create(Instruction::LShr, V, ShVal, "ctlz.sh", IP);
V = BinaryOperator::createOr(V, ShVal, "ctlz.step", IP);
}
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 8ce26281a3..ad1f47c2dc 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -1420,7 +1420,10 @@ void SelectionDAGLowering::visitShift(User &I, unsigned Opcode) {
SDOperand Op1 = getValue(I.getOperand(0));
SDOperand Op2 = getValue(I.getOperand(1));
- Op2 = DAG.getNode(ISD::ANY_EXTEND, TLI.getShiftAmountTy(), Op2);
+ if (TLI.getShiftAmountTy() < Op2.getValueType())
+ Op2 = DAG.getNode(ISD::TRUNCATE, TLI.getShiftAmountTy(), Op2);
+ else if (TLI.getShiftAmountTy() > Op2.getValueType())
+ Op2 = DAG.getNode(ISD::ANY_EXTEND, TLI.getShiftAmountTy(), Op2);
setValue(&I, DAG.getNode(Opcode, Op1.getValueType(), Op1, Op2));
}
diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp
index 2e36875e49..565915bb5a 100644
--- a/lib/ExecutionEngine/Interpreter/Execution.cpp
+++ b/lib/ExecutionEngine/Interpreter/Execution.cpp
@@ -1275,7 +1275,7 @@ static GenericValue executeAShrInst(GenericValue Src1, GenericValue Src2,
return Dest;
}
-void Interpreter::visitShl(ShiftInst &I) {
+void Interpreter::visitShl(BinaryOperator &I) {
ExecutionContext &SF = ECStack.back();
const Type *Ty = I.getOperand(0)->getType();
GenericValue Src1 = getOperandValue(I.getOperand(0), SF);
@@ -1285,7 +1285,7 @@ void Interpreter::visitShl(ShiftInst &I) {
SetValue(&I, Dest, SF);
}
-void Interpreter::visitLShr(ShiftInst &I) {
+void Interpreter::visitLShr(BinaryOperator &I) {
ExecutionContext &SF = ECStack.back();
const Type *Ty = I.getOperand(0)->getType();
GenericValue Src1 = getOperandValue(I.getOperand(0), SF);
@@ -1295,7 +1295,7 @@ void Interpreter::visitLShr(ShiftInst &I) {
SetValue(&I, Dest, SF);
}
-void Interpreter::visitAShr(ShiftInst &I) {
+void Interpreter::visitAShr(BinaryOperator &I) {
ExecutionContext &SF = ECStack.back();
const Type *Ty = I.getOperand(0)->getType();
GenericValue Src1 = getOperandValue(I.getOperand(0), SF);
diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.h b/lib/ExecutionEngine/Interpreter/Interpreter.h
index 3007b0adb2..a8deb01b21 100644
--- a/lib/ExecutionEngine/Interpreter/Interpreter.h
+++ b/lib/ExecutionEngine/Interpreter/Interpreter.h
@@ -165,9 +165,10 @@ public:
void visitUnwindInst(UnwindInst &I);
void visitUnreachableInst(UnreachableInst &I);
- void visitShl(ShiftInst &I);
- void visitLShr(ShiftInst &I);
- void visitAShr(ShiftInst &I);
+ void visitShl(BinaryOperator &I);
+ void visitLShr(BinaryOperator &I);
+ void visitAShr(BinaryOperator &I);
+
void visitVAArgInst(VAArgInst &I);
void visitInstruction(Instruction &I) {
cerr << I;
diff --git a/lib/Makefile b/lib/Makefile
index 7a05dfd133..2440dd4806 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
LEVEL = ..
-PARALLEL_DIRS = VMCore Analysis Transforms AsmParser Bytecode CodeGen Target \
+PARALLEL_DIRS = VMCore AsmParser Bytecode Analysis Transforms CodeGen Target \
ExecutionEngine Debugger Linker
include $(LEVEL)/Makefile.common
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp
index 785e7643e4..6116bcdd76 100644
--- a/lib/Target/CBackend/CBackend.cpp
+++ b/lib/Target/CBackend/CBackend.cpp
@@ -225,7 +225,6 @@ namespace {
void visitSelectInst(SelectInst &I);
void visitCallInst (CallInst &I);
void visitInlineAsm(CallInst &I);
- void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); }
void visitMallocInst(MallocInst &I);
void visitAllocaInst(AllocaInst &I);
@@ -2160,18 +2159,18 @@ void CWriter::visitBinaryOperator(Instruction &I) {
writeOperandWithCast(I.getOperand(0), I.getOpcode());
switch (I.getOpcode()) {
- case Instruction::Add: Out << " + "; break;
- case Instruction::Sub: Out << " - "; break;
- case Instruction::Mul: Out << '*'; break;
+ case Instruction::Add: Out << " + "; break;
+ case Instruction::Sub: Out << " - "; break;
+ case Instruction::Mul: Out << " * "; break;
case Instruction::URem:
case Instruction::SRem:
- case Instruction::FRem: Out << '%'; break;
+ case Instruction::FRem: Out << " % "; break;
case Instruction::UDiv:
case Instruction::SDiv:
- case Instruction::FDiv: Out << '/'; break;
- case Instruction::And: Out << " & "; break;
- case Instruction::Or: Out << " | "; break;
- case Instruction::Xor: Out << " ^ "; break;
+ case Instruction::FDiv: Out << " / "; break;
+ case Instruction::And: Out << " & "; break;
+ case Instruction::Or: Out << " | "; break;
+ case Instruction::Xor: Out << " ^ "; break;
case Instruction::Shl : Out << " << "; break;
case Instruction::LShr:
case Instruction::AShr: Out << " >> "; break;
diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp
index 259aa67011..2b620aff78 100644
--- a/lib/Transforms/ExprTypeConvert.cpp
+++ b/lib/Transforms/ExprTypeConvert.cpp
@@ -251,8 +251,8 @@ Value *llvm::ConvertExpressionToType(Value *V, const Type *Ty,
case Instruction::Shl:
case Instruction::LShr:
case Instruction::AShr:
- Res = new ShiftInst(cast<ShiftInst>(I)->getOpcode(), Dummy,
- I->getOperand(1), Name);
+ Res = BinaryOperator::create(cast<BinaryOperator>(I)->getOpcode(), Dummy,
+ I->getOperand(1), Name);
VMC.ExprMap[I] = Res;
Res->setOperand(0, ConvertExpressionToType(I->getOperand(0), Ty, VMC, TD));
break;
@@ -472,9 +472,9 @@ static bool OperandConvertibleToType(User *U, Value *V, const Type *Ty,
}
return false;
}
+ case Instruction::Shl:
case Instruction::LShr:
case Instruction::AShr:
- case Instruction::Shl:
if (I->getOperand(1) == V) return false; // Cannot change shift amount type
if (!Ty->isInteger()) return false;
return ValueConvertibleToType(I, Ty, CTMap, TD);
@@ -747,8 +747,8 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal,
case Instruction::LShr:
case Instruction::AShr:
assert(I->getOperand(0) == OldVal);
- Res = new ShiftInst(cast<ShiftInst>(I)->getOpcode(), NewVal,
- I->getOperand(1), Name);
+ Res = BinaryOperator::create(cast<BinaryOperator>(I)->getOpcode(), NewVal,
+ I->getOperand(1), Name);
break;
case Instruction::Free: // Free can free any pointer type!
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index 342a481af7..d57047bc32 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -1728,10 +1728,6 @@ static bool EvaluateFunction(Function *F, Constant *&RetVal,
InstResult = ConstantExpr::get(BO->getOpcode(),
getVal(Values, BO->getOperand(0)),
getVal(Values, BO->getOperand(1)));
- } else if (ShiftInst *SI = dyn_cast<ShiftInst>(CurInst)) {
- InstResult = ConstantExpr::get(SI->getOpcode(),
- getVal(Values, SI->getOperand(0)),
- getVal(Values, SI->getOperand(1)));
} else if (CmpInst *CI = dyn_cast<CmpInst>(CurInst)) {
InstResult = ConstantExpr::getCompare(CI->getPredicate(),
getVal(Values, CI->getOperand(0)),
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index 9fbcdc182d..4aa92ec6d4 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -145,15 +145,18 @@ namespace {
Instruction *visitAnd(BinaryOperator &I);
Instruction *visitOr (BinaryOperator &I);
Instruction *visitXor(BinaryOperator &I);
+ Instruction *visitShl(BinaryOperator &I);
+ Instruction *visitAShr(BinaryOperator &I);
+ Instruction *visitLShr(BinaryOperator &I);
+ Instruction *commonShiftTransforms(BinaryOperator &I);
Instruction *visitFCmpInst(FCmpInst &I);
Instruction *visitICmpInst(ICmpInst &I);
Instruction *visitICmpInstWithCastAndCast(ICmpInst &ICI);
Instruction *FoldGEPICmp(User *GEPLHS, Value *RHS,
ICmpInst::Predicate Cond, Instruction &I);
- Instruction *visitShiftInst(ShiftInst &I);
Instruction *FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
- ShiftInst &I);
+ BinaryOperator &I);
Instruction *commonCastTransforms(CastInst &CI);
Instruction *commonIntCastTransforms(CastInst &CI);
Instruction *visitTrunc(CastInst &CI);
@@ -1197,8 +1200,8 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
// the shift amount is >= the size of the datatype, which is undefined.
if (DemandedMask == 1) {
// Perform the logical shift right.
- Value *NewVal = new ShiftInst(Instruction::LShr, I->getOperand(0),
- I->getOperand(1), I->getName());
+ Value *NewVal = BinaryOperator::create(Instruction::LShr,
+ I->getOperand(0), I->getOperand(1), I->getName());
InsertNewInstBefore(cast<Instruction>(NewVal), *I);
return UpdateValueUsesWith(I, NewVal);
}
@@ -1229,8 +1232,8 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
// are demanded, turn this into an unsigned shift right.
if ((KnownZero & SignBit) || (HighBits & ~DemandedMask) == HighBits) {
// Perform the logical shift right.
- Value *NewVal = new ShiftInst(Instruction::LShr, I->getOperand(0),
- SA, I->getName());
+ Value *NewVal = BinaryOperator::create(Instruction::LShr,
+ I->getOperand(0), SA, I->getName());
InsertNewInstBefore(cast<Instruction>(NewVal), *I);
return UpdateValueUsesWith(I, NewVal);
} else if (KnownOne & SignBit) { // New bits are known one.
@@ -1546,8 +1549,8 @@ struct AddRHS {
AddRHS(Value *rhs) : RHS(rhs) {}
bool shouldApply(Value *LHS) const { return LHS == RHS; }
Instruction *apply(BinaryOperator &Add) const {
- return new ShiftInst(Instruction::Shl, Add.getOperand(0),
- ConstantInt::get(Type::Int8Ty, 1));
+ return BinaryOperator::create(Instruction::Shl, Add.getOperand(0),
+ ConstantInt::get(Add.getType(), 1));
}
};
@@ -1595,8 +1598,6 @@ static Value *FoldOperationIntoSelectOperand(Instruction &I, Value *SO,
else if (CmpInst *CI = dyn_cast<CmpInst>(&I))
New = CmpInst::create(CI->getOpcode(), CI->getPredicate(), Op0, Op1,
SO->getName()+".cmp");
- else if (ShiftInst *SI = dyn_cast<ShiftInst>(&I))
- New = new ShiftInst(SI->getOpcode(), Op0, Op1, SO->getName()+".sh");
else {
assert(0 && "Unknown binary instruction type!");
abort();
@@ -1688,10 +1689,6 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
CI->getPredicate(),
PN->getIncomingValue(i), C, "phitmp",
NonConstBB->getTerminator());
- else if (ShiftInst *SI = dyn_cast<ShiftInst>(&I))
- InV = new ShiftInst(SI->getOpcode(),
- PN->getIncomingValue(i), C, "phitmp",
- NonConstBB->getTerminator());
else
assert(0 && "Unknown binop!");
@@ -1958,15 +1955,15 @@ Instruction *InstCombiner::visitSub(BinaryOperator &I) {
// -(X >>u 31) -> (X >>s 31)
// -(X >>s 31) -> (X >>u 31)
if (C->isNullValue()) {
- if (ShiftInst *SI = dyn_cast<ShiftInst>(Op1))
+ if (BinaryOperator *SI = dyn_cast<BinaryOperator>(Op1))
if (SI->getOpcode() == Instruction::LShr) {
if (ConstantInt *CU = dyn_cast<ConstantInt>(SI->getOperand(1))) {
// Check to see if we are shifting out everything but the sign bit.
if (CU->getZExtValue() ==
SI->getType()->getPrimitiveSizeInBits()-1) {
// Ok, the transformation is safe. Insert AShr.
- return new ShiftInst(Instruction::AShr, SI->getOperand(0), CU,
- SI->getName());
+ return BinaryOperator::create(Instruction::AShr,
+ SI->getOperand(0), CU, SI->getName());
}
}
}
@@ -1976,8 +1973,8 @@ Instruction *InstCombiner::visitSub(BinaryOperator &I) {
if (CU->getZExtValue() ==
SI->getType()->getPrimitiveSizeInBits()-1) {
// Ok, the transformation is safe. Insert LShr.
- return new ShiftInst(Instruction::LShr, SI->getOperand(0), CU,
- SI->getName());
+ return BinaryOperator::create(Instruction::LShr,
+ SI->getOperand(0), CU, SI->getName());
}
}
}
@@ -2113,7 +2110,7 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) {
if (ConstantInt *CI = dyn_cast<ConstantInt>(Op1)) {
// ((X << C1)*C2) == (X * (C2 << C1))
- if (ShiftInst *SI = dyn_cast<ShiftInst>(Op0))
+ if (BinaryOperator *SI = dyn_cast<BinaryOperator>(Op0))
if (SI->getOpcode() == Instruction::Shl)
if (Constant *ShOp = dyn_cast<Constant>(SI->getOperand(1)))
return BinaryOperator::createMul(SI->getOperand(0),
@@ -2129,8 +2126,8 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) {
int64_t Val = (int64_t)cast<ConstantInt>(CI)->getZExtValue();
if (isPowerOf2_64(Val)) { // Replace X*(2^C) with X << C
uint64_t C = Log2_64(Val);
- return new ShiftInst(Instruction::Shl, Op0,
- ConstantInt::get(Type::Int8Ty, C));
+ return BinaryOperator::create(Instruction::Shl, Op0,
+ ConstantInt::get(Op0->getType(), C));
}
} else if (ConstantFP *Op1F = dyn_cast<ConstantFP>(Op1)) {
if (Op1F->isNullValue())
@@ -2191,10 +2188,11 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) {
if (isa<ConstantInt>(SCIOp1) &&
isSignBitCheck(SCI->getPredicate(), cast<ConstantInt>(SCIOp1))) {
// Shift the X value right to turn it into "all signbits".
- Constant *Amt = ConstantInt::get(Type::Int8Ty,
+ Constant *Amt = ConstantInt::get(SCIOp0->getType(),
SCOpTy->getPrimitiveSizeInBits()-1);
Value *V =
- InsertNewInstBefore(new ShiftInst(Instruction::AShr, SCIOp0, Amt,
+ InsertNewInstBefore(
+ BinaryOperator::create(Instruction::AShr, SCIOp0, Amt,
BoolCast->getOperand(0)->getName()+
".mask"), I);
@@ -2324,13 +2322,13 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) {
if (uint64_t Val = C->getZExtValue()) // Don't break X / 0
if (isPowerOf2_64(Val)) {
uint64_t ShiftAmt = Log2_64(Val);
- return new ShiftInst(Instruction::LShr, Op0,
- ConstantInt::get(Type::Int8Ty, ShiftAmt));
+ return BinaryOperator::create(Instruction::LShr, Op0,
+ ConstantInt::get(Op0->getType(), ShiftAmt));
}
}
// X udiv (C1 << N), where C1 is "1<<C2" --> X >> (N+C2)
- if (ShiftInst *RHSI = dyn_cast<ShiftInst>(I.getOperand(1))) {
+ if (BinaryOperator *RHSI = dyn_cast<BinaryOperator>(I.getOperand(1))) {
if (RHSI->getOpcode() == Instruction::Shl &&
isa<ConstantInt>(RHSI->getOperand(0))) {
uint64_t C1 = cast<ConstantInt>(RHSI->getOperand(0))->getZExtValue();
@@ -2341,7 +2339,7 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) {
Constant *C2V = ConstantInt::get(NTy, C2);
N = InsertNewInstBefore(BinaryOperator::createAdd(N, C2V, "tmp"), I);
}
- return new ShiftInst(Instruction::LShr, Op0, N);
+ return BinaryOperator::create(Instruction::LShr, Op0, N);
}
}
}
@@ -2357,15 +2355,15 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) {
// Compute the shift amounts
unsigned TSA = Log2_64(TVA), FSA = Log2_64(FVA);
// Construct the "on true" case of the select
- Constant *TC = ConstantInt::get(Type::Int8Ty, TSA);
- Instruction *TSI =
- new ShiftInst(Instruction::LShr, Op0, TC, SI->getName()+".t");
+ Constant *TC = ConstantInt::get(Op0->getType(), TSA);
+ Instruction *TSI = BinaryOperator::create(Instruction::LShr,
+ Op0, TC, SI->getName()+".t");
TSI = InsertNewInstBefore(TSI, I);
// Construct the "on false" case of the select
- Constant *FC = ConstantInt::get(Type::Int8Ty, FSA);
- Instruction *FSI =
- new ShiftInst(Instruction::LShr, Op0, FC, SI->getName()+".f");
+ Constant *FC = ConstantInt::get(Op0->getType(), FSA);
+ Instruction *FSI = BinaryOperator::create(Instruction::LShr,
+ Op0, FC, SI->getName()+".f");
FSI = InsertNewInstBefore(FSI, I);
// construct the select instruction and return it.
@@ -2437,7 +2435,7 @@ static Constant *GetFactor(Value *V) {
unsigned Zeros = CountTrailingZeros_64(RHS->getZExtValue());
if (Zeros != V->getType()->getPrimitiveSizeInBits())
return ConstantExpr::getShl(Result,
- ConstantInt::get(Type::Int8Ty, Zeros));
+ ConstantInt::get(Result->getType(), Zeros));
}
} else if (CastInst *CI = dyn_cast<CastInst>(I)) {
// Only handle int->int casts.
@@ -2801,14 +2799,14 @@ struct FoldICmpLogical {
// OptAndOp - This handles expressions of the form ((val OP C1) & C2). Where
// the Op parameter is 'OP', OpRHS is 'C1', and AndRHS is 'C2'. Op is
-// guaranteed to be either a shift instruction or a binary operator.
+// guaranteed to be a binary operator.
Instruction *InstCombiner::OptAndOp(Instruction *Op,
ConstantInt *OpRHS,
ConstantInt *AndRHS,
BinaryOperator &TheAnd) {
Value *X = Op->getOperand(0);
Constant *Together = 0;
- if (!isa<ShiftInst>(Op))
+ if (!Op->isShift())
Together = ConstantExpr::getAnd(AndRHS, OpRHS);
switch (Op->getOpcode()) {
@@ -2917,8 +2915,9 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op,
// (Val ashr C1) & C2 -> (Val lshr C1) & C2
// Make the argument unsigned.
Value *ShVal = Op->getOperand(0);
- ShVal = InsertNewInstBefore(new ShiftInst(Instruction::LShr, ShVal,
- OpRHS, Op->getName()), TheAnd);
+ ShVal = InsertNewInstBefore(
+ BinaryOperator::create(Instruction::LShr, ShVal, OpRHS,
+ Op->getName()), TheAnd);
return BinaryOperator::createAnd(ShVal, AndRHS, TheAnd.getName());
}
}
@@ -3082,7 +3081,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
uint64_t NotAndRHS = AndRHSMask^TypeMask;
// Optimize a variety of ((val OP C1) & C2) combinations...
- if (isa<BinaryOperator>(Op0) || isa<ShiftInst>(Op0)) {
+ if (isa<BinaryOperator>(Op0)) {
Instruction *Op0I = cast<Instruction>(Op0);
Value *Op0LHS = Op0I->getOperand(0);
Value *Op0RHS = Op0I->getOperand(1);
@@ -3391,16 +3390,17 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
}
// (X >> Z) & (Y >> Z) -> (X&Y) >> Z for all shifts.
- if (ShiftInst *SI1 = dyn_cast<ShiftInst>(Op1)) {
- if (ShiftInst *SI0 = dyn_cast<ShiftInst>(Op0))
- if (SI0->getOpcode() == SI1->getOpcode() &&
+ if (BinaryOperator *SI1 = dyn_cast<BinaryOperator>(Op1)) {
+ if (BinaryOperator *SI0 = dyn_cast<BinaryOperator>(Op0))
+ if (SI0->isShift() && SI0->getOpcode() == SI1->getOpcode() &&
SI0->getOperand(1) == SI1->getOperand(1) &&
(SI0->hasOneUse() || SI1->hasOneUse())) {
Instruction *NewOp =
InsertNewInstBefore(BinaryOperator::createAnd(SI0->getOperand(0),
SI1->getOperand(0),
SI0->getName()), I);
- return new ShiftInst(SI1->getOpcode(), NewOp, SI1->getOperand(1));
+ return BinaryOperator::create(SI1->getOpcode(), NewOp,
+ SI1->getOperand(1));
}
}
@@ -3421,7 +3421,7 @@ static bool CollectBSwapParts(Value *V, std::vector<Value*> &ByteValues) {
// If this is a shift by a constant int, and it is "24", then its operand
// defines a byte. We only handle unsigned types here.
- if (isa<ShiftInst>(I) && isa<ConstantInt>(I->getOperand(1))) {
+ if (I->isShift() && isa<ConstantInt>(I->getOperand(1))) {
// Not shifting the entire input by N-1 bytes?
if (cast<ConstantInt>(I->getOperand(1))->getZExtValue() !=
8*(ByteValues.size()-1))
@@ -3488,7 +3488,7 @@ static bool CollectBSwapParts(Value *V, std::vector<Value*> &ByteValues) {
/// MatchBSwap - Given an OR instruction, check to see if this is a bswap idiom.
/// If so, insert the new bswap intrinsic and return it.
Instruction *InstCombiner::MatchBSwap(BinaryOperator &I) {
- // We can only handle bswap of unsigned integers, and cannot bswap one byte.
+ // We cannot bswap one byte.
if (I.getType() == Type::Int8Ty)
return 0;
@@ -3647,16 +3647,17 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {
}
// (X >> Z) | (Y >> Z) -> (X|Y) >> Z for all shifts.
- if (ShiftInst *SI1 = dyn_cast<ShiftInst>(Op1)) {
- if (ShiftInst *SI0 = dyn_cast<ShiftInst>(Op0))
- if (SI0->getOpcode() == SI1->getOpcode() &&
+ if (BinaryOperator *SI1 = dyn_cast<BinaryOperator>(Op1)) {
+ if (BinaryOperator *SI0 = dyn_cast<BinaryOperator>(Op0))
+ if (SI0->isShift() && SI0->getOpcode() == SI1->getOpcode() &&
SI0->getOperand(1) == SI1->getOperand(1) &&
(SI0->hasOneUse() || SI1->hasOneUse())) {
Instruction *NewOp =
InsertNewInstBefore(BinaryOperator::createOr(SI0->getOperand(0),
SI1->getOperand(0),
SI0->getName()), I);
- return new ShiftInst(SI1->getOpcode(), NewOp, SI1->getOperand(1));
+ return BinaryOperator::create(SI1->getOpcode(), NewOp,
+ SI1->getOperand(1));
}
}
@@ -4025,16 +4026,17 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
}
// (X >> Z) ^ (Y >> Z) -> (X^Y) >> Z for all shifts.
- if (ShiftInst *SI1 = dyn_cast<ShiftInst>(Op1)) {
- if (ShiftInst *SI0 = dyn_cast<ShiftInst>(Op0))
- if (SI0->getOpcode() == SI1->getOpcode() &&
+ if (BinaryOperator *SI1 = dyn_cast<BinaryOperator>(Op1)) {
+ if (BinaryOperator *SI0 = dyn_cast<BinaryOperator>(Op0))
+ if (SI0->isShift() && SI0->getOpcode() == SI1->getOpcode() &&
SI0->getOperand(1) == SI1->getOperand(1) &&
(SI0->hasOneUse() || SI1->hasOneUse())) {
Instruction *NewOp =
InsertNewInstBefore(BinaryOperator::createXor(SI0->getOperand(0),
SI1->getOperand(0),
SI0->getName()), I);
- return new ShiftInst(SI1->getOpcode(), NewOp, SI1->getOperand(1));
+ return BinaryOperator::create(SI1->getOpcode(), NewOp,
+ SI1->getOperand(1));
}
}
@@ -4599,13 +4601,18 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
// could exist), turn it into (X & (C2 << C1)) != (C3 << C1). This
// happens a LOT in code produced by the C front-end, for bitfield
// access.
- ShiftInst *Shift = dyn_cast<ShiftInst>(LHSI->getOperand(0));
+ BinaryOperator *Shift = dyn_cast<BinaryOperator>(LHSI->getOperand(0));
+ if (Shift && !Shift->isShift())
+ Shift = 0;
// Check to see if there is a noop-cast between the shift and the and.
if (!Shift) {
if (CastInst *CI = dyn_cast<CastInst>(LHSI->getOperand(0)))
- if (CI->getOpcode() == Instruction::BitCast)
- Shift = dyn_cast<ShiftInst>(CI->getOperand(0));
+ if (CI->getOpcode() == Instruction::BitCast) {
+ Shift = dyn_cast<BinaryOperator>(CI->getOperand(0));
+ if (Shift && !Shift->isShift())
+ Shift = 0;
+ }
}
ConstantInt *ShAmt;
@@ -4624,7 +4631,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
int ShAmtVal = Ty->getPrimitiveSizeInBits()-ShAmt->getZExtValue();
if (ShAmtVal < 0) ShAmtVal = 0; // Out of range shift.
- Constant *OShAmt = ConstantInt::get(Type::Int8Ty, ShAmtVal);
+ Constant *OShAmt = ConstantInt::get(AndTy, ShAmtVal);
Constant *ShVal =
ConstantExpr::getShl(ConstantInt::getAllOnesValue(AndTy),
OShAmt);
@@ -4674,12 +4681,12 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
// Compute C << Y.
Value *NS;
if (Shift->getOpcode() == Instruction::LShr) {
- NS = new ShiftInst(Instruction::Shl, AndCST, Shift->getOperand(1),
- "tmp");
+ NS = BinaryOperator::create(Instruction::Shl, AndCST,
+ Shift->getOperand(1), "tmp");
} else {
// Insert a logical shift.
- NS = new ShiftInst(Instruction::LShr, AndCST,
- Shift->getOperand(1), "tmp");
+ NS = BinaryOperator::create(Instruction::LShr, AndCST,
+ Shift->getOperand(1), "tmp");
}
InsertNewInstBefore(cast<Instruction>(NS), I);
@@ -5368,13 +5375,25 @@ Instruction *InstCombiner::visitICmpInstWithCastAndCast(ICmpInst &ICI) {
}
}
-Instruction *InstCombiner::visitShiftInst(ShiftInst &I) {
- assert(I.getOperand(1)->getType() == Type::Int8Ty);
+Instruction *InstCombiner::visitShl(BinaryOperator &I) {
+ return commonShiftTransforms(I);
+}
+
+Instruction *InstCombiner::visitLShr(BinaryOperator &I) {
+ return commonShiftTransforms(I);
+}
+
+Instruction *InstCombiner::visitAShr(BinaryOperator &I) {
+ return commonShiftTransforms(I);
+}
+
+Instruction *InstCombiner::commonShiftTransforms(BinaryOperator &I) {
+ assert(I.getOperand(1)->getType() == I.getOperand(0)->getType());
Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
// shl X, 0 == X and shr X, 0 == X
// shl 0, X == 0 and shr 0, X == 0
- if (Op1 == Constant::getNullValue(Type::Int8Ty) ||
+ if (Op1 == Constant::getNullValue(Op1->getType()) ||
Op0 == Constant::getNullValue(Op0->getType()))
return ReplaceInstUsesWith(I, Op0);
@@ -5407,7 +5426,7 @@ Instruction *InstCombiner::visitShiftInst(ShiftInst &I) {
if (I.isArithmeticShift()) {
if (MaskedValueIsZero(Op0,
1ULL << (I.getType()->getPrimitiveSizeInBits()-1))) {
- return new ShiftInst(Instruction::LShr, Op0, Op1, I.getName());
+ return BinaryOperator::create(Instruction::LShr, Op0, Op1, I.getName());
}
}
@@ -5418,7 +5437,7 @@ Instruction *InstCombiner::visitShiftInst(ShiftInst &I) {
}
Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
- ShiftInst &I) {
+ BinaryOperator &I) {
bool isLeftShift = I.getOpcode() == Instruction::Shl;
bool isSignedShift = I.getOpcode() == Instruction::AShr;
bool isUnsignedShift = !isSignedShift;
@@ -5474,7 +5493,7 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
if (isLeftShift && Op0BO->getOperand(1)->hasOneUse() &&
match(Op0BO->getOperand(1),
m_Shr(m_Value(V1), m_ConstantInt(CC))) && CC == Op1) {
- Instruction *YS = new ShiftInst(Instruction::Shl,
+ Instruction *YS = BinaryOperator::create(Instruction::Shl,
Op0BO->getOperand(0), Op1,
Op0BO->getName());
InsertNewInstBefore(YS, I); // (Y << C)
@@ -5489,13 +5508,12 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
// Turn (Y + ((X >> C) & CC)) << C -> ((X & (CC << C)) + (Y << C))
if (isLeftShift && Op0BO->getOperand(1)->hasOneUse() &&
- match(Op0BO->getOperand(1),
- m_And(m_Shr(m_Value(V1), m_Value(V2)),
- m_ConstantInt(CC))) && V2 == Op1 &&
+ match(Op0BO->getOperand(1), m_And(m_Shr(m_Value(V1), m_Value(V2)),
+ m_ConstantInt(CC))) && V2 == Op1 &&
cast<BinaryOperator>(Op0BO->getOperand(1))->getOperand(0)->hasOneUse()) {
- Instruction *YS = new ShiftInst(Instruction::Shl,
- Op0BO->getOperand(0), Op1,
- Op0BO->getName());
+ Instruction *YS = BinaryOperator::create(Instruction::Shl,
+ Op0BO->getOperand(0), Op1,
+ Op0BO->getName());
InsertNewInstBefore(YS, I); // (Y << C)
Instruction *XM =
BinaryOperator::createAnd(V1, ConstantExpr::getShl(CC, Op1),
@@ -5511,9 +5529,9 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
if (isLeftShift && Op0BO->getOperand(0)->hasOneUse() &&
match(Op0BO->getOperand(0),
m_Shr(m_Value(V1), m_ConstantInt(CC))) && CC == Op1) {
- Instruction *YS = new ShiftInst(Instruction::Shl,
- Op0BO->getOperand(1), Op1,
- Op0BO->getName());
+ Instruction *YS = BinaryOperator::create(Instruction::Shl,
+ Op0BO->getOperand(1), Op1,
+ Op0BO->getName());
InsertNewInstBefore(YS, I); // (Y << C)
Instruction *X =
BinaryOperator::create(Op0BO->getOpcode(), V1, YS,
@@ -5531,9 +5549,9 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
m_ConstantInt(CC))) && V2 == Op1 &&
cast<BinaryOperator>(Op0BO->getOperand(0))
->getOperand(0)->hasOneUse()) {
- Instruction *YS = new ShiftInst(Instruction::Shl,
- Op0BO->getOperand(1), Op1,
- Op0BO->getName());
+ Instruction *YS = BinaryOperator::create(Instruction::Shl,
+ Op0BO->getOperand(1), Op1,
+ Op0BO->getName());
InsertNewInstBefore(YS, I); // (Y << C)
Instruction *XM =
BinaryOperator::createAnd(V1, ConstantExpr::getShl(CC, Op1),
@@ -5582,8 +5600,8 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
Constant *NewRHS = ConstantExpr::get(I.getOpcode(), Op0C, Op1);
Instruction *NewShift =
- new ShiftInst(I.getOpcode(), Op0BO->getOperand(0), Op1,
- Op0BO->getName());
+ BinaryOperator::create(I.getOpcode(), Op0BO->getOperand(0), Op1,
+ Op0BO->getName());
Op0BO->setName("");
InsertNewInstBefore(NewShift, I);
@@ -5595,15 +5613,15 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
}
// Find out if this is a shift of a shift by a constant.
- ShiftInst *ShiftOp = 0;
- if (ShiftInst *Op0SI = dyn_cast<ShiftInst>(Op0))
- ShiftOp = Op0SI;
- else if (BitCastInst *CI = dyn_cast<BitCastInst>(Op0)) {
- // If this is a noop-integer cast of a shift instruction, use the shift.
- if (isa<ShiftInst>(CI->getOperand(0))) {
- ShiftOp = cast<ShiftInst>(CI->getOperand(0));
- }
- }
+ BinaryOperator *ShiftOp = dyn_cast<BinaryOperator>(Op0);
+ if (ShiftOp && !ShiftOp->isShift())
+ ShiftOp = 0;
+ if (!ShiftOp)
+ if (BitCastInst *CI = dyn_cast<BitCastInst>(Op0))
+ // If this is a noop-integer cast of a shift instruction, use the shift.
+ if (BinaryOperator *SI = dyn_cast<BinaryOperator>(CI->getOperand(0)))
+ if (SI->isShift())
+ ShiftOp = SI;
if (ShiftOp && isa<ConstantInt>(ShiftOp->getOperand(1))) {
// Find the operands and properties of the input shift. Note that the
@@ -5631,8 +5649,9 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
Amt = Op0->getType()->getPrimitiveSizeInBits();
Value *Op = ShiftOp->getOperand(0);
- ShiftInst *ShiftResult = new ShiftInst(I.getOpcode(), Op,
- ConstantInt::get(Type::Int8Ty, Amt));
+ BinaryOperator *ShiftResult =
+ BinaryOperator::create(I.getOpcode(), Op,
+ ConstantInt::get(Op->getType(), Amt));
if (I.getType() == ShiftResult->getType())
return ShiftResult;
InsertNewInstBefore(ShiftResult, I);
@@ -5660,21 +5679,25 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
if (ShiftAmt1 == ShiftAmt2) {
return ReplaceInstUsesWith(I, Mask); // (A << c) >> c === A & c2
} else if (ShiftAmt1 < ShiftAmt2) {
- return new ShiftInst(I.getOpcode(), Mask,
- ConstantInt::get(Type::Int8Ty, ShiftAmt2-ShiftAmt1));
+ return BinaryOperator::create(I.getOpcode(), Mask,
+ ConstantInt::get(Mask->getType(),
+ ShiftAmt2-ShiftAmt1));
} else if (isShiftOfUnsignedShift || isShiftOfLeftShift) {
if (isShiftOfUnsignedShift && !isShiftOfLeftShift && isSignedShift) {
- return new ShiftInst(Instruction::LShr, Mask,
- ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2));
+ return BinaryOperator::create(Instruction::LShr, Mask,
+ ConstantInt::get(Mask->getType(),
+ ShiftAmt1-ShiftAmt2));
} else {
- return new ShiftInst(ShiftOp->getOpcode(), Mask,
- ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2));
+ return BinaryOperator::create(ShiftOp->getOpcode(), Mask,
+ ConstantInt::get(Mask->getType(),
+ ShiftAmt1-ShiftAmt2));
}
} else {
// (X >>s C1) << C2 where C1 > C2 === (X >>s (C1-C2)) & mask
Instruction *Shift =
- new ShiftInst(ShiftOp->getOpcode(), Mask,
- ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2));
+ BinaryOperator::create(ShiftOp->getOpcode(), Mask,
+ ConstantInt::get(Mask->getType(),
+ ShiftAmt1-ShiftAmt2));
InsertNewInstBefore(Shift, I);
C = ConstantInt::getAllOnesValue(Shift->getType());
@@ -5928,8 +5951,8 @@ Value *InstCombiner::EvaluateInDifferentType(Value *V, const Type *Ty,
case Instruction::LShr:
case Instruction::Shl: {
Value *LHS = EvaluateInDifferentType(I->getOperand(0), Ty, isSigned);
- Res = new ShiftInst((Instruction::OtherOps)I->getOpcode(), LHS,
- I->getOperand(1), I->getName());
+ Res = BinaryOperator::create(Instruction::BinaryOps(I->getOpcode()), LHS,
+ I->getOperand(1), I->getName());
break;
}
case Instruction::Trunc:
@@ -6167,7 +6190,8 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
Instruction::CastOps opcode = (DestBitSize == SrcBitSize ?
Instruction::BitCast : Instruction::Trunc);
Value *Op0c = InsertOperandCastBefore(opcode, Op0, DestTy, SrcI);
- return new ShiftInst(Instruction::Shl, Op0c, Op1);
+ Value *Op1c = InsertOperandCastBefore(opcode, Op1, DestTy, SrcI);
+ return BinaryOperator::create(Instruction::Shl, Op0c, Op1c);
}
break;
case Instruction::AShr:
@@ -6179,7 +6203,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
unsigned ShiftAmt = cast<ConstantInt>(Op1)->getZExtValue();
if (SrcBitSize > ShiftAmt && SrcBitSize-ShiftAmt >= DestBitSize) {
// Insert the new logical shift right.
- return new ShiftInst(Instruction::LShr, Op0, Op1);
+ return BinaryOperator::create(Instruction::LShr, Op0, Op1);
}
}
break;
@@ -6225,9 +6249,9 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
// Perform a logical shr by shiftamt.
// Insert the shift to put the result in the low bit.
In = InsertNewInstBefore(
- new ShiftInst(Instruction::LShr, In,
- ConstantInt::get(Type::Int8Ty, ShiftAmt),
- In->getName()+".lobit"), CI);
+ BinaryOperator::create(Instruction::LShr, In,
+ ConstantInt::get(In->getType(), ShiftAmt),
+ In->getName()+".lobit"), CI);
}
if ((Op1CV != 0) == isNE) { // Toggle the low bit.
@@ -6274,8 +6298,10 @@ Instruction *InstCombiner::visitTrunc(CastInst &CI) {
// Okay, we can shrink this. Truncate the input, then return a new
// shift.
- Value *V = InsertCastBefore(Instruction::Trunc, SrcIOp0, Ty, CI);
- return new ShiftInst(Instruction::LShr, V, SrcI->getOperand(1));
+ Value *V1 = InsertCastBefore(Instruction::Trunc, SrcIOp0, Ty, CI);
+ Value *V2 = InsertCastBefore(Instruction::Trunc, SrcI->getOperand(1),
+ Ty, CI);
+ return BinaryOperator::create(Instruction::LShr, V1, V2);
}
} else { // This is a variable shr.
@@ -6285,9 +6311,9 @@ Instruction *InstCombiner::visitTrunc(CastInst &CI) {
if (CI.getType() == Type::Int1Ty && SrcI->hasOneUse()) {
Value *One = ConstantInt::get(SrcI->getType(), 1);
- Value *V = InsertNewInstBefore(new ShiftInst(Instruction::Shl, One,
- SrcI->getOperand(1),
- "tmp"), CI);
+ Value *V = InsertNewInstBefore(
+ BinaryOperator::create(Instruction::Shl, One, SrcI->getOperand(1),
+ "tmp"), CI);
V = InsertNewInstBefore(BinaryOperator::createAnd(V,
SrcI->getOperand(0),
"tmp"), CI);
@@ -6491,11 +6517,10 @@ static Constant *GetSelectFoldableConstant(Instruction *I) {
case Instruction::Sub:
case Instruction::Or:
case Instruction::Xor:
- return Constant::getNullValue(I->getType());
case Instruction::Shl:
case Instruction::LShr:
case Instruction::AShr:
- return Constant::getNullValue(Type::Int8Ty);
+ return Constant::getNullValue(I->getType());
case Instruction::And:
return ConstantInt::getAllOnesValue(I->getType());
case Instruction::Mul:
@@ -6525,8 +6550,8 @@ Instruction *InstCombiner::FoldSelectOpOp(SelectInst &SI, Instruction *TI,
TI->getType());
}
- // Only handle binary, compare and shift operators here.
- if (!isa<ShiftInst>(TI) && !isa<BinaryOperator>(TI))
+ // Only handle binary operators here.
+ if (!isa<BinaryOperator>(TI))
return 0;
// Figure out if the operations have any operands in common.
@@ -6570,11 +6595,13 @@ Instruction *InstCombiner::FoldSelectOpOp(SelectInst &SI, Instruction *TI,
return BinaryOperator::create(BO->getOpcode(), NewSI, MatchOp);
}
- assert(isa<ShiftInst>(TI) && "Should only have Shift here");
+ assert(TI->isShift() && "Should only have Shift here");
if (MatchIsOpZero)
- return new ShiftInst(cast<ShiftInst>(TI)->getOpcode(), MatchOp, NewSI);
+ return BinaryOperator::create(Instruction::BinaryOps(TI->getOpcode()),
+ MatchOp, NewSI);
else
- return new ShiftInst(cast<ShiftInst>(TI)->getOpcode(), NewSI, MatchOp);
+ return BinaryOperator::create(Instruction::BinaryOps(TI->getOpcode()),
+ NewSI, MatchOp);
}
Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
@@ -6663,9 +6690,9 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
// same width. Make an all-ones value by inserting a AShr.
Value *X = IC->getOperand(0);
unsigned Bits = X->getType()->getPrimitiveSizeInBits();
- Constant *ShAmt = ConstantInt::get(Type::Int8Ty, Bits-1);
- Instruction *SRA = new ShiftInst(Instruction::AShr, X,
- ShAmt, "ones");
+ Constant *ShAmt = ConstantInt::get(X->getType(), Bits-1);
+ Instruction *SRA = BinaryOperator::create(Instruction::AShr, X,
+ ShAmt, "ones");
InsertNewInstBefore(SRA, SI);
// Finally, convert to the type of the select RHS. We figure out
@@ -6829,8 +6856,6 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
InsertNewInstBefore(NewSel, SI);
if (BinaryOperator *BO = dyn_cast<BinaryOperator>(TVI))
return BinaryOperator::create(BO->getOpcode(), FalseVal, NewSel);
- else if (ShiftInst *SI = dyn_cast<ShiftInst>(TVI))
- return new ShiftInst(SI->getOpcode(), FalseVal, NewSel);
else {
assert(0 && "Unknown instruction!!");
}
@@ -6850,18 +6875,16 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
if (OpToFold) {
Constant *C = GetSelectFoldableConstant(FVI);
- std::string Name = FVI->getName(); FVI->setName("");
+ std::string Name = FVI->getName();
+ FVI->setName("");
Instruction *NewSel =
new SelectInst(SI.getCondition(), C, FVI->getOperand(2-OpToFold),
Name);
InsertNewInstBefore(NewSel, SI);
if (BinaryOperator *BO = dyn_cast<BinaryOperator>(FVI))
return BinaryOperator::create(BO->getOpcode(), TrueVal, NewSel);
- else if (ShiftInst *SI = dyn_cast<ShiftInst>(FVI))
- return new ShiftInst(SI->getOpcode(), TrueVal, NewSel);
- else {
+ else
assert(0 && "Unknown instruction!!");
- }
}
}
}
@@ -7377,8 +7400,8 @@ bool InstCombiner::transformConstExprCastCall(CallSite CS) {
/// and a single binop.
Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
Instruction *FirstInst = cast<Instruction>(PN.getIncomingValue(0));
- assert(isa<BinaryOperator>(FirstInst) || isa<ShiftInst>(FirstInst) ||
- isa<GetElementPtrInst>(FirstInst) || isa<CmpInst>(FirstInst));
+ assert(isa<BinaryOperator>(FirstInst) || isa<GetElementPtrInst>(FirstInst) ||
+ isa<CmpInst>(FirstInst));
unsigned Opc = FirstInst->getOpcode();
Value *LHSVal = FirstInst->getOperand(0);
Value *RHSVal = FirstInst->getOperand(1);
@@ -7452,8 +7475,6 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
else if (CmpInst *CIOp = dyn_cast<CmpInst>(FirstInst))
return CmpInst::create(CIOp->getOpcode(), CIOp->getPredicate(), LHSVal,
RHSVal);
- else if (ShiftInst *SI = dyn_cast<ShiftInst>(FirstInst))
- return new ShiftInst(SI->getOpcode(), LHSVal, RHSVal);
else {
assert(isa<GetElementPtrInst>(FirstInst));
return new GetElementPtrInst(LHSVal, RHSVal);
@@ -7513,8 +7534,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
bool isVolatile = false;
if (isa<CastInst>(FirstInst)) {
CastSrcTy = FirstInst->getOperand(0)->getType();
- } else if (isa<BinaryOperator>(FirstInst) || isa<ShiftInst>(FirstInst) ||
- isa<CmpInst>(FirstInst)) {
+ } else if (isa<BinaryOperator>(FirstInst) || isa<CmpInst>(FirstInst)) {
// Can fold binop, compare or shift here if the RHS is a constant,
// otherwise call FoldPHIArgBinOpIntoPHI.
ConstantOp = dyn_cast<Constant>(FirstInst->getOperand(1));
@@ -7596,8 +7616,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
return CmpInst::create(CIOp->getOpcode(), CIOp->getPredicate(),
PhiVal, ConstantOp);
else
- return new ShiftInst(cast<ShiftInst>(FirstInst)->getOpcode(),
- PhiVal, ConstantOp);
+ assert(0 && "Unknown operation");
}
/// DeadPHICycle - Return true if this PHI node is only used by a PHI node cycle
diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp
index 5874b6802a..a07ea26890 100644
--- a/lib/Transforms/Scalar/LICM.cpp
+++ b/lib/Transforms/Scalar/LICM.cpp
@@ -384,7 +384,7 @@ bool LICM::canSinkOrHoistInst(Instruction &I) {
}
// Otherwise these instructions are hoistable/sinkable
- return isa<BinaryOperator>(I) || isa<ShiftInst>(I) || isa<CastInst>(I) ||
+ return isa<BinaryOperator>(I) || isa<CastInst>(I) ||
isa<SelectInst>(I) || isa<GetElementPtrInst>(I) || isa<CmpInst>(I);
}
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp
index 37f1b5507a..11e096cd13 100644
--- a/lib/Transforms/Scalar/SCCP.cpp
+++ b/lib/Transforms/Scalar/SCCP.cpp
@@ -377,7 +377,6 @@ private:
void visitSelectInst(SelectInst &I);
void visitBinaryOperator(Instruction &I);
void visitCmpInst(CmpInst &I);
- void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); }
void visitExtractElementInst(ExtractElementInst &I);
void visitInsertElementInst(InsertElementInst &I);
void visitShuffleVectorInst(ShuffleVectorInst &I);
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
index e307ea7008..a7f33c9b19 100644
--- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp
+++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
@@ -655,9 +655,9 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
} else {
assert(NV->getType()->isInteger() && "Unknown promotion!");
if (Offset && Offset < TD.getTypeSize(NV->getType())*8) {
- NV = new ShiftInst(Instruction::LShr, NV,
- ConstantInt::get(Type::Int8Ty, Offset),
- LI->getName(), LI);
+ NV = BinaryOperator::create(Instruction::LShr, NV,
+ ConstantInt::get(NV->getType(), Offset),
+ LI->getName(), LI);
}
// If the result is an integer, this is a trunc or bitcast.
@@ -740,9 +740,9 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
SV = CastInst::createZExtOrBitCast(SV, AllocaType,
SV->getName(), SI);
if (Offset && Offset < AllocaType->getPrimitiveSizeInBits())
- SV = new ShiftInst(Instruction::Shl, SV,
- ConstantInt::get(Type::Int8Ty, Offset),
- SV->getName()+".adj", SI);
+ SV = BinaryOperator::create(Instruction::Shl, SV,
+ ConstantInt::get(SV->getType(), Offset),
+ SV->getName()+".adj", SI);
// Mask out the bits we are about to insert from the old value.
unsigned TotalBits = TD.getTypeSize(SV->getType())*8;
if (TotalBits != SrcSize) {
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp
index 4fe3c02324..8a7c0987c7 100644
--- a/lib/VMCore/AsmWriter.cpp
+++ b/lib/VMCore/AsmWriter.cpp
@@ -1272,8 +1272,7 @@ void AssemblyWriter::printInstruction(const Instruction &I) {
// Shift Left & Right print both types even for Ubyte LHS, and select prints
// types even if all operands are bools.
- if (isa<ShiftInst>(I) || isa<SelectInst>(I) || isa<StoreInst>(I) ||
- isa<ShuffleVectorInst>(I)) {
+ if (isa<SelectInst>(I) || isa<StoreInst>(I) || isa<ShuffleVectorInst>(I)) {
PrintAllTypes = true;
} else {
for (unsigned i = 1, E = I.getNumOperands(); i != E; ++i) {
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp
index cb296ad6ab..79673f034d 100644
--- a/lib/VMCore/Constants.cpp
+++ b/lib/VMCore/Constants.cpp
@@ -1302,10 +1302,7 @@ namespace llvm {
if (Instruction::isCast(V.opcode))
return new UnaryConstantExpr(V.opcode, V.operands[0], Ty);
if ((V.opcode >= Instruction::BinaryOpsBegin &&
- V.opcode < Instruction::BinaryOpsEnd) ||
- V.opcode == Instruction::Shl ||
- V.opcode == Instruction::LShr ||
- V.opcode == Instruction::AShr)
+ V.opcode < Instruction::BinaryOpsEnd))
return new BinaryConstantExpr(V.opcode, V.operands[0], V.operands[1]);
if (V.opcode == Instruction::Select)
return new SelectConstantExpr(V.operands[0], V.operands[1],
@@ -1362,12 +1359,6 @@ namespace llvm {
OldC->getOperand(1),
OldC->getOperand(2));
break;
- case Instruction::Shl:
- case Instruction::LShr:
- case Instruction::AShr:
- New = ConstantExpr::getShiftTy(NewTy, OldC->getOpcode(),
- OldC->getOperand(0), OldC->getOperand(1));
- break;
default:
assert(OldC->getOpcode() >= Instruction::BinaryOpsBegin &&
OldC->getOpcode() < Instruction::BinaryOpsEnd);
@@ -1603,10 +1594,6 @@ Constant *ConstantExpr::getPtrPtrFromArrayPtr(Constant *C) {
Constant *ConstantExpr::getTy(const Type *ReqTy, unsigned Opcode,
Constant *C1, Constant *C2) {
- if (Opcode == Instruction::Shl || Opcode == Instruction::LShr ||
- Opcode == Instruction::AShr)
- return getShiftTy(ReqTy, Opcode, C1, C2);
-
// Check the operands for consistency first
assert(Opcode >= Instruction::BinaryOpsBegin &&
Opcode < Instruction::BinaryOpsEnd &&
@@ -1689,7 +1676,7 @@ Constant *ConstantExpr::get(unsigned Opcode, Constant *C1, Constant *C2) {
case Instruction::Shl:
case Instruction::LShr:
case Instruction::AShr:
- assert(C2->getType() == Type::Int8Ty && "Shift should be by i8!");
+ assert(C1->getType() == C2->getType() && "Op types should be identical!");
assert(C1->getType()->isInteger() &&
"Tried to create a shift operation on a non-integer type!");
break;
@@ -1724,26 +1711,6 @@ Constant *ConstantExpr::getSelectTy(const Type *ReqTy, Constant *C,
return ExprConstants->getOrCreate(ReqTy, Key);
}
-/// getShiftTy - Return a shift left or shift right constant expr
-Constant *ConstantExpr::getShiftTy(const Type *ReqTy, unsigned Opcode,
- Constant *C1, Constant *C2) {
- // Check the operands for consistency first
- assert((Opcode == Instruction::Shl ||
- Opcode == Instruction::LShr ||
- Opcode == Instruction::AShr) &&
- "Invalid opcode in binary constant expression");
- assert(C1->getType()->isInteger() && C2->getType() == Type::Int8Ty &&
- "Invalid operand types for Shift constant expr!");
-
- if (Constant *FC = ConstantFoldBinaryInstruction(Opcode, C1, C2))
- return FC; // Fold a few common cases...
-
- // Look up the constant in the table first to ensure uniqueness
- std::vector<Constant*> argVec(1, C1); argVec.push_back(C2);
- ExprMapKeyType Key(Opcode, argVec);
- return ExprConstants->getOrCreate(ReqTy, Key);
-}
-
Constant *ConstantExpr::getGetElementPtrTy(const Type *ReqTy, Constant *C,
Value* const *Idxs,
unsigned NumIdx) {
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp
index b4452c7a8b..424e53e2bd 100644
--- a/lib/VMCore/Instructions.cpp
+++ b/lib/VMCore/Instructions.cpp
@@ -1088,6 +1088,14 @@ void BinaryOperator::init(BinaryOps iType)
cast<PackedType>(getType())->getElementType()->isFloatingPoint()))
&& "Incorrect operand type (not floating point) for FREM");
break;
+ case Shl:
+ case LShr:
+ case AShr:
+ assert(getType() == LHS->getType() &&
+ "Shift operation should return same type as operands!");
+ assert(getType()->isInteger() &&
+ "Shift operation requires integer operands");
+ break;
case And: case Or:
case Xor:
assert(getType() == LHS->getType() &&
@@ -2299,7 +2307,6 @@ CastInst *PtrToIntInst::clone() const { return new PtrToIntInst(*this); }
CastInst *IntToPtrInst::clone() const { return new IntToPtrInst(*this); }
CastInst *BitCastInst::clone() const { return new BitCastInst(*this); }
CallInst *CallInst::clone() const { return new CallInst(*this); }
-ShiftInst *ShiftInst::clone() const { return new ShiftInst(*this); }
SelectInst *SelectInst::clone() const { return new SelectInst(*this); }
VAArgInst *VAArgInst::clone() const { return new VAArgInst(*this); }
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index 59be4a45a3..9dc892e5ae 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -196,7 +196,6 @@ namespace { // Anonymous namespace for class
void visitBinaryOperator(BinaryOperator &B);
void visitICmpInst(ICmpInst &IC);
void visitFCmpInst(FCmpInst &FC);
- void visitShiftInst(ShiftInst &SI);
void visitExtractElementInst(ExtractElementInst &EI);
void visitInsertElementInst(InsertElementInst &EI);
void visitShuffleVectorInst(ShuffleVectorInst &EI);
@@ -713,9 +712,11 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) {
Assert1(B.getOperand(0)->getType() == B.getOperand(1)->getType(),
"Both operands to a binary operator are not of the same type!", &B);
+ switch (B.getOpcode()) {
// Check that logical operators are only used with integral operands.
- if (B.getOpcode() == Instruction::And || B.getOpcode() == Instruction::Or ||
- B.getOpcode() == Instruction::Xor) {
+ case Instruction::And:
+ case Instruction::Or:
+ case Instruction::Xor:
Assert1(B.getType()->isInteger() ||
(isa<PackedType>(B.getType()) &&
cast<PackedType>(B.getType())->getElementType()->isInteger()),
@@ -723,7 +724,16 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) {
Assert1(B.getType() == B.getOperand(0)->getType(),
"Logical operators must have same type for operands and result!",
&B);
- } else {
+ break;
+ case Instruction::Shl:
+ case Instruction::LShr:
+ case Instruction::AShr:
+ Assert1(B.getType()->isInteger(),
+ "Shift must return an integer result!", &B);
+ Assert1(B.getType() == B.getOperand(0)->getType(),
+ "Shift return type must be same as operands!", &B);
+ /* FALL THROUGH */
+ default:
// Arithmetic operators only work on integer or fp values
Assert1(B.getType() == B.getOperand(0)->getType(),
"Arithmetic operators must have same type for operands and result!",
@@ -731,6 +741,7 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) {
Assert1(B.getType()->isInteger() || B.getType()->isFloatingPoint() ||
isa<PackedType>(B.getType()),
"Arithmetic operators must have integer, fp, or packed type!", &B);
+ break;
}
visitInstruction(B);
@@ -760,16 +771,6 @@ void Verifier::visitFCmpInst(FCmpInst& FC) {
visitInstruction(FC);
}
-void Verifier::visitShiftInst(ShiftInst &SI) {
- Assert1(SI.getType()->isInteger(),
- "Shift must return an integer result!", &SI);
- Assert1(SI.getType() == SI.getOperand(0)->getType(),
- "Shift return type must be same as first operand!", &SI);
- Assert1(SI.getOperand(1)->getType() == Type::Int8Ty,
- "Second operand to shift must be ubyte type!", &SI);
- visitInstruction(SI);
-}
-
void Verifier::visitExtractElementInst(ExtractElementInst &EI) {
Assert1(ExtractElementInst::isValidOperands(EI.getOperand(0),
EI.getOperand(1)),