llvm.org GIT mirror llvm / 2887310
Added MemOperands to Atomic operations since Atomics touches memory. Added abstract class MemSDNode for any Node that have an associated MemOperand Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and atomic.lss => atomic.load.sub git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52706 91177308-0d34-0410-b5e6-96231b3b80d8 Mon P Wang 11 years ago
26 changed file(s) with 932 addition(s) and 528 deletion(s). Raw diff Collapse all Expand all
215215
  • Atomic intrinsics
  • 216216
    217217
  • llvm.memory_barrier
  • 218
  • llvm.atomic.lcs
  • 219
  • llvm.atomic.las
  • 218
  • llvm.atomic.cmp.swap
  • 220219
  • llvm.atomic.swap
  • 220
  • llvm.atomic.load.add
  • 221
  • llvm.atomic.load.sub
  • 222
  • llvm.atomic.load.and
  • 223
  • llvm.atomic.load.nand
  • 224
  • llvm.atomic.load.or
  • 225
  • llvm.atomic.load.xor
  • 226
  • llvm.atomic.load.max
  • 227
  • llvm.atomic.load.min
  • 228
  • llvm.atomic.load.umax
  • 229
  • llvm.atomic.load.umin
  • 221230
    222231
    223232
  • General intrinsics
  • 57765785
    57775786
    57785787
    5779 'llvm.atomic.lcs.*' Intrinsic
    5780
    5781
    5782
    Syntax:
    5783

    5784 This is an overloaded intrinsic. You can use llvm.atomic.lcs on any
    5788 'llvm.atomic.cmp.swap.*' Intrinsic
    5789
    5790
    5791
    Syntax:
    5792

    5793 This is an overloaded intrinsic. You can use llvm.atomic.cmp.swap on any
    57855794 integer bit width. Not all targets support all bit widths however.

    57865795
    57875796
    
                      
                    
    5788 declare i8 @llvm.atomic.lcs.i8( i8* <ptr>, i8 <cmp>, i8 <val> )
    5789 declare i16 @llvm.atomic.lcs.i16( i16* <ptr>, i16 <cmp>, i16 <val> )
    5790 declare i32 @llvm.atomic.lcs.i32( i32* <ptr>, i32 <cmp>, i32 <val> )
    5791 declare i64 @llvm.atomic.lcs.i64( i64* <ptr>, i64 <cmp>, i64 <val> )
    5797 declare i8 @llvm.atomic.cmp.swap.i8( i8* <ptr>, i8 <cmp>, i8 <val> )
    5798 declare i16 @llvm.atomic.cmp.swap.i16( i16* <ptr>, i16 <cmp>, i16 <val> )
    5799 declare i32 @llvm.atomic.cmp.swap.i32( i32* <ptr>, i32 <cmp>, i32 <val> )
    5800 declare i64 @llvm.atomic.cmp.swap.i64( i64* <ptr>, i64 <cmp>, i64 <val> )
    57925801
    57935802
    57945803
    Overview:
    57985807

    57995808
    Arguments:
    58005809

    5801 The llvm.atomic.lcs intrinsic takes three arguments. The result as
    5810 The llvm.atomic.cmp.swap intrinsic takes three arguments. The result as
    58025811 well as both cmp and val must be integer values with the
    58035812 same bit width. The ptr argument must be a pointer to a value of
    58045813 this integer type. While any bit width integer may be used, targets may only
    58205829 store i32 4, %ptr
    58215830
    58225831 %val1 = add i32 4, 4
    5823 %result1 = call i32 @llvm.atomic.lcs.i32( i32* %ptr, i32 4, %val1 )
    5832 %result1 = call i32 @llvm.atomic.cmp.swap.i32( i32* %ptr, i32 4, %val1 )
    58245833 ; yields {i32}:result1 = 4
    58255834 %stored1 = icmp eq i32 %result1, 4 ; yields {i1}:stored1 = true
    58265835 %memval1 = load i32* %ptr ; yields {i32}:memval1 = 8
    58275836
    58285837 %val2 = add i32 1, 1
    5829 %result2 = call i32 @llvm.atomic.lcs.i32( i32* %ptr, i32 5, %val2 )
    5838 %result2 = call i32 @llvm.atomic.cmp.swap.i32( i32* %ptr, i32 5, %val2 )
    58305839 ; yields {i32}:result2 = 8
    58315840 %stored2 = icmp eq i32 %result2, 5 ; yields {i1}:stored2 = false
    58325841
    58605869
    Arguments:
    58615870
    58625871

    5863 The llvm.atomic.ls intrinsic takes two arguments. Both the
    5872 The llvm.atomic.swap intrinsic takes two arguments. Both the
    58645873 val argument and the result must be integers of the same bit width.
    58655874 The first argument, ptr, must be a pointer to a value of this
    58665875 integer type. The targets may only lower integer representations they
    58955904
    58965905
    58975906
    5898 'llvm.atomic.las.*' Intrinsic
    5899
    5900
    5901
    5902
    Syntax:
    5903

    5904 This is an overloaded intrinsic. You can use llvm.atomic.las on any
    5907 'llvm.atomic.load.add.*' Intrinsic
    5908
    5909
    5910
    5911
    Syntax:
    5912

    5913 This is an overloaded intrinsic. You can use llvm.atomic.load.add on any
    59055914 integer bit width. Not all targets support all bit widths however.

    59065915
    
                      
                    
    5907 declare i8 @llvm.atomic.las.i8.( i8* <ptr>, i8 <delta> )
    5908 declare i16 @llvm.atomic.las.i16.( i16* <ptr>, i16 <delta> )
    5909 declare i32 @llvm.atomic.las.i32.( i32* <ptr>, i32 <delta> )
    5910 declare i64 @llvm.atomic.las.i64.( i64* <ptr>, i64 <delta> )
    5916 declare i8 @llvm.atomic.load.add.i8.( i8* <ptr>, i8 <delta> )
    5917 declare i16 @llvm.atomic.load.add.i16.( i16* <ptr>, i16 <delta> )
    5918 declare i32 @llvm.atomic.load.add.i32.( i32* <ptr>, i32 <delta> )
    5919 declare i64 @llvm.atomic.load.add.i64.( i64* <ptr>, i64 <delta> )
    59115920
    59125921
    59135922
    Overview:
    59345943
    
                      
                    
    59355944 %ptr = malloc i32
    59365945 store i32 4, %ptr
    5937 %result1 = call i32 @llvm.atomic.las.i32( i32* %ptr, i32 4 )
    5946 %result1 = call i32 @llvm.atomic.load.add.i32( i32* %ptr, i32 4 )
    59385947 ; yields {i32}:result1 = 4
    5939 %result2 = call i32 @llvm.atomic.las.i32( i32* %ptr, i32 2 )
    5948 %result2 = call i32 @llvm.atomic.load.add.i32( i32* %ptr, i32 2 )
    59405949 ; yields {i32}:result2 = 8
    5941 %result3 = call i32 @llvm.atomic.las.i32( i32* %ptr, i32 5 )
    5950 %result3 = call i32 @llvm.atomic.load.add.i32( i32* %ptr, i32 5 )
    59425951 ; yields {i32}:result3 = 10
    5943 %memval = load i32* %ptr ; yields {i32}:memval1 = 15
    5944
    5945
    5946
    5952 %memval1 = load i32* %ptr ; yields {i32}:memval1 = 15
    5953
    5954
    5955
    5956
    5957
    5958 'llvm.atomic.load.sub.*' Intrinsic
    5959
    5960
    5961
    5962
    Syntax:
    5963

    5964 This is an overloaded intrinsic. You can use llvm.atomic.load.sub on
    5965 any integer bit width. Not all targets support all bit widths however.

    5966
    
                      
                    
    5967 declare i8 @llvm.atomic.load.sub.i8.( i8* <ptr>, i8 <delta> )
    5968 declare i16 @llvm.atomic.load.sub.i16.( i16* <ptr>, i16 <delta> )
    5969 declare i32 @llvm.atomic.load.sub.i32.( i32* <ptr>, i32 <delta> )
    5970 declare i64 @llvm.atomic.load.sub.i64.( i64* <ptr>, i64 <delta> )
    5971
    5972
    5973
    Overview:
    5974

    5975 This intrinsic subtracts delta to the value stored in memory at
    5976 ptr. It yields the original value at ptr.
    5977

    5978
    Arguments:
    5979

    5980
    5981 The intrinsic takes two arguments, the first a pointer to an integer value
    5982 and the second an integer value. The result is also an integer value. These
    5983 integer types can have any bit width, but they must all have the same bit
    5984 width. The targets may only lower integer representations they support.
    5985

    5986
    Semantics:
    5987

    5988 This intrinsic does a series of operations atomically. It first loads the
    5989 value stored at ptr. It then subtracts delta, stores the
    5990 result to ptr. It yields the original value stored at ptr.
    5991

    5992
    5993
    Examples:
    5994
    
                      
                    
    5995 %ptr = malloc i32
    5996 store i32 8, %ptr
    5997 %result1 = call i32 @llvm.atomic.load.sub.i32( i32* %ptr, i32 4 )
    5998 ; yields {i32}:result1 = 8
    5999 %result2 = call i32 @llvm.atomic.load.sub.i32( i32* %ptr, i32 2 )
    6000 ; yields {i32}:result2 = 4
    6001 %result3 = call i32 @llvm.atomic.load.sub.i32( i32* %ptr, i32 5 )
    6002 ; yields {i32}:result3 = 2
    6003 %memval1 = load i32* %ptr ; yields {i32}:memval1 = -3
    6004
    6005
    6006
    6007
    6008
    6009 'llvm.atomic.load.and.*' Intrinsic
    6010 'llvm.atomic.load.nand.*' Intrinsic
    6011 'llvm.atomic.load.or.*' Intrinsic
    6012 'llvm.atomic.load.xor.*' Intrinsic
    6013
    6014
    6015
    6016
    Syntax:
    6017

    6018 These are overloaded intrinsics. You can use llvm.atomic.load_and,
    6019 llvm.atomic.load_nand, llvm.atomic.load_or, and
    6020 llvm.atomic.load_xor on any integer bit width. Not all targets
    6021 support all bit widths however.

    6022
    
                      
                    
    6023 declare i8 @llvm.atomic.load.and.i8.( i8* <ptr>, i8 <delta> )
    6024 declare i16 @llvm.atomic.load.and.i16.( i16* <ptr>, i16 <delta> )
    6025 declare i32 @llvm.atomic.load.and.i32.( i32* <ptr>, i32 <delta> )
    6026 declare i64 @llvm.atomic.load.and.i64.( i64* <ptr>, i64 <delta> )
    6027
    6028
    6029
    6030
    
                      
                    
    6031 declare i8 @llvm.atomic.load.or.i8.( i8* <ptr>, i8 <delta> )
    6032 declare i16 @llvm.atomic.load.or.i16.( i16* <ptr>, i16 <delta> )
    6033 declare i32 @llvm.atomic.load.or.i32.( i32* <ptr>, i32 <delta> )
    6034 declare i64 @llvm.atomic.load.or.i64.( i64* <ptr>, i64 <delta> )
    6035
    6036
    6037
    6038
    
                      
                    
    6039 declare i8 @llvm.atomic.load.nand.i8.( i8* <ptr>, i8 <delta> )
    6040 declare i16 @llvm.atomic.load.nand.i16.( i16* <ptr>, i16 <delta> )
    6041 declare i32 @llvm.atomic.load.nand.i32.( i32* <ptr>, i32 <delta> )
    6042 declare i64 @llvm.atomic.load.nand.i64.( i64* <ptr>, i64 <delta> )
    6043
    6044
    6045
    6046
    
                      
                    
    6047 declare i8 @llvm.atomic.load.xor.i8.( i8* <ptr>, i8 <delta> )
    6048 declare i16 @llvm.atomic.load.xor.i16.( i16* <ptr>, i16 <delta> )
    6049 declare i32 @llvm.atomic.load.xor.i32.( i32* <ptr>, i32 <delta> )
    6050 declare i64 @llvm.atomic.load.xor.i64.( i64* <ptr>, i64 <delta> )
    6051
    6052
    6053
    Overview:
    6054

    6055 These intrinsics bitwise the operation (and, nand, or, xor) delta to
    6056 the value stored in memory at ptr. It yields the original value
    6057 at ptr.
    6058

    6059
    Arguments:
    6060

    6061
    6062 These intrinsics take two arguments, the first a pointer to an integer value
    6063 and the second an integer value. The result is also an integer value. These
    6064 integer types can have any bit width, but they must all have the same bit
    6065 width. The targets may only lower integer representations they support.
    6066

    6067
    Semantics:
    6068

    6069 These intrinsics does a series of operations atomically. They first load the
    6070 value stored at ptr. They then do the bitwise operation
    6071 delta, store the result to ptr. They yield the original
    6072 value stored at ptr.
    6073

    6074
    6075
    Examples:
    6076
    
                      
                    
    6077 %ptr = malloc i32
    6078 store i32 0x0F0F, %ptr
    6079 %result0 = call i32 @llvm.atomic.load.nand.i32( i32* %ptr, i32 0xFF )
    6080 ; yields {i32}:result0 = 0x0F0F
    6081 %result1 = call i32 @llvm.atomic.load.and.i32( i32* %ptr, i32 0xFF )
    6082 ; yields {i32}:result1 = 0xFFFFFFF0
    6083 %result2 = call i32 @llvm.atomic.load.or.i32( i32* %ptr, i32 0F )
    6084 ; yields {i32}:result2 = 0xF0
    6085 %result3 = call i32 @llvm.atomic.load.xor.i32( i32* %ptr, i32 0F )
    6086 ; yields {i32}:result3 = FF
    6087 %memval1 = load i32* %ptr ; yields {i32}:memval1 = F0
    6088
    6089
    6090
    6091
    6092
    6093
    6094 'llvm.atomic.load.max.*' Intrinsic
    6095 'llvm.atomic.load.min.*' Intrinsic
    6096 'llvm.atomic.load.umax.*' Intrinsic
    6097 'llvm.atomic.load.umin.*' Intrinsic
    6098
    6099
    6100
    6101
    Syntax:
    6102

    6103 These are overloaded intrinsics. You can use llvm.atomic.load_max,
    6104 llvm.atomic.load_min, llvm.atomic.load_umax, and
    6105 llvm.atomic.load_umin on any integer bit width. Not all targets
    6106 support all bit widths however.

    6107
    
                      
                    
    6108 declare i8 @llvm.atomic.load.max.i8.( i8* <ptr>, i8 <delta> )
    6109 declare i16 @llvm.atomic.load.max.i16.( i16* <ptr>, i16 <delta> )
    6110 declare i32 @llvm.atomic.load.max.i32.( i32* <ptr>, i32 <delta> )
    6111 declare i64 @llvm.atomic.load.max.i64.( i64* <ptr>, i64 <delta> )
    6112
    6113
    6114
    6115
    
                      
                    
    6116 declare i8 @llvm.atomic.load.min.i8.( i8* <ptr>, i8 <delta> )
    6117 declare i16 @llvm.atomic.load.min.i16.( i16* <ptr>, i16 <delta> )
    6118 declare i32 @llvm.atomic.load.min.i32.( i32* <ptr>, i32 <delta> )
    6119 declare i64 @llvm.atomic.load.min.i64.( i64* <ptr>, i64 <delta> )
    6120
    6121
    6122
    6123
    
                      
                    
    6124 declare i8 @llvm.atomic.load.umax.i8.( i8* <ptr>, i8 <delta> )
    6125 declare i16 @llvm.atomic.load.umax.i16.( i16* <ptr>, i16 <delta> )
    6126 declare i32 @llvm.atomic.load.umax.i32.( i32* <ptr>, i32 <delta> )
    6127 declare i64 @llvm.atomic.load.umax.i64.( i64* <ptr>, i64 <delta> )
    6128
    6129
    6130
    6131
    
                      
                    
    6132 declare i8 @llvm.atomic.load.umin.i8.( i8* <ptr>, i8 <delta> )
    6133 declare i16 @llvm.atomic.load.umin.i16.( i16* <ptr>, i16 <delta> )
    6134 declare i32 @llvm.atomic.load.umin.i32.( i32* <ptr>, i32 <delta> )
    6135 declare i64 @llvm.atomic.load.umin.i64.( i64* <ptr>, i64 <delta> )
    6136
    6137
    6138
    Overview:
    6139

    6140 These intrinsics takes the signed or unsigned minimum or maximum of
    6141 delta and the value stored in memory at ptr. It yields the
    6142 original value at ptr.
    6143

    6144
    Arguments:
    6145

    6146
    6147 These intrinsics take two arguments, the first a pointer to an integer value
    6148 and the second an integer value. The result is also an integer value. These
    6149 integer types can have any bit width, but they must all have the same bit
    6150 width. The targets may only lower integer representations they support.
    6151

    6152
    Semantics:
    6153

    6154 These intrinsics does a series of operations atomically. They first load the
    6155 value stored at ptr. They then do the signed or unsigned min or max
    6156 delta and the value, store the result to ptr. They yield
    6157 the original value stored at ptr.
    6158

    6159
    6160
    Examples:
    6161
    
                      
                    
    6162 %ptr = malloc i32
    6163 store i32 7, %ptr
    6164 %result0 = call i32 @llvm.atomic.load.min.i32( i32* %ptr, i32 -2 )
    6165 ; yields {i32}:result0 = 7
    6166 %result1 = call i32 @llvm.atomic.load.max.i32( i32* %ptr, i32 8 )
    6167 ; yields {i32}:result1 = -2
    6168 %result2 = call i32 @llvm.atomic.load.umin.i32( i32* %ptr, i32 10 )
    6169 ; yields {i32}:result2 = 8
    6170 %result3 = call i32 @llvm.atomic.load.umax.i32( i32* %ptr, i32 30 )
    6171 ; yields {i32}:result3 = 8
    6172 %memval1 = load i32* %ptr ; yields {i32}:memval1 = 30
    6173
    6174
    59476175
    59486176
    59496177
    367367 SDOperand SV);
    368368
    369369 /// getAtomic - Gets a node for an atomic op, produces result and chain, takes
    370 // 3 operands
    370 /// 3 operands
    371371 SDOperand getAtomic(unsigned Opcode, SDOperand Chain, SDOperand Ptr,
    372 SDOperand Cmp, SDOperand Swp, MVT VT);
    372 SDOperand Cmp, SDOperand Swp, MVT VT, const Value* PtrVal,
    373 unsigned Alignment=0);
    373374
    374375 /// getAtomic - Gets a node for an atomic op, produces result and chain, takes
    375 // 2 operands
    376 /// 2 operands
    376377 SDOperand getAtomic(unsigned Opcode, SDOperand Chain, SDOperand Ptr,
    377 SDOperand Val, MVT VT);
    378 SDOperand Val, MVT VT, const Value* PtrVal,
    379 unsigned Alignment = 0);
    378380
    379381 /// getLoad - Loads are not normal binary operators: their result type is not
    380382 /// determined by their operands, and they produce a value AND a token chain.
    583583 // and produces an output chain.
    584584 MEMBARRIER,
    585585
    586 // Val, OUTCHAIN = ATOMIC_LCS(INCHAIN, ptr, cmp, swap)
    586 // Val, OUTCHAIN = ATOMIC_CMP_SWAP(INCHAIN, ptr, cmp, swap)
    587587 // this corresponds to the atomic.lcs intrinsic.
    588588 // cmp is compared to *ptr, and if equal, swap is stored in *ptr.
    589589 // the return is always the original value in *ptr
    590 ATOMIC_LCS,
    591
    592 // Val, OUTCHAIN = ATOMIC_LAS(INCHAIN, ptr, amt)
    590 ATOMIC_CMP_SWAP,
    591
    592 // Val, OUTCHAIN = ATOMIC_LOAD_ADD(INCHAIN, ptr, amt)
    593593 // this corresponds to the atomic.las intrinsic.
    594594 // *ptr + amt is stored to *ptr atomically.
    595595 // the return is always the original value in *ptr
    596 ATOMIC_LAS,
    596 ATOMIC_LOAD_ADD,
    597597
    598598 // Val, OUTCHAIN = ATOMIC_SWAP(INCHAIN, ptr, amt)
    599599 // this corresponds to the atomic.swap intrinsic.
    601601 // the return is always the original value in *ptr
    602602 ATOMIC_SWAP,
    603603
    604 // Val, OUTCHAIN = ATOMIC_LSS(INCHAIN, ptr, amt)
    604 // Val, OUTCHAIN = ATOMIC_LOAD_SUB(INCHAIN, ptr, amt)
    605605 // this corresponds to the atomic.lss intrinsic.
    606606 // *ptr - amt is stored to *ptr atomically.
    607607 // the return is always the original value in *ptr
    608 ATOMIC_LSS,
    608 ATOMIC_LOAD_SUB,
    609609
    610610 // Val, OUTCHAIN = ATOMIC_L[OpName]S(INCHAIN, ptr, amt)
    611611 // this corresponds to the atomic.[OpName] intrinsic.
    14361436 SDUse getValue() const { return Op; }
    14371437 };
    14381438
    1439 class AtomicSDNode : public SDNode {
    1439 /// Abstact virtual class for operations for memory operations
    1440 class MemSDNode : public SDNode {
    1441 virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
    1442
    1443 private:
    1444 //! SrcValue - Memory location for alias analysis.
    1445 const Value *SrcValue;
    1446
    1447 //! Alignment - Alignment of memory location in bytes.
    1448 unsigned Alignment;
    1449
    1450 public:
    1451 MemSDNode(unsigned Opc, SDVTList VTs, const Value *SrcValue,
    1452 unsigned Alignment)
    1453 : SDNode(Opc, VTs), SrcValue(SrcValue), Alignment(Alignment) {}
    1454
    1455 virtual ~MemSDNode() {}
    1456
    1457 /// Returns alignment and volatility of the memory access
    1458 unsigned getAlignment() const { return Alignment; }
    1459 virtual bool isVolatile() const = 0;
    1460
    1461 /// Returns the SrcValue and offset that describes the location of the access
    1462 const Value *getSrcValue() const { return SrcValue; }
    1463 virtual int getSrcValueOffset() const = 0;
    1464
    1465 /// getMemOperand - Return a MachineMemOperand object describing the memory
    1466 /// reference performed by operation.
    1467 virtual MachineMemOperand getMemOperand() const = 0;
    1468
    1469 // Methods to support isa and dyn_cast
    1470 static bool classof(const MemSDNode *) { return true; }
    1471 static bool classof(const SDNode *N) {
    1472 return N->getOpcode() == ISD::LOAD ||
    1473 N->getOpcode() == ISD::STORE ||
    1474 N->getOpcode() == ISD::ATOMIC_CMP_SWAP ||
    1475 N->getOpcode() == ISD::ATOMIC_LOAD_ADD ||
    1476 N->getOpcode() == ISD::ATOMIC_SWAP ||
    1477 N->getOpcode() == ISD::ATOMIC_LOAD_SUB ||
    1478 N->getOpcode() == ISD::ATOMIC_LOAD_AND ||
    1479 N->getOpcode() == ISD::ATOMIC_LOAD_OR ||
    1480 N->getOpcode() == ISD::ATOMIC_LOAD_XOR ||
    1481 N->getOpcode() == ISD::ATOMIC_LOAD_NAND ||
    1482 N->getOpcode() == ISD::ATOMIC_LOAD_MIN ||
    1483 N->getOpcode() == ISD::ATOMIC_LOAD_MAX ||
    1484 N->getOpcode() == ISD::ATOMIC_LOAD_UMIN ||
    1485 N->getOpcode() == ISD::ATOMIC_LOAD_UMAX;
    1486 }
    1487 };
    1488
    1489 /// Atomic operations node
    1490 class AtomicSDNode : public MemSDNode {
    14401491 virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
    14411492 SDUse Ops[4];
    14421493 MVT OrigVT;
    1443 public:
    1494
    1495 public:
    1496 // Opc: opcode for atomic
    1497 // VTL: value type list
    1498 // Chain: memory chain for operaand
    1499 // Ptr: address to update as a SDOperand
    1500 // Cmp: compare value
    1501 // Swp: swap value
    1502 // VT: resulting value type
    1503 // SrcVal: address to update as a Value (used for MemOperand)
    1504 // Align: alignment of memory
    14441505 AtomicSDNode(unsigned Opc, SDVTList VTL, SDOperand Chain, SDOperand Ptr,
    1445 SDOperand Cmp, SDOperand Swp, MVT VT)
    1446 : SDNode(Opc, VTL) {
    1506 SDOperand Cmp, SDOperand Swp, MVT VT, const Value* SrcVal,
    1507 unsigned Align=0)
    1508 : MemSDNode(Opc, VTL, SrcVal, Align), OrigVT(VT) {
    14471509 Ops[0] = Chain;
    14481510 Ops[1] = Ptr;
    14491511 Ops[2] = Swp;
    14501512 Ops[3] = Cmp;
    14511513 InitOperands(Ops, 4);
    1452 OrigVT=VT;
    14531514 }
    14541515 AtomicSDNode(unsigned Opc, SDVTList VTL, SDOperand Chain, SDOperand Ptr,
    1455 SDOperand Val, MVT VT)
    1456 : SDNode(Opc, VTL) {
    1516 SDOperand Val, MVT VT, const Value* SrcVal, unsigned Align=0)
    1517 : MemSDNode(Opc, VTL, SrcVal, Align), OrigVT(VT) {
    14571518 Ops[0] = Chain;
    14581519 Ops[1] = Ptr;
    14591520 Ops[2] = Val;
    14601521 InitOperands(Ops, 3);
    1461 OrigVT=VT;
    1462 }
    1522 }
    1523
    14631524 MVT getVT() const { return OrigVT; }
    1464 bool isCompareAndSwap() const { return getOpcode() == ISD::ATOMIC_LCS; }
    1525 const SDOperand &getChain() const { return getOperand(0); }
    1526 const SDOperand &getBasePtr() const { return getOperand(1); }
    1527 const SDOperand &getVal() const { return getOperand(2); }
    1528
    1529 bool isCompareAndSwap() const { return getOpcode() == ISD::ATOMIC_CMP_SWAP; }
    1530
    1531 // Implementation for MemSDNode
    1532 virtual int getSrcValueOffset() const { return 0; }
    1533 virtual bool isVolatile() const { return true; }
    1534
    1535 /// getMemOperand - Return a MachineMemOperand object describing the memory
    1536 /// reference performed by this atomic load/store.
    1537 virtual MachineMemOperand getMemOperand() const;
    1538
    1539 // Methods to support isa and dyn_cast
    1540 static bool classof(const AtomicSDNode *) { return true; }
    1541 static bool classof(const SDNode *N) {
    1542 return N->getOpcode() == ISD::ATOMIC_CMP_SWAP ||
    1543 N->getOpcode() == ISD::ATOMIC_LOAD_ADD ||
    1544 N->getOpcode() == ISD::ATOMIC_SWAP ||
    1545 N->getOpcode() == ISD::ATOMIC_LOAD_SUB ||
    1546 N->getOpcode() == ISD::ATOMIC_LOAD_AND ||
    1547 N->getOpcode() == ISD::ATOMIC_LOAD_OR ||
    1548 N->getOpcode() == ISD::ATOMIC_LOAD_XOR ||
    1549 N->getOpcode() == ISD::ATOMIC_LOAD_NAND ||
    1550 N->getOpcode() == ISD::ATOMIC_LOAD_MIN ||
    1551 N->getOpcode() == ISD::ATOMIC_LOAD_MAX ||
    1552 N->getOpcode() == ISD::ATOMIC_LOAD_UMIN ||
    1553 N->getOpcode() == ISD::ATOMIC_LOAD_UMAX;
    1554 }
    14651555 };
    14661556
    14671557 class StringSDNode : public SDNode {
    19332023
    19342024 /// LSBaseSDNode - Base class for LoadSDNode and StoreSDNode
    19352025 ///
    1936 class LSBaseSDNode : public SDNode {
    2026 class LSBaseSDNode : public MemSDNode {
    19372027 private:
    19382028 // AddrMode - unindexed, pre-indexed, post-indexed.
    19392029 ISD::MemIndexedMode AddrMode;
    19412031 // MemoryVT - VT of in-memory value.
    19422032 MVT MemoryVT;
    19432033
    1944 //! SrcValue - Memory location for alias analysis.
    1945 const Value *SrcValue;
    1946
    1947 //! SVOffset - Memory location offset.
    2034 //! SVOffset - Memory location offset. Note that base is defined in MemSDNode
    19482035 int SVOffset;
    19492036
    1950 //! Alignment - Alignment of memory location in bytes.
    1951 unsigned Alignment;
    1952
    1953 //! IsVolatile - True if the store is volatile.
    2037 //! IsVolatile - True if the load/store is volatile.
    19542038 bool IsVolatile;
    2039
    19552040 protected:
    19562041 //! Operand array for load and store
    19572042 /*!
    19642049 LSBaseSDNode(ISD::NodeType NodeTy, SDOperand *Operands, unsigned numOperands,
    19652050 SDVTList VTs, ISD::MemIndexedMode AM, MVT VT,
    19662051 const Value *SV, int SVO, unsigned Align, bool Vol)
    1967 : SDNode(NodeTy, VTs),
    1968 AddrMode(AM), MemoryVT(VT),
    1969 SrcValue(SV), SVOffset(SVO), Alignment(Align), IsVolatile(Vol) {
    2052 : MemSDNode(NodeTy, VTs, SV, Align), AddrMode(AM), MemoryVT(VT),
    2053 SVOffset(SVO), IsVolatile(Vol) {
    19702054 for (unsigned i = 0; i != numOperands; ++i)
    19712055 Ops[i] = Operands[i];
    19722056 InitOperands(Ops, numOperands);
    19832067 return getOperand(getOpcode() == ISD::LOAD ? 2 : 3);
    19842068 }
    19852069
    1986 const Value *getSrcValue() const { return SrcValue; }
    1987 int getSrcValueOffset() const { return SVOffset; }
    1988 unsigned getAlignment() const { return Alignment; }
    19892070 MVT getMemoryVT() const { return MemoryVT; }
    1990 bool isVolatile() const { return IsVolatile; }
    1991
    2071
    19922072 ISD::MemIndexedMode getAddressingMode() const { return AddrMode; }
    19932073
    19942074 /// isIndexed - Return true if this is a pre/post inc/dec load/store.
    19972077 /// isUnindexed - Return true if this is NOT a pre/post inc/dec load/store.
    19982078 bool isUnindexed() const { return AddrMode == ISD::UNINDEXED; }
    19992079
    2080 // Implementation for MemSDNode
    2081 virtual int getSrcValueOffset() const { return SVOffset; }
    2082 virtual bool isVolatile() const { return IsVolatile; }
    2083
    20002084 /// getMemOperand - Return a MachineMemOperand object describing the memory
    20012085 /// reference performed by this load or store.
    2002 MachineMemOperand getMemOperand() const;
    2086 virtual MachineMemOperand getMemOperand() const;
    20032087
    20042088 static bool classof(const LSBaseSDNode *) { return true; }
    20052089 static bool classof(const SDNode *N) {
    269269 def int_memory_barrier : Intrinsic<[llvm_void_ty, llvm_i1_ty, llvm_i1_ty,
    270270 llvm_i1_ty, llvm_i1_ty, llvm_i1_ty], []>;
    271271
    272 def int_atomic_lcs : Intrinsic<[llvm_anyint_ty,
    272 def int_atomic_cmp_swap : Intrinsic<[llvm_anyint_ty,
    273273 LLVMPointerType>,
    274274 LLVMMatchType<0>, LLVMMatchType<0>],
    275275 [IntrWriteArgMem]>,
    276 GCCBuiltin<"__sync_val_compare_and_swap">;
    277 def int_atomic_las : Intrinsic<[llvm_anyint_ty,
    278 LLVMPointerType>,
    279 LLVMMatchType<0>],
    280 [IntrWriteArgMem]>,
    281 GCCBuiltin<"__sync_fetch_and_add">;
    282 def int_atomic_swap : Intrinsic<[llvm_anyint_ty,
    276 GCCBuiltin<"__sync_val_compare_and_swap">;
    277 def int_atomic_load_add : Intrinsic<[llvm_anyint_ty,
    278 LLVMPointerType>,
    279 LLVMMatchType<0>],
    280 [IntrWriteArgMem]>,
    281 GCCBuiltin<"__sync_fetch_and_add">;
    282 def int_atomic_swap : Intrinsic<[llvm_anyint_ty,
    283283 LLVMPointerType>,
    284284 LLVMMatchType<0>],
    285285 [IntrWriteArgMem]>,
    286 GCCBuiltin<"__sync_lock_test_and_set">;
    287 def int_atomic_lss : Intrinsic<[llvm_anyint_ty,
    288 LLVMPointerType>,
    289 LLVMMatchType<0>],
    290 [IntrWriteArgMem]>,
    291 GCCBuiltin<"__sync_fetch_and_sub">;
    286 GCCBuiltin<"__sync_lock_test_and_set">;
    287 def int_atomic_load_sub : Intrinsic<[llvm_anyint_ty,
    288 LLVMPointerType>,
    289 LLVMMatchType<0>],
    290 [IntrWriteArgMem]>,
    291 GCCBuiltin<"__sync_fetch_and_sub">;
    292292 def int_atomic_load_and : Intrinsic<[llvm_anyint_ty,
    293293 LLVMPointerType>,
    294294 LLVMMatchType<0>],
    299299 LLVMMatchType<0>],
    300300 [IntrWriteArgMem]>,
    301301 GCCBuiltin<"__sync_fetch_and_or">;
    302 def int_atomic_load_xor : Intrinsic<[llvm_anyint_ty,
    302 def int_atomic_load_xor : Intrinsic<[llvm_anyint_ty,
    303303 LLVMPointerType>,
    304304 LLVMMatchType<0>],
    305305 [IntrWriteArgMem]>,
    387387
    388388
    389389 /* Copy the first part of user declarations. */
    390 #line 14 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    390 #line 14 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    391391
    392392 #include "ParserInternals.h"
    393393 #include "llvm/CallingConv.h"
    13471347
    13481348 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    13491349 typedef union YYSTYPE
    1350 #line 953 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    1350 #line 953 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    13511351 {
    13521352 llvm::Module *ModuleVal;
    13531353 llvm::Function *FunctionVal;
    35973597 switch (yyn)
    35983598 {
    35993599 case 29:
    3600 #line 1124 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3600 #line 1124 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36013601 { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
    36023602 break;
    36033603
    36043604 case 30:
    3605 #line 1124 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3605 #line 1124 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36063606 { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
    36073607 break;
    36083608
    36093609 case 31:
    3610 #line 1125 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3610 #line 1125 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36113611 { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
    36123612 break;
    36133613
    36143614 case 32:
    3615 #line 1125 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3615 #line 1125 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36163616 { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
    36173617 break;
    36183618
    36193619 case 33:
    3620 #line 1126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3620 #line 1126 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36213621 { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
    36223622 break;
    36233623
    36243624 case 34:
    3625 #line 1126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3625 #line 1126 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36263626 { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
    36273627 break;
    36283628
    36293629 case 35:
    3630 #line 1127 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3630 #line 1127 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36313631 { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
    36323632 break;
    36333633
    36343634 case 36:
    3635 #line 1127 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3635 #line 1127 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36363636 { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
    36373637 break;
    36383638
    36393639 case 37:
    3640 #line 1128 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3640 #line 1128 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36413641 { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
    36423642 break;
    36433643
    36443644 case 38:
    3645 #line 1128 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3645 #line 1128 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36463646 { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
    36473647 break;
    36483648
    36493649 case 39:
    3650 #line 1132 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3650 #line 1132 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36513651 { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
    36523652 break;
    36533653
    36543654 case 40:
    3655 #line 1132 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3655 #line 1132 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36563656 { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
    36573657 break;
    36583658
    36593659 case 41:
    3660 #line 1133 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3660 #line 1133 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36613661 { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
    36623662 break;
    36633663
    36643664 case 42:
    3665 #line 1133 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3665 #line 1133 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36663666 { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
    36673667 break;
    36683668
    36693669 case 43:
    3670 #line 1134 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3670 #line 1134 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36713671 { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
    36723672 break;
    36733673
    36743674 case 44:
    3675 #line 1134 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3675 #line 1134 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36763676 { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
    36773677 break;
    36783678
    36793679 case 45:
    3680 #line 1135 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3680 #line 1135 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36813681 { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
    36823682 break;
    36833683
    36843684 case 46:
    3685 #line 1135 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3685 #line 1135 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36863686 { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
    36873687 break;
    36883688
    36893689 case 47:
    3690 #line 1136 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3690 #line 1136 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36913691 { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
    36923692 break;
    36933693
    36943694 case 48:
    3695 #line 1136 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3695 #line 1136 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    36963696 { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
    36973697 break;
    36983698
    36993699 case 49:
    3700 #line 1137 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3700 #line 1137 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37013701 { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
    37023702 break;
    37033703
    37043704 case 50:
    3705 #line 1137 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3705 #line 1137 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37063706 { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
    37073707 break;
    37083708
    37093709 case 51:
    3710 #line 1138 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3710 #line 1138 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37113711 { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
    37123712 break;
    37133713
    37143714 case 52:
    3715 #line 1138 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3715 #line 1138 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37163716 { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
    37173717 break;
    37183718
    37193719 case 53:
    3720 #line 1139 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3720 #line 1139 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37213721 { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
    37223722 break;
    37233723
    37243724 case 54:
    3725 #line 1140 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3725 #line 1140 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37263726 { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
    37273727 break;
    37283728
    37293729 case 65:
    3730 #line 1149 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3730 #line 1149 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37313731 { (yyval.StrVal) = 0; ;}
    37323732 break;
    37333733
    37343734 case 66:
    3735 #line 1151 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3735 #line 1151 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37363736 { (yyval.UIntVal)=(yyvsp[(3) - (4)].UInt64Val); ;}
    37373737 break;
    37383738
    37393739 case 67:
    3740 #line 1152 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3740 #line 1152 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37413741 { (yyval.UIntVal)=0; ;}
    37423742 break;
    37433743
    37443744 case 68:
    3745 #line 1156 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3745 #line 1156 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37463746 {
    37473747 (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
    37483748 CHECK_FOR_ERROR
    37503750 break;
    37513751
    37523752 case 69:
    3753 #line 1160 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3753 #line 1160 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37543754 {
    37553755 (yyval.StrVal) = 0;
    37563756 CHECK_FOR_ERROR
    37583758 break;
    37593759
    37603760 case 73:
    3761 #line 1168 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3761 #line 1168 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37623762 {
    37633763 (yyval.StrVal) = 0;
    37643764 CHECK_FOR_ERROR
    37663766 break;
    37673767
    37683768 case 74:
    3769 #line 1173 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3769 #line 1173 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37703770 {
    37713771 (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
    37723772 CHECK_FOR_ERROR
    37743774 break;
    37753775
    37763776 case 75:
    3777 #line 1179 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3777 #line 1179 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37783778 { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
    37793779 break;
    37803780
    37813781 case 76:
    3782 #line 1180 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3782 #line 1180 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37833783 { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
    37843784 break;
    37853785
    37863786 case 77:
    3787 #line 1181 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3787 #line 1181 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37883788 { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
    37893789 break;
    37903790
    37913791 case 78:
    3792 #line 1182 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3792 #line 1182 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37933793 { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
    37943794 break;
    37953795
    37963796 case 79:
    3797 #line 1183 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3797 #line 1183 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    37983798 { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
    37993799 break;
    38003800
    38013801 case 80:
    3802 #line 1184 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3802 #line 1184 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38033803 { (yyval.Linkage) = GlobalValue::CommonLinkage; ;}
    38043804 break;
    38053805
    38063806 case 81:
    3807 #line 1188 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3807 #line 1188 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38083808 { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
    38093809 break;
    38103810
    38113811 case 82:
    3812 #line 1189 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3812 #line 1189 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38133813 { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
    38143814 break;
    38153815
    38163816 case 83:
    3817 #line 1190 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3817 #line 1190 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38183818 { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
    38193819 break;
    38203820
    38213821 case 84:
    3822 #line 1194 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3822 #line 1194 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38233823 { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;}
    38243824 break;
    38253825
    38263826 case 85:
    3827 #line 1195 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3827 #line 1195 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38283828 { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;}
    38293829 break;
    38303830
    38313831 case 86:
    3832 #line 1196 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3832 #line 1196 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38333833 { (yyval.Visibility) = GlobalValue::HiddenVisibility; ;}
    38343834 break;
    38353835
    38363836 case 87:
    3837 #line 1197 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3837 #line 1197 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38383838 { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;}
    38393839 break;
    38403840
    38413841 case 88:
    3842 #line 1201 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3842 #line 1201 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38433843 { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
    38443844 break;
    38453845
    38463846 case 89:
    3847 #line 1202 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3847 #line 1202 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38483848 { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
    38493849 break;
    38503850
    38513851 case 90:
    3852 #line 1203 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3852 #line 1203 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38533853 { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
    38543854 break;
    38553855
    38563856 case 91:
    3857 #line 1207 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3857 #line 1207 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38583858 { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
    38593859 break;
    38603860
    38613861 case 92:
    3862 #line 1208 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3862 #line 1208 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38633863 { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
    38643864 break;
    38653865
    38663866 case 93:
    3867 #line 1209 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3867 #line 1209 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38683868 { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
    38693869 break;
    38703870
    38713871 case 94:
    3872 #line 1210 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3872 #line 1210 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38733873 { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
    38743874 break;
    38753875
    38763876 case 95:
    3877 #line 1211 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3877 #line 1211 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38783878 { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
    38793879 break;
    38803880
    38813881 case 96:
    3882 #line 1215 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3882 #line 1215 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38833883 { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
    38843884 break;
    38853885
    38863886 case 97:
    3887 #line 1216 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3887 #line 1216 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38883888 { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
    38893889 break;
    38903890
    38913891 case 98:
    3892 #line 1217 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3892 #line 1217 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38933893 { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
    38943894 break;
    38953895
    38963896 case 99:
    3897 #line 1220 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3897 #line 1220 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    38983898 { (yyval.UIntVal) = CallingConv::C; ;}
    38993899 break;
    39003900
    39013901 case 100:
    3902 #line 1221 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3902 #line 1221 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39033903 { (yyval.UIntVal) = CallingConv::C; ;}
    39043904 break;
    39053905
    39063906 case 101:
    3907 #line 1222 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3907 #line 1222 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39083908 { (yyval.UIntVal) = CallingConv::Fast; ;}
    39093909 break;
    39103910
    39113911 case 102:
    3912 #line 1223 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3912 #line 1223 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39133913 { (yyval.UIntVal) = CallingConv::Cold; ;}
    39143914 break;
    39153915
    39163916 case 103:
    3917 #line 1224 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3917 #line 1224 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39183918 { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
    39193919 break;
    39203920
    39213921 case 104:
    3922 #line 1225 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3922 #line 1225 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39233923 { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
    39243924 break;
    39253925
    39263926 case 105:
    3927 #line 1226 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3927 #line 1226 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39283928 {
    39293929 if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
    39303930 GEN_ERROR("Calling conv too large");
    39343934 break;
    39353935
    39363936 case 106:
    3937 #line 1233 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3937 #line 1233 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39383938 { (yyval.ParamAttrs) = ParamAttr::ZExt; ;}
    39393939 break;
    39403940
    39413941 case 107:
    3942 #line 1234 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3942 #line 1234 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39433943 { (yyval.ParamAttrs) = ParamAttr::ZExt; ;}
    39443944 break;
    39453945
    39463946 case 108:
    3947 #line 1235 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3947 #line 1235 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39483948 { (yyval.ParamAttrs) = ParamAttr::SExt; ;}
    39493949 break;
    39503950
    39513951 case 109:
    3952 #line 1236 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3952 #line 1236 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39533953 { (yyval.ParamAttrs) = ParamAttr::SExt; ;}
    39543954 break;
    39553955
    39563956 case 110:
    3957 #line 1237 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3957 #line 1237 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39583958 { (yyval.ParamAttrs) = ParamAttr::InReg; ;}
    39593959 break;
    39603960
    39613961 case 111:
    3962 #line 1238 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3962 #line 1238 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39633963 { (yyval.ParamAttrs) = ParamAttr::StructRet; ;}
    39643964 break;
    39653965
    39663966 case 112:
    3967 #line 1239 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3967 #line 1239 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39683968 { (yyval.ParamAttrs) = ParamAttr::NoAlias; ;}
    39693969 break;
    39703970
    39713971 case 113:
    3972 #line 1240 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3972 #line 1240 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39733973 { (yyval.ParamAttrs) = ParamAttr::ByVal; ;}
    39743974 break;
    39753975
    39763976 case 114:
    3977 #line 1241 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3977 #line 1241 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39783978 { (yyval.ParamAttrs) = ParamAttr::Nest; ;}
    39793979 break;
    39803980
    39813981 case 115:
    3982 #line 1242 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3982 #line 1242 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39833983 { (yyval.ParamAttrs) =
    39843984 ParamAttr::constructAlignmentFromInt((yyvsp[(2) - (2)].UInt64Val)); ;}
    39853985 break;
    39863986
    39873987 case 116:
    3988 #line 1246 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3988 #line 1246 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39893989 { (yyval.ParamAttrs) = ParamAttr::None; ;}
    39903990 break;
    39913991
    39923992 case 117:
    3993 #line 1247 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    3993 #line 1247 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    39943994 {
    39953995 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
    39963996 ;}
    39973997 break;
    39983998
    39993999 case 118:
    4000 #line 1252 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4000 #line 1252 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40014001 { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;}
    40024002 break;
    40034003
    40044004 case 119:
    4005 #line 1253 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4005 #line 1253 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40064006 { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;}
    40074007 break;
    40084008
    40094009 case 120:
    4010 #line 1254 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4010 #line 1254 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40114011 { (yyval.ParamAttrs) = ParamAttr::ZExt; ;}
    40124012 break;
    40134013
    40144014 case 121:
    4015 #line 1255 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4015 #line 1255 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40164016 { (yyval.ParamAttrs) = ParamAttr::SExt; ;}
    40174017 break;
    40184018
    40194019 case 122:
    4020 #line 1256 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4020 #line 1256 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40214021 { (yyval.ParamAttrs) = ParamAttr::ReadNone; ;}
    40224022 break;
    40234023
    40244024 case 123:
    4025 #line 1257 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4025 #line 1257 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40264026 { (yyval.ParamAttrs) = ParamAttr::ReadOnly; ;}
    40274027 break;
    40284028
    40294029 case 124:
    4030 #line 1260 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4030 #line 1260 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40314031 { (yyval.ParamAttrs) = ParamAttr::None; ;}
    40324032 break;
    40334033
    40344034 case 125:
    4035 #line 1261 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4035 #line 1261 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40364036 {
    40374037 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
    40384038 ;}
    40394039 break;
    40404040
    40414041 case 126:
    4042 #line 1266 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4042 #line 1266 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40434043 { (yyval.StrVal) = 0; ;}
    40444044 break;
    40454045
    40464046 case 127:
    4047 #line 1267 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4047 #line 1267 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40484048 {
    40494049 (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
    40504050 ;}
    40514051 break;
    40524052
    40534053 case 128:
    4054 #line 1274 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4054 #line 1274 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40554055 { (yyval.UIntVal) = 0; ;}
    40564056 break;
    40574057
    40584058 case 129:
    4059 #line 1275 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4059 #line 1275 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40604060 {
    40614061 (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
    40624062 if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
    40664066 break;
    40674067
    40684068 case 130:
    4069 #line 1281 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4069 #line 1281 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40704070 { (yyval.UIntVal) = 0; ;}
    40714071 break;
    40724072
    40734073 case 131:
    4074 #line 1282 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4074 #line 1282 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40754075 {
    40764076 (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
    40774077 if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
    40814081 break;
    40824082
    40834083 case 132:
    4084 #line 1291 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4084 #line 1291 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40854085 {
    40864086 for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i)
    40874087 if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\')
    40924092 break;
    40934093
    40944094 case 133:
    4095 #line 1299 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4095 #line 1299 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    40964096 { (yyval.StrVal) = 0; ;}
    40974097 break;
    40984098
    40994099 case 134:
    4100 #line 1300 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4100 #line 1300 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41014101 { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
    41024102 break;
    41034103
    41044104 case 135:
    4105 #line 1305 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4105 #line 1305 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41064106 {;}
    41074107 break;
    41084108
    41094109 case 136:
    4110 #line 1306 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4110 #line 1306 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41114111 {;}
    41124112 break;
    41134113
    41144114 case 137:
    4115 #line 1307 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4115 #line 1307 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41164116 {
    41174117 CurGV->setSection(*(yyvsp[(1) - (1)].StrVal));
    41184118 delete (yyvsp[(1) - (1)].StrVal);
    41214121 break;
    41224122
    41234123 case 138:
    4124 #line 1312 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4124 #line 1312 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41254125 {
    41264126 if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
    41274127 GEN_ERROR("Alignment must be a power of two");
    41314131 break;
    41324132
    41334133 case 146:
    4134 #line 1328 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4134 #line 1328 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41354135 {
    41364136 (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
    41374137 CHECK_FOR_ERROR
    41394139 break;
    41404140
    41414141 case 147:
    4142 #line 1332 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4142 #line 1332 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41434143 {
    41444144 (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType));
    41454145 CHECK_FOR_ERROR
    41474147 break;
    41484148
    41494149 case 148:
    4150 #line 1336 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4150 #line 1336 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41514151 { // Pointer type?
    41524152 if (*(yyvsp[(1) - (3)].TypeVal) == Type::LabelTy)
    41534153 GEN_ERROR("Cannot form a pointer to a basic block");
    41584158 break;
    41594159
    41604160 case 149:
    4161 #line 1343 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4161 #line 1343 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41624162 { // Named types are also simple types...
    41634163 const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal));
    41644164 CHECK_FOR_ERROR
    41674167 break;
    41684168
    41694169 case 150:
    4170 #line 1348 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4170 #line 1348 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41714171 { // Type UpReference
    41724172 if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range");
    41734173 OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder
    41794179 break;
    41804180
    41814181 case 151:
    4182 #line 1356 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4182 #line 1356 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    41834183 {
    41844184 // Allow but ignore attributes on function types; this permits auto-upgrade.
    41854185 // FIXME: remove in LLVM 3.0.
    42124212 break;
    42134213
    42144214 case 152:
    4215 #line 1385 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4215 #line 1385 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    42164216 {
    42174217 // Allow but ignore attributes on function types; this permits auto-upgrade.
    42184218 // FIXME: remove in LLVM 3.0.
    42404240 break;
    42414241
    42424242 case 153:
    4243 #line 1410 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4243 #line 1410 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    42444244 { // Sized array type?
    42454245 (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (yyvsp[(2) - (5)].UInt64Val))));
    42464246 delete (yyvsp[(4) - (5)].TypeVal);
    42494249 break;
    42504250
    42514251 case 154:
    4252 #line 1415 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4252 #line 1415 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    42534253 { // Vector type?
    42544254 const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get();
    42554255 if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
    42634263 break;
    42644264
    42654265 case 155:
    4266 #line 1425 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4266 #line 1425 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    42674267 { // Structure type?
    42684268 std::vector Elements;
    42694269 for (std::list::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
    42774277 break;
    42784278
    42794279 case 156:
    4280 #line 1435 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4280 #line 1435 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    42814281 { // Empty structure type?
    42824282 (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector()));
    42834283 CHECK_FOR_ERROR
    42854285 break;
    42864286
    42874287 case 157:
    4288 #line 1439 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4288 #line 1439 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    42894289 {
    42904290 std::vector Elements;
    42914291 for (std::list::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
    42994299 break;
    43004300
    43014301 case 158:
    4302 #line 1449 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4302 #line 1449 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43034303 { // Empty structure type?
    43044304 (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector(), true));
    43054305 CHECK_FOR_ERROR
    43074307 break;
    43084308
    43094309 case 159:
    4310 #line 1456 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4310 #line 1456 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43114311 {
    43124312 // Allow but ignore attributes on function types; this permits auto-upgrade.
    43134313 // FIXME: remove in LLVM 3.0.
    43174317 break;
    43184318
    43194319 case 160:
    4320 #line 1465 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4320 #line 1465 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43214321 {
    43224322 if (!UpRefs.empty())
    43234323 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription());
    43284328 break;
    43294329
    43304330 case 161:
    4331 #line 1472 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4331 #line 1472 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43324332 {
    43334333 (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
    43344334 ;}
    43354335 break;
    43364336
    43374337 case 162:
    4338 #line 1477 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4338 #line 1477 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43394339 {
    43404340 (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
    43414341 (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs));
    43444344 break;
    43454345
    43464346 case 163:
    4347 #line 1482 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4347 #line 1482 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43484348 {
    43494349 ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs));
    43504350 CHECK_FOR_ERROR
    43524352 break;
    43534353
    43544354 case 165:
    4355 #line 1490 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4355 #line 1490 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43564356 {
    43574357 (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList);
    43584358 TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
    43634363 break;
    43644364
    43654365 case 166:
    4366 #line 1497 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4366 #line 1497 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43674367 {
    43684368 (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
    43694369 TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
    43744374 break;
    43754375
    43764376 case 167:
    4377 #line 1504 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4377 #line 1504 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43784378 {
    43794379 (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
    43804380 CHECK_FOR_ERROR
    43824382 break;
    43834383
    43844384 case 168:
    4385 #line 1512 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4385 #line 1512 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43864386 {
    43874387 (yyval.TypeList) = new std::list();
    43884388 (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal));
    43924392 break;
    43934393
    43944394 case 169:
    4395 #line 1518 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4395 #line 1518 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    43964396 {
    43974397 ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal));
    43984398 delete (yyvsp[(3) - (3)].TypeVal);
    44014401 break;
    44024402
    44034403 case 170:
    4404 #line 1530 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4404 #line 1530 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    44054405 { // Nonempty unsized arr
    44064406 if (!UpRefs.empty())
    44074407 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
    44134413 uint64_t NumElements = ATy->getNumElements();
    44144414
    44154415 // Verify that we have the correct size...
    4416 if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
    4416 if (NumElements != uint64_t(-1) && NumElements != (yyvsp[(3) - (4)].ConstVector)->size())
    44174417 GEN_ERROR("Type mismatch: constant sized array initialized with " +
    44184418 utostr((yyvsp[(3) - (4)].ConstVector)->size()) + " arguments, but has size of " +
    4419 itostr(NumElements) + "");
    4419 utostr(NumElements) + "");
    44204420
    44214421 // Verify all elements are correct type!
    44224422 for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) {
    44334433 break;
    44344434
    44354435 case 171:
    4436 #line 1558 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4436 #line 1558 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    44374437 {
    44384438 if (!UpRefs.empty())
    44394439 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
    44434443 (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'");
    44444444
    44454445 uint64_t NumElements = ATy->getNumElements();
    4446 if (NumElements != -1 && NumElements != 0)
    4446 if (NumElements != uint64_t(-1) && NumElements != 0)
    44474447 GEN_ERROR("Type mismatch: constant sized array initialized with 0"
    4448 " arguments, but has size of " + itostr(NumElements) +"");
    4448 " arguments, but has size of " + utostr(NumElements) +"");
    44494449 (yyval.ConstVal) = ConstantArray::get(ATy, std::vector());
    44504450 delete (yyvsp[(1) - (3)].TypeVal);
    44514451 CHECK_FOR_ERROR
    44534453 break;
    44544454
    44554455 case 172:
    4456 #line 1574 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4456 #line 1574 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    44574457 {
    44584458 if (!UpRefs.empty())
    44594459 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
    44644464
    44654465 uint64_t NumElements = ATy->getNumElements();
    44664466 const Type *ETy = ATy->getElementType();
    4467 if (NumElements != -1 && NumElements != int((yyvsp[(3) - (3)].StrVal)->length()))
    4467 if (NumElements != uint64_t(-1) && NumElements != (yyvsp[(3) - (3)].StrVal)->length())
    44684468 GEN_ERROR("Can't build string constant of size " +
    4469 itostr((int)((yyvsp[(3) - (3)].StrVal)->length())) +
    4470 " when array has size " + itostr(NumElements) + "");
    4469 utostr((yyvsp[(3) - (3)].StrVal)->length()) +
    4470 " when array has size " + utostr(NumElements) + "");
    44714471 std::vector Vals;
    44724472 if (ETy == Type::Int8Ty) {
    4473 for (unsigned i = 0; i < (yyvsp[(3) - (3)].StrVal)->length(); ++i)
    4473 for (uint64_t i = 0; i < (yyvsp[(3) - (3)].StrVal)->length(); ++i)
    44744474 Vals.push_back(ConstantInt::get(ETy, (*(yyvsp[(3) - (3)].StrVal))[i]));
    44754475 } else {
    44764476 delete (yyvsp[(3) - (3)].StrVal);
    44844484 break;
    44854485
    44864486 case 173:
    4487 #line 1601 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4487 #line 1601 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    44884488 { // Nonempty unsized arr
    44894489 if (!UpRefs.empty())
    44904490 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
    44964496 unsigned NumElements = PTy->getNumElements();
    44974497
    44984498 // Verify that we have the correct size...
    4499 if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
    4499 if (NumElements != unsigned(-1) && NumElements != (unsigned)(yyvsp[(3) - (4)].ConstVector)->size())
    45004500 GEN_ERROR("Type mismatch: constant sized packed initialized with " +
    45014501 utostr((yyvsp[(3) - (4)].ConstVector)->size()) + " arguments, but has size of " +
    4502 itostr(NumElements) + "");
    4502 utostr(NumElements) + "");
    45034503
    45044504 // Verify all elements are correct type!
    45054505 for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) {
    45164516 break;
    45174517
    45184518 case 174:
    4519 #line 1629 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4519 #line 1629 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    45204520 {
    45214521 const StructType *STy = dyn_cast((yyvsp[(1) - (4)].TypeVal)->get());
    45224522 if (STy == 0)
    45464546 break;
    45474547
    45484548 case 175:
    4549 #line 1655 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4549 #line 1655 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    45504550 {
    45514551 if (!UpRefs.empty())
    45524552 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
    45704570 break;
    45714571
    45724572 case 176:
    4573 #line 1675 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4573 #line 1675 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    45744574 {
    45754575 const StructType *STy = dyn_cast((yyvsp[(1) - (6)].TypeVal)->get());
    45764576 if (STy == 0)
    46004600 break;
    46014601
    46024602 case 177:
    4603 #line 1701 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4603 #line 1701 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    46044604 {
    46054605 if (!UpRefs.empty())
    46064606 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription());
    46244624 break;
    46254625
    46264626 case 178:
    4627 #line 1721 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4627 #line 1721 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    46284628 {
    46294629 if (!UpRefs.empty())
    46304630 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
    46404640 break;
    46414641
    46424642 case 179:
    4643 #line 1733 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4643 #line 1733 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    46444644 {
    46454645 if (!UpRefs.empty())
    46464646 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
    46514651 break;
    46524652
    46534653 case 180:
    4654 #line 1740 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4654 #line 1740 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    46554655 {
    46564656 if (!UpRefs.empty())
    46574657 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
    47214721 break;
    47224722
    47234723 case 181:
    4724 #line 1806 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4724 #line 1806 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    47254725 {
    47264726 if (!UpRefs.empty())
    47274727 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
    47354735 break;
    47364736
    47374737 case 182:
    4738 #line 1816 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4738 #line 1816 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    47394739 {
    47404740 if (!UpRefs.empty())
    47414741 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
    47494749 break;
    47504750
    47514751 case 183:
    4752 #line 1826 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4752 #line 1826 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    47534753 { // integral constants
    47544754 if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val)))
    47554755 GEN_ERROR("Constant value doesn't fit in type");
    47594759 break;
    47604760
    47614761 case 184:
    4762 #line 1832 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4762 #line 1832 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    47634763 { // arbitrary precision integer constants
    47644764 uint32_t BitWidth = cast((yyvsp[(1) - (2)].PrimType))->getBitWidth();
    47654765 if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
    47734773 break;
    47744774
    47754775 case 185:
    4776 #line 1842 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4776 #line 1842 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    47774777 { // integral constants
    47784778 if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val)))
    47794779 GEN_ERROR("Constant value doesn't fit in type");
    47834783 break;
    47844784
    47854785 case 186:
    4786 #line 1848 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4786 #line 1848 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    47874787 { // arbitrary precision integer constants
    47884788 uint32_t BitWidth = cast((yyvsp[(1) - (2)].PrimType))->getBitWidth();
    47894789 if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
    47974797 break;
    47984798
    47994799 case 187:
    4800 #line 1858 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4800 #line 1858 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48014801 { // Boolean constants
    48024802 if (cast((yyvsp[(1) - (2)].PrimType))->getBitWidth() != 1)
    48034803 GEN_ERROR("Constant true must have type i1");
    48074807 break;
    48084808
    48094809 case 188:
    4810 #line 1864 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4810 #line 1864 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48114811 { // Boolean constants
    48124812 if (cast((yyvsp[(1) - (2)].PrimType))->getBitWidth() != 1)
    48134813 GEN_ERROR("Constant false must have type i1");
    48174817 break;
    48184818
    48194819 case 189:
    4820 #line 1870 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4820 #line 1870 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48214821 { // Floating point constants
    48224822 if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal)))
    48234823 GEN_ERROR("Floating point constant invalid for type");
    48324832 break;
    48334833
    48344834 case 190:
    4835 #line 1883 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4835 #line 1883 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48364836 {
    48374837 if (!UpRefs.empty())
    48384838 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
    48484848 break;
    48494849
    48504850 case 191:
    4851 #line 1895 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4851 #line 1895 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48524852 {
    48534853 if (!isa((yyvsp[(3) - (5)].ConstVal)->getType()))
    48544854 GEN_ERROR("GetElementPtr requires a pointer operand");
    48734873 break;
    48744874
    48754875 case 192:
    4876 #line 1916 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4876 #line 1916 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48774877 {
    48784878 if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty)
    48794879 GEN_ERROR("Select condition must be of boolean type");
    48854885 break;
    48864886
    48874887 case 193:
    4888 #line 1924 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4888 #line 1924 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48894889 {
    48904890 if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
    48914891 GEN_ERROR("Binary operator types must match");
    48954895 break;
    48964896
    48974897 case 194:
    4898 #line 1930 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4898 #line 1930 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    48994899 {
    49004900 if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
    49014901 GEN_ERROR("Logical operator types must match");
    49104910 break;
    49114911
    49124912 case 195:
    4913 #line 1941 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4913 #line 1941 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49144914 {
    49154915 if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
    49164916 GEN_ERROR("icmp operand types must match");
    49194919 break;
    49204920
    49214921 case 196:
    4922 #line 1946 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4922 #line 1946 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49234923 {
    49244924 if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
    49254925 GEN_ERROR("fcmp operand types must match");
    49284928 break;
    49294929
    49304930 case 197:
    4931 #line 1951 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4931 #line 1951 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49324932 {
    49334933 if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
    49344934 GEN_ERROR("vicmp operand types must match");
    49374937 break;
    49384938
    49394939 case 198:
    4940 #line 1956 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4940 #line 1956 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49414941 {
    49424942 if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
    49434943 GEN_ERROR("vfcmp operand types must match");
    49464946 break;
    49474947
    49484948 case 199:
    4949 #line 1961 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4949 #line 1961 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49504950 {
    49514951 if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)))
    49524952 GEN_ERROR("Invalid extractelement operands");
    49564956 break;
    49574957
    49584958 case 200:
    4959 #line 1967 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4959 #line 1967 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49604960 {
    49614961 if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
    49624962 GEN_ERROR("Invalid insertelement operands");
    49664966 break;
    49674967
    49684968 case 201:
    4969 #line 1973 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4969 #line 1973 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49704970 {
    49714971 if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
    49724972 GEN_ERROR("Invalid shufflevector operands");
    49764976 break;
    49774977
    49784978 case 202:
    4979 #line 1979 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4979 #line 1979 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49804980 {
    49814981 if (!isa((yyvsp[(3) - (5)].ConstVal)->getType()) && !isa((yyvsp[(3) - (5)].ConstVal)->getType()))
    49824982 GEN_ERROR("ExtractValue requires an aggregate operand");
    49884988 break;
    49894989
    49904990 case 203:
    4991 #line 1987 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    4991 #line 1987 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    49924992 {
    49934993 if (!isa((yyvsp[(3) - (7)].ConstVal)->getType()) && !isa((yyvsp[(3) - (7)].ConstVal)->getType()))
    49944994 GEN_ERROR("InsertValue requires an aggregate operand");
    50005000 break;
    50015001
    50025002 case 204:
    5003 #line 1998 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5003 #line 1998 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50045004 {
    50055005 ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
    50065006 CHECK_FOR_ERROR
    50085008 break;
    50095009
    50105010 case 205:
    5011 #line 2002 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5011 #line 2002 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50125012 {
    50135013 (yyval.ConstVector) = new std::vector();
    50145014 (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal));
    50175017 break;
    50185018
    50195019 case 206:
    5020 #line 2010 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5020 #line 2010 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50215021 { (yyval.BoolVal) = false; ;}
    50225022 break;
    50235023
    50245024 case 207:
    5025 #line 2010 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5025 #line 2010 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50265026 { (yyval.BoolVal) = true; ;}
    50275027 break;
    50285028
    50295029 case 208:
    5030 #line 2013 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5030 #line 2013 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50315031 { (yyval.BoolVal) = true; ;}
    50325032 break;
    50335033
    50345034 case 209:
    5035 #line 2013 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5035 #line 2013 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50365036 { (yyval.BoolVal) = false; ;}
    50375037 break;
    50385038
    50395039 case 210:
    5040 #line 2016 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5040 #line 2016 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50415041 {
    50425042 const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get();
    50435043 Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal));
    50535053 break;
    50545054
    50555055 case 211:
    5056 #line 2028 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5056 #line 2028 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50575057 {
    50585058 Constant *Val = (yyvsp[(3) - (6)].ConstVal);
    50595059 const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get();
    50695069 break;
    50705070
    50715071 case 212:
    5072 #line 2049 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5072 #line 2049 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50735073 {
    50745074 (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
    50755075 CurModule.ModuleDone();
    50785078 break;
    50795079
    50805080 case 213:
    5081 #line 2054 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5081 #line 2054 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50825082 {
    50835083 (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
    50845084 CurModule.ModuleDone();
    50875087 break;
    50885088
    50895089 case 216:
    5090 #line 2067 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5090 #line 2067 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50915091 { CurFun.isDeclare = false; ;}
    50925092 break;
    50935093
    50945094 case 217:
    5095 #line 2067 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5095 #line 2067 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    50965096 {
    50975097 CurFun.FunctionDone();
    50985098 CHECK_FOR_ERROR
    51005100 break;
    51015101
    51025102 case 218:
    5103 #line 2071 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5103 #line 2071 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51045104 { CurFun.isDeclare = true; ;}
    51055105 break;
    51065106
    51075107 case 219:
    5108 #line 2071 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5108 #line 2071 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51095109 {
    51105110 CHECK_FOR_ERROR
    51115111 ;}
    51125112 break;
    51135113
    51145114 case 220:
    5115 #line 2074 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5115 #line 2074 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51165116 {
    51175117 CHECK_FOR_ERROR
    51185118 ;}
    51195119 break;
    51205120
    51215121 case 221:
    5122 #line 2077 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5122 #line 2077 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51235123 {
    51245124 if (!UpRefs.empty())
    51255125 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription());
    51475147 break;
    51485148
    51495149 case 222:
    5150 #line 2101 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5150 #line 2101 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51515151 {
    51525152 ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType));
    51535153
    51625162 break;
    51635163
    51645164 case 223:
    5165 #line 2113 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5165 #line 2113 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51665166 {
    51675167 /* "Externally Visible" Linkage */
    51685168 if ((yyvsp[(5) - (6)].ConstVal) == 0)
    51745174 break;
    51755175
    51765176 case 224:
    5177 #line 2120 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5177 #line 2120 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51785178 {
    51795179 CurGV = 0;
    51805180 ;}
    51815181 break;
    51825182
    51835183 case 225:
    5184 #line 2124 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5184 #line 2124 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51855185 {
    51865186 if ((yyvsp[(6) - (7)].ConstVal) == 0)
    51875187 GEN_ERROR("Global value initializer is not a constant");
    51915191 break;
    51925192
    51935193 case 226:
    5194 #line 2129 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5194 #line 2129 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    51955195 {
    51965196 CurGV = 0;
    51975197 ;}
    51985198 break;
    51995199
    52005200 case 227:
    5201 #line 2133 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5201 #line 2133 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52025202 {
    52035203 if (!UpRefs.empty())
    52045204 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (7)].TypeVal))->getDescription());
    52095209 break;
    52105210
    52115211 case 228:
    5212 #line 2139 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5212 #line 2139 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52135213 {
    52145214 CurGV = 0;
    52155215 CHECK_FOR_ERROR
    52175217 break;
    52185218
    52195219 case 229:
    5220 #line 2143 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5220 #line 2143 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52215221 {
    52225222 std::string Name;
    52235223 if ((yyvsp[(1) - (5)].StrVal)) {
    52615261 break;
    52625262
    52635263 case 230:
    5264 #line 2183 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5264 #line 2183 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52655265 {
    52665266 CHECK_FOR_ERROR
    52675267 ;}
    52685268 break;
    52695269
    52705270 case 231:
    5271 #line 2186 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5271 #line 2186 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52725272 {
    52735273 CHECK_FOR_ERROR
    52745274 ;}
    52755275 break;
    52765276
    52775277 case 232:
    5278 #line 2192 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5278 #line 2192 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52795279 {
    52805280 const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
    52815281 if (AsmSoFar.empty())
    52885288 break;
    52895289
    52905290 case 233:
    5291 #line 2202 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5291 #line 2202 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    52925292 {
    52935293 CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal));
    52945294 delete (yyvsp[(3) - (3)].StrVal);
    52965296 break;
    52975297
    52985298 case 234:
    5299 #line 2206 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5299 #line 2206 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53005300 {
    53015301 CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal));
    53025302 delete (yyvsp[(3) - (3)].StrVal);
    53045304 break;
    53055305
    53065306 case 236:
    5307 #line 2213 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5307 #line 2213 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53085308 {
    53095309 CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal));
    53105310 delete (yyvsp[(3) - (3)].StrVal);
    53135313 break;
    53145314
    53155315 case 237:
    5316 #line 2218 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5316 #line 2218 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53175317 {
    53185318 CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal));
    53195319 delete (yyvsp[(1) - (1)].StrVal);
    53225322 break;
    53235323
    53245324 case 238:
    5325 #line 2223 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5325 #line 2223 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53265326 {
    53275327 CHECK_FOR_ERROR
    53285328 ;}
    53295329 break;
    53305330
    53315331 case 239:
    5332 #line 2232 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5332 #line 2232 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53335333 {
    53345334 if (!UpRefs.empty())
    53355335 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
    53435343 break;
    53445344
    53455345 case 240:
    5346 #line 2242 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5346 #line 2242 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53475347 {
    53485348 if (!UpRefs.empty())
    53495349 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
    53575357 break;
    53585358
    53595359 case 241:
    5360 #line 2253 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5360 #line 2253 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53615361 {
    53625362 (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList);
    53635363 CHECK_FOR_ERROR
    53655365 break;
    53665366
    53675367 case 242:
    5368 #line 2257 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5368 #line 2257 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53695369 {
    53705370 (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
    53715371 struct ArgListEntry E;
    53785378 break;
    53795379
    53805380 case 243:
    5381 #line 2266 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5381 #line 2266 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53825382 {
    53835383 (yyval.ArgList) = new ArgListType;
    53845384 struct ArgListEntry E;
    53915391 break;
    53925392
    53935393 case 244:
    5394 #line 2275 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5394 #line 2275 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    53955395 {
    53965396 (yyval.ArgList) = 0;
    53975397 CHECK_FOR_ERROR
    53995399 break;
    54005400
    54015401 case 245:
    5402 #line 2281 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5402 #line 2281 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    54035403 {
    54045404 std::string FunctionName(*(yyvsp[(3) - (10)].StrVal));
    54055405 delete (yyvsp[(3) - (10)].StrVal); // Free strdup'd memory!
    55305530 break;
    55315531
    55325532 case 248:
    5533 #line 2411 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5533 #line 2411 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55345534 {
    55355535 (yyval.FunctionVal) = CurFun.CurrentFunction;
    55365536
    55425542 break;
    55435543
    55445544 case 251:
    5545 #line 2422 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5545 #line 2422 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55465546 {
    55475547 (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
    55485548 CHECK_FOR_ERROR
    55505550 break;
    55515551
    55525552 case 252:
    5553 #line 2427 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5553 #line 2427 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55545554 {
    55555555 CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage));
    55565556 CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility));
    55615561 break;
    55625562
    55635563 case 253:
    5564 #line 2439 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5564 #line 2439 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55655565 {
    55665566 (yyval.BoolVal) = false;
    55675567 CHECK_FOR_ERROR
    55695569 break;
    55705570
    55715571 case 254:
    5572 #line 2443 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5572 #line 2443 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55735573 {
    55745574 (yyval.BoolVal) = true;
    55755575 CHECK_FOR_ERROR
    55775577 break;
    55785578
    55795579 case 255:
    5580 #line 2448 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5580 #line 2448 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55815581 { // A reference to a direct constant
    55825582 (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
    55835583 CHECK_FOR_ERROR
    55855585 break;
    55865586
    55875587 case 256:
    5588 #line 2452 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5588 #line 2452 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55895589 {
    55905590 (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
    55915591 CHECK_FOR_ERROR
    55935593 break;
    55945594
    55955595 case 257:
    5596 #line 2456 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5596 #line 2456 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    55975597 { // Perhaps it's an FP constant?
    55985598 (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal));
    55995599 CHECK_FOR_ERROR
    56015601 break;
    56025602
    56035603 case 258:
    5604 #line 2460 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5604 #line 2460 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56055605 {
    56065606 (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
    56075607 CHECK_FOR_ERROR
    56095609 break;
    56105610
    56115611 case 259:
    5612 #line 2464 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5612 #line 2464 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56135613 {
    56145614 (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
    56155615 CHECK_FOR_ERROR
    56175617 break;
    56185618
    56195619 case 260:
    5620 #line 2468 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5620 #line 2468 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56215621 {
    56225622 (yyval.ValIDVal) = ValID::createNull();
    56235623 CHECK_FOR_ERROR
    56255625 break;
    56265626
    56275627 case 261:
    5628 #line 2472 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5628 #line 2472 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56295629 {
    56305630 (yyval.ValIDVal) = ValID::createUndef();
    56315631 CHECK_FOR_ERROR
    56335633 break;
    56345634
    56355635 case 262:
    5636 #line 2476 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5636 #line 2476 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56375637 { // A vector zero constant.
    56385638 (yyval.ValIDVal) = ValID::createZeroInit();
    56395639 CHECK_FOR_ERROR
    56415641 break;
    56425642
    56435643 case 263:
    5644 #line 2480 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5644 #line 2480 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56455645 { // Nonempty unsized packed vector
    56465646 const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
    56475647 unsigned NumElements = (yyvsp[(2) - (3)].ConstVector)->size();
    56675667 break;
    56685668
    56695669 case 264:
    5670 #line 2502 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5670 #line 2502 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56715671 { // Nonempty unsized arr
    56725672 const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
    56735673 uint64_t NumElements = (yyvsp[(2) - (3)].ConstVector)->size();
    56935693 break;
    56945694
    56955695 case 265:
    5696 #line 2524 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5696 #line 2524 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    56975697 {
    56985698 // Use undef instead of an array because it's inconvenient to determine
    56995699 // the element type at this point, there being no elements to examine.
    57035703 break;
    57045704
    57055705 case 266:
    5706 #line 2530 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5706 #line 2530 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57075707 {
    57085708 uint64_t NumElements = (yyvsp[(2) - (2)].StrVal)->length();
    57095709 const Type *ETy = Type::Int8Ty;
    57205720 break;
    57215721
    57225722 case 267:
    5723 #line 2543 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5723 #line 2543 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57245724 {
    57255725 std::vector Elements((yyvsp[(2) - (3)].ConstVector)->size());
    57265726 for (unsigned i = 0, e = (yyvsp[(2) - (3)].ConstVector)->size(); i != e; ++i)
    57365736 break;
    57375737
    57385738 case 268:
    5739 #line 2555 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5739 #line 2555 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57405740 {
    57415741 const StructType *STy = StructType::get(std::vector());
    57425742 (yyval.ValIDVal) = ValID::create(ConstantStruct::get(STy, std::vector()));
    57455745 break;
    57465746
    57475747 case 269:
    5748 #line 2560 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5748 #line 2560 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57495749 {
    57505750 std::vector Elements((yyvsp[(3) - (5)].ConstVector)->size());
    57515751 for (unsigned i = 0, e = (yyvsp[(3) - (5)].ConstVector)->size(); i != e; ++i)
    57615761 break;
    57625762
    57635763 case 270:
    5764 #line 2572 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5764 #line 2572 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57655765 {
    57665766 const StructType *STy = StructType::get(std::vector(),
    57675767 /*isPacked=*/true);
    57715771 break;
    57725772
    57735773 case 271:
    5774 #line 2578 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5774 #line 2578 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57755775 {
    57765776 (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
    57775777 CHECK_FOR_ERROR
    57795779 break;
    57805780
    57815781 case 272:
    5782 #line 2582 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5782 #line 2582 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57835783 {
    57845784 (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal));
    57855785 delete (yyvsp[(3) - (5)].StrVal);
    57895789 break;
    57905790
    57915791 case 273:
    5792 #line 2592 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5792 #line 2592 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    57935793 { // Is it an integer reference...?
    57945794 (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal));
    57955795 CHECK_FOR_ERROR
    57975797 break;
    57985798
    57995799 case 274:
    5800 #line 2596 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5800 #line 2596 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58015801 {
    58025802 (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal));
    58035803 CHECK_FOR_ERROR
    58055805 break;
    58065806
    58075807 case 275:
    5808 #line 2600 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5808 #line 2600 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58095809 { // Is it a named reference...?
    58105810 (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal));
    58115811 delete (yyvsp[(1) - (1)].StrVal);
    58145814 break;
    58155815
    58165816 case 276:
    5817 #line 2605 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5817 #line 2605 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58185818 { // Is it a named reference...?
    58195819 (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal));
    58205820 delete (yyvsp[(1) - (1)].StrVal);
    58235823 break;
    58245824
    58255825 case 279:
    5826 #line 2618 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5826 #line 2618 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58275827 {
    58285828 if (!UpRefs.empty())
    58295829 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
    58345834 break;
    58355835
    58365836 case 280:
    5837 #line 2627 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5837 #line 2627 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58385838 {
    58395839 (yyval.ValueList) = new std::vector();
    58405840 (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal));
    58435843 break;
    58445844
    58455845 case 281:
    5846 #line 2632 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5846 #line 2632 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58475847 {
    58485848 ((yyval.ValueList)=(yyvsp[(1) - (3)].ValueList))->push_back((yyvsp[(3) - (3)].ValueVal));
    58495849 CHECK_FOR_ERROR
    58515851 break;
    58525852
    58535853 case 282:
    5854 #line 2637 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5854 #line 2637 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58555855 {
    58565856 (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
    58575857 CHECK_FOR_ERROR
    58595859 break;
    58605860
    58615861 case 283:
    5862 #line 2641 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5862 #line 2641 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58635863 { // Do not allow functions with 0 basic blocks
    58645864 (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
    58655865 CHECK_FOR_ERROR
    58675867 break;
    58685868
    58695869 case 284:
    5870 #line 2650 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5870 #line 2650 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58715871 {
    58725872 setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
    58735873 CHECK_FOR_ERROR
    58795879 break;
    58805880
    58815881 case 285:
    5882 #line 2659 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5882 #line 2659 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58835883 {
    58845884 if (CastInst *CI1 = dyn_cast((yyvsp[(2) - (2)].InstVal)))
    58855885 if (CastInst *CI2 = dyn_cast(CI1->getOperand(0)))
    58925892 break;
    58935893
    58945894 case 286:
    5895 #line 2668 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5895 #line 2668 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    58965896 { // Empty space between instruction lists
    58975897 (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
    58985898 CHECK_FOR_ERROR
    59005900 break;
    59015901
    59025902 case 287:
    5903 #line 2672 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5903 #line 2672 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59045904 { // Labelled (named) basic block
    59055905 (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)));
    59065906 delete (yyvsp[(1) - (1)].StrVal);
    59105910 break;
    59115911
    59125912 case 288:
    5913 #line 2680 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5913 #line 2680 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59145914 { // Return with a result...
    59155915 ValueList &VL = *(yyvsp[(2) - (2)].ValueList);
    59165916 assert(!VL.empty() && "Invalid ret operands!");
    59215921 break;
    59225922
    59235923 case 289:
    5924 #line 2687 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5924 #line 2687 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59255925 { // Return with no result...
    59265926 (yyval.TermInstVal) = ReturnInst::Create();
    59275927 CHECK_FOR_ERROR
    59295929 break;
    59305930
    59315931 case 290:
    5932 #line 2691 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5932 #line 2691 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59335933 { // Unconditional Branch...
    59345934 BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
    59355935 CHECK_FOR_ERROR
    59385938 break;
    59395939
    59405940 case 291:
    5941 #line 2696 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5941 #line 2696 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59425942 {
    59435943 if (cast((yyvsp[(2) - (9)].PrimType))->getBitWidth() != 1)
    59445944 GEN_ERROR("Branch condition must have type i1");
    59535953 break;
    59545954
    59555955 case 292:
    5956 #line 2707 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5956 #line 2707 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59575957 {
    59585958 Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal));
    59595959 CHECK_FOR_ERROR
    59765976 break;
    59775977
    59785978 case 293:
    5979 #line 2726 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5979 #line 2726 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59805980 {
    59815981 Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal));
    59825982 CHECK_FOR_ERROR
    59895989 break;
    59905990
    59915991 case 294:
    5992 #line 2736 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    5992 #line 2736 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    59935993 {
    59945994
    59955995 // Handle the short syntax
    60786078 break;
    60796079
    60806080 case 295:
    6081 #line 2821 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6081 #line 2821 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    60826082 {
    60836083 (yyval.TermInstVal) = new UnwindInst();
    60846084 CHECK_FOR_ERROR
    60866086 break;
    60876087
    60886088 case 296:
    6089 #line 2825 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6089 #line 2825 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    60906090 {
    60916091 (yyval.TermInstVal) = new UnreachableInst();
    60926092 CHECK_FOR_ERROR
    60946094 break;
    60956095
    60966096 case 297:
    6097 #line 2832 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6097 #line 2832 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    60986098 {
    60996099 (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
    61006100 Constant *V = cast(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
    61096109 break;
    61106110
    61116111 case 298:
    6112 #line 2843 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6112 #line 2843 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61136113 {
    61146114 (yyval.JumpTable) = new std::vector >();
    61156115 Constant *V = cast(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
    61256125 break;
    61266126
    61276127 case 299:
    6128 #line 2856 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6128 #line 2856 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61296129 {
    61306130 // Is this definition named?? if so, assign the name...
    61316131 setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
    61376137 break;
    61386138
    61396139 case 300:
    6140 #line 2866 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6140 #line 2866 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61416141 { // Used for PHI nodes
    61426142 if (!UpRefs.empty())
    61436143 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription());
    61526152 break;
    61536153
    61546154 case 301:
    6155 #line 2877 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6155 #line 2877 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61566156 {
    61576157 (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
    61586158 Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal));
    61646164 break;
    61656165
    61666166 case 302:
    6167 #line 2887 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6167 #line 2887 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61686168 {
    61696169 // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
    61706170 if (!UpRefs.empty())
    61796179 break;
    61806180
    61816181 case 303:
    6182 #line 2898 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6182 #line 2898 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61836183 {
    61846184 // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
    61856185 // Labels are only valid in ASMs
    61916191 break;
    61926192
    61936193 case 304:
    6194 #line 2906 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6194 #line 2906 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    61956195 {
    61966196 // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
    61976197 if (!UpRefs.empty())
    62056205 break;
    62066206
    62076207 case 305:
    6208 #line 2916 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6208 #line 2916 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62096209 {
    62106210 // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
    62116211 (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList);
    62166216 break;
    62176217
    62186218 case 306:
    6219 #line 2923 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6219 #line 2923 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62206220 { (yyval.ParamList) = new ParamList(); ;}
    62216221 break;
    62226222
    62236223 case 307:
    6224 #line 2926 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6224 #line 2926 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62256225 { (yyval.ValueList) = new std::vector(); ;}
    62266226 break;
    62276227
    62286228 case 308:
    6229 #line 2927 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6229 #line 2927 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62306230 {
    62316231 (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
    62326232 (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
    62356235 break;
    62366236
    62376237 case 309:
    6238 #line 2935 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6238 #line 2935 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62396239 {
    62406240 (yyval.ConstantList) = new std::vector();
    62416241 if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
    62456245 break;
    62466246
    62476247 case 310:
    6248 #line 2941 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6248 #line 2941 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62496249 {
    62506250 (yyval.ConstantList) = (yyvsp[(1) - (3)].ConstantList);
    62516251 if ((unsigned)(yyvsp[(3) - (3)].UInt64Val) != (yyvsp[(3) - (3)].UInt64Val))
    62566256 break;
    62576257
    62586258 case 311:
    6259 #line 2950 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6259 #line 2950 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62606260 {
    62616261 (yyval.BoolVal) = true;
    62626262 CHECK_FOR_ERROR
    62646264 break;
    62656265
    62666266 case 312:
    6267 #line 2954 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6267 #line 2954 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62686268 {
    62696269 (yyval.BoolVal) = false;
    62706270 CHECK_FOR_ERROR
    62726272 break;
    62736273
    62746274 case 313:
    6275 #line 2959 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6275 #line 2959 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62766276 {
    62776277 if (!UpRefs.empty())
    62786278 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
    62926292 break;
    62936293
    62946294 case 314:
    6295 #line 2975 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6295 #line 2975 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    62966296 {
    62976297 if (!UpRefs.empty())
    62986298 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
    63136313 break;
    63146314
    63156315 case 315:
    6316 #line 2992 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6316 #line 2992 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    63176317 {
    63186318 if (!UpRefs.empty())
    63196319 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
    63316331 break;
    63326332
    63336333 case 316:
    6334 #line 3006 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6334 #line 3006 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    63356335 {
    63366336 if (!UpRefs.empty())
    63376337 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
    63496349 break;
    63506350
    63516351 case 317:
    6352 #line 3020 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6352 #line 3020 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    63536353 {
    63546354 if (!UpRefs.empty())
    63556355 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
    63676367 break;
    63686368
    63696369 case 318:
    6370 #line 3034 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6370 #line 3034 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    63716371 {
    63726372 if (!UpRefs.empty())
    63736373 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
    63856385 break;
    63866386
    63876387 case 319:
    6388 #line 3048 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6388 #line 3048 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    63896389 {
    63906390 if (!UpRefs.empty())
    63916391 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
    64016401 break;
    64026402
    64036403 case 320:
    6404 #line 3060 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6404 #line 3060 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64056405 {
    64066406 if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty)
    64076407 GEN_ERROR("select condition must be boolean");
    64136413 break;
    64146414
    64156415 case 321:
    6416 #line 3068 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6416 #line 3068 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64176417 {
    64186418 if (!UpRefs.empty())
    64196419 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
    64246424 break;
    64256425
    64266426 case 322:
    6427 #line 3075 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6427 #line 3075 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64286428 {
    64296429 if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)))
    64306430 GEN_ERROR("Invalid extractelement operands");
    64346434 break;
    64356435
    64366436 case 323:
    6437 #line 3081 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6437 #line 3081 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64386438 {
    64396439 if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
    64406440 GEN_ERROR("Invalid insertelement operands");
    64446444 break;
    64456445
    64466446 case 324:
    6447 #line 3087 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6447 #line 3087 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64486448 {
    64496449 if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
    64506450 GEN_ERROR("Invalid shufflevector operands");
    64546454 break;
    64556455
    64566456 case 325:
    6457 #line 3093 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6457 #line 3093 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64586458 {
    64596459 const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType();
    64606460 if (!Ty->isFirstClassType())
    64736473 break;
    64746474
    64756475 case 326:
    6476 #line 3109 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6476 #line 3109 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    64776477 {
    64786478
    64796479 // Handle the short syntax
    65666566 break;
    65676567
    65686568 case 327:
    6569 #line 3198 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6569 #line 3198 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    65706570 {
    65716571 (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
    65726572 CHECK_FOR_ERROR
    65746574 break;
    65756575
    65766576 case 328:
    6577 #line 3203 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6577 #line 3203 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    65786578 {
    65796579 (yyval.BoolVal) = true;
    65806580 CHECK_FOR_ERROR
    65826582 break;
    65836583
    65846584 case 329:
    6585 #line 3207 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6585 #line 3207 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    65866586 {
    65876587 (yyval.BoolVal) = false;
    65886588 CHECK_FOR_ERROR
    65906590 break;
    65916591
    65926592 case 330:
    6593 #line 3214 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6593 #line 3214 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    65946594 {
    65956595 if (!UpRefs.empty())
    65966596 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
    66016601 break;
    66026602
    66036603 case 331:
    6604 #line 3221 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6604 #line 3221 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66056605 {
    66066606 if (!UpRefs.empty())
    66076607 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
    66156615 break;
    66166616
    66176617 case 332:
    6618 #line 3231 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6618 #line 3231 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66196619 {
    66206620 if (!UpRefs.empty())
    66216621 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
    66266626 break;
    66276627
    66286628 case 333:
    6629 #line 3238 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6629 #line 3238 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66306630 {
    66316631 if (!UpRefs.empty())
    66326632 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
    66406640 break;
    66416641
    66426642 case 334:
    6643 #line 3248 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6643 #line 3248 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66446644 {
    66456645 if (!isa((yyvsp[(2) - (2)].ValueVal)->getType()))
    66466646 GEN_ERROR("Trying to free nonpointer type " +
    66516651 break;
    66526652
    66536653 case 335:
    6654 #line 3256 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6654 #line 3256 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66556655 {
    66566656 if (!UpRefs.empty())
    66576657 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
    66696669 break;
    66706670
    66716671 case 336:
    6672 #line 3270 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6672 #line 3270 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66736673 {
    66746674 if (!UpRefs.empty())
    66756675 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription());
    66906690 break;
    66916691
    66926692 case 337:
    6693 #line 3287 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6693 #line 3287 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    66946694 {
    66956695 Value *TmpVal = getVal((yyvsp[(2) - (5)].TypeVal)->get(), (yyvsp[(3) - (5)].ValIDVal));
    66966696 if (!GetResultInst::isValidOperands(TmpVal, (yyvsp[(5) - (5)].UInt64Val)))
    67026702 break;
    67036703
    67046704 case 338:
    6705 #line 3295 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6705 #line 3295 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    67066706 {
    67076707 if (!UpRefs.empty())
    67086708 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
    67216721 break;
    67226722
    67236723 case 339:
    6724 #line 3310 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6724 #line 3310 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    67256725 {
    67266726 if (!UpRefs.empty())
    67276727 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
    67406740 break;
    67416741
    67426742 case 340:
    6743 #line 3325 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6743 #line 3325 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    67446744 {
    67456745 if (!UpRefs.empty())
    67466746 GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (7)].TypeVal))->getDescription());
    69766976 }
    69776977
    69786978
    6979 #line 3344 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    6979 #line 3344 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    69806980
    69816981
    69826982 // common code from the two 'RunVMAsmParser' functions
    353353
    354354 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    355355 typedef union YYSTYPE
    356 #line 953 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
    356 #line 953 "/Volumes/Data/Code/work/llvm2/lib/AsmParser/llvmAsmParser.y"
    357357 {
    358358 llvm::Module *ModuleVal;
    359359 llvm::Function *FunctionVal;
    15371537 uint64_t NumElements = ATy->getNumElements();
    15381538
    15391539 // Verify that we have the correct size...
    1540 if (NumElements != -1 && NumElements != (int)$3->size())
    1540 if (NumElements != uint64_t(-1) && NumElements != $3->size())
    15411541 GEN_ERROR("Type mismatch: constant sized array initialized with " +
    15421542 utostr($3->size()) + " arguments, but has size of " +
    1543 itostr(NumElements) + "");
    1543 utostr(NumElements) + "");
    15441544
    15451545 // Verify all elements are correct type!
    15461546 for (unsigned i = 0; i < $3->size(); i++) {
    15631563 (*$1)->getDescription() + "'");
    15641564
    15651565 uint64_t NumElements = ATy->getNumElements();
    1566 if (NumElements != -1 && NumElements != 0)
    1566 if (NumElements != uint64_t(-1) && NumElements != 0)
    15671567 GEN_ERROR("Type mismatch: constant sized array initialized with 0"
    1568 " arguments, but has size of " + itostr(NumElements) +"");
    1568 " arguments, but has size of " + utostr(NumElements) +"");
    15691569 $$ = ConstantArray::get(ATy, std::vector());
    15701570 delete $1;
    15711571 CHECK_FOR_ERROR
    15801580
    15811581 uint64_t NumElements = ATy->getNumElements();
    15821582 const Type *ETy = ATy->getElementType();
    1583 if (NumElements != -1 && NumElements != int($3->length()))
    1583 if (NumElements != uint64_t(-1) && NumElements != $3->length())
    15841584 GEN_ERROR("Can't build string constant of size " +
    1585 itostr((int)($3->length())) +
    1586 " when array has size " + itostr(NumElements) + "");
    1585 utostr($3->length()) +
    1586 " when array has size " + utostr(NumElements) + "");
    15871587 std::vector Vals;
    15881588 if (ETy == Type::Int8Ty) {
    1589 for (unsigned i = 0; i < $3->length(); ++i)
    1589 for (uint64_t i = 0; i < $3->length(); ++i)
    15901590 Vals.push_back(ConstantInt::get(ETy, (*$3)[i]));
    15911591 } else {
    15921592 delete $3;
    16081608 unsigned NumElements = PTy->getNumElements();
    16091609
    16101610 // Verify that we have the correct size...
    1611 if (NumElements != -1 && NumElements != (int)$3->size())
    1611 if (NumElements != unsigned(-1) && NumElements != (unsigned)$3->size())
    16121612 GEN_ERROR("Type mismatch: constant sized packed initialized with " +
    16131613 utostr($3->size()) + " arguments, but has size of " +
    1614 itostr(NumElements) + "");
    1614 utostr(NumElements) + "");
    16151615
    16161616 // Verify all elements are correct type!
    16171617 for (unsigned i = 0; i < $3->size(); i++) {
    12271227 break;
    12281228 }
    12291229
    1230 case ISD::ATOMIC_LCS: {
    1230 case ISD::ATOMIC_CMP_SWAP: {
    12311231 unsigned int num_operands = 4;
    12321232 assert(Node->getNumOperands() == num_operands && "Invalid Atomic node!");
    12331233 SDOperand Ops[4];
    12471247 AddLegalizedOperand(SDOperand(Node, 1), Result.getValue(1));
    12481248 return Result.getValue(Op.ResNo);
    12491249 }
    1250 case ISD::ATOMIC_LAS:
    1251 case ISD::ATOMIC_LSS:
    1250 case ISD::ATOMIC_LOAD_ADD:
    1251 case ISD::ATOMIC_LOAD_SUB:
    12521252 case ISD::ATOMIC_LOAD_AND:
    12531253 case ISD::ATOMIC_LOAD_OR:
    12541254 case ISD::ATOMIC_LOAD_XOR:
    42694269 break;
    42704270 }
    42714271
    4272 case ISD::ATOMIC_LCS: {
    4272 case ISD::ATOMIC_CMP_SWAP: {
    4273 AtomicSDNode* AtomNode = cast(Node);
    42734274 Tmp2 = PromoteOp(Node->getOperand(2));
    42744275 Tmp3 = PromoteOp(Node->getOperand(3));
    4275 Result = DAG.getAtomic(Node->getOpcode(), Node->getOperand(0),
    4276 Node->getOperand(1), Tmp2, Tmp3,
    4277 cast(Node)->getVT());
    4276 Result = DAG.getAtomic(Node->getOpcode(), AtomNode->getChain(),
    4277 AtomNode->getBasePtr(), Tmp2, Tmp3,
    4278 AtomNode->getVT(), AtomNode->getSrcValue(),
    4279 AtomNode->getAlignment());
    42784280 // Remember that we legalized the chain.
    42794281 AddLegalizedOperand(Op.getValue(1), LegalizeOp(Result.getValue(1)));
    42804282 break;
    42814283 }
    4282 case ISD::ATOMIC_LAS:
    4283 case ISD::ATOMIC_LSS:
    4284 case ISD::ATOMIC_LOAD_ADD:
    4285 case ISD::ATOMIC_LOAD_SUB:
    42844286 case ISD::ATOMIC_LOAD_AND:
    42854287 case ISD::ATOMIC_LOAD_OR:
    42864288 case ISD::ATOMIC_LOAD_XOR:
    42904292 case ISD::ATOMIC_LOAD_UMIN:
    42914293 case ISD::ATOMIC_LOAD_UMAX:
    42924294 case ISD::ATOMIC_SWAP: {
    4295 AtomicSDNode* AtomNode = cast(Node);
    42934296 Tmp2 = PromoteOp(Node->getOperand(2));
    4294 Result = DAG.getAtomic(Node->getOpcode(), Node->getOperand(0),
    4295 Node->getOperand(1), Tmp2,
    4296 cast(Node)->getVT());
    4297 Result = DAG.getAtomic(Node->getOpcode(), AtomNode->getChain(),
    4298 AtomNode->getBasePtr(), Tmp2,
    4299 AtomNode->getVT(), AtomNode->getSrcValue(),
    4300 AtomNode->getAlignment());
    42974301 // Remember that we legalized the chain.
    42984302 AddLegalizedOperand(Op.getValue(1), LegalizeOp(Result.getValue(1)));
    42994303 break;
    61506154 break;
    61516155 }
    61526156
    6153 case ISD::ATOMIC_LCS: {
    6157 case ISD::ATOMIC_CMP_SWAP: {
    61546158 SDOperand Tmp = TLI.LowerOperation(Op, DAG);
    61556159 assert(Tmp.Val && "Node must be custom expanded!");
    61566160 ExpandOp(Tmp.getValue(0), Lo, Hi);
    429429 ID.AddInteger(ST->isVolatile());
    430430 break;
    431431 }
    432 }
    432 case ISD::ATOMIC_CMP_SWAP:
    433 case ISD::ATOMIC_LOAD_ADD:
    434 case ISD::ATOMIC_SWAP:
    435 case ISD::ATOMIC_LOAD_SUB:
    436 case ISD::ATOMIC_LOAD_AND:
    437 case ISD::ATOMIC_LOAD_OR:
    438 case ISD::ATOMIC_LOAD_XOR:
    439 case ISD::ATOMIC_LOAD_NAND:
    440 case ISD::ATOMIC_LOAD_MIN:
    441 case ISD::ATOMIC_LOAD_MAX:
    442 case ISD::ATOMIC_LOAD_UMIN:
    443 case ISD::ATOMIC_LOAD_UMAX: {
    444 AtomicSDNode *AT = cast(N);
    445 ID.AddInteger(AT->getAlignment());
    446 ID.AddInteger(AT->isVolatile());
    447 break;
    448 }
    449 } // end switch (N->getOpcode())
    433450 }
    434451
    435452 //===----------------------------------------------------------------------===//
    29712988
    29722989 SDOperand SelectionDAG::getAtomic(unsigned Opcode, SDOperand Chain,
    29732990 SDOperand Ptr, SDOperand Cmp,
    2974 SDOperand Swp, MVT VT) {
    2975 assert(Opcode == ISD::ATOMIC_LCS && "Invalid Atomic Op");
    2991 SDOperand Swp, MVT VT, const Value* PtrVal,
    2992 unsigned Alignment) {
    2993 assert(Opcode == ISD::ATOMIC_CMP_SWAP && "Invalid Atomic Op");
    29762994 assert(Cmp.getValueType() == Swp.getValueType() && "Invalid Atomic Op Types");
    29772995 SDVTList VTs = getVTList(Cmp.getValueType(), MVT::Other);
    29782996 FoldingSetNodeID ID;
    29823000 void* IP = 0;
    29833001 if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP))
    29843002 return SDOperand(E, 0);
    2985 SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, Cmp, Swp, VT);
    3003 SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, Cmp, Swp, VT,
    3004 PtrVal, Alignment);
    29863005 CSEMap.InsertNode(N, IP);
    29873006 AllNodes.push_back(N);
    29883007 return SDOperand(N, 0);
    29903009
    29913010 SDOperand SelectionDAG::getAtomic(unsigned Opcode, SDOperand Chain,
    29923011 SDOperand Ptr, SDOperand Val,
    2993 MVT VT) {
    2994 assert(( Opcode == ISD::ATOMIC_LAS || Opcode == ISD::ATOMIC_LSS
    3012 MVT VT, const Value* PtrVal,
    3013 unsigned Alignment) {
    3014 assert(( Opcode == ISD::ATOMIC_LOAD_ADD || Opcode == ISD::ATOMIC_LOAD_SUB
    29953015 || Opcode == ISD::ATOMIC_SWAP || Opcode == ISD::ATOMIC_LOAD_AND
    29963016 || Opcode == ISD::ATOMIC_LOAD_OR || Opcode == ISD::ATOMIC_LOAD_XOR
    29973017 || Opcode == ISD::ATOMIC_LOAD_NAND
    30063026 void* IP = 0;
    30073027 if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP))
    30083028 return SDOperand(E, 0);
    3009 SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, Val, VT);
    3029 SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, Val, VT,
    3030 PtrVal, Alignment);
    30103031 CSEMap.InsertNode(N, IP);
    30113032 AllNodes.push_back(N);
    30123033 return SDOperand(N, 0);
    41704191 void CondCodeSDNode::ANCHOR() {}
    41714192 void ARG_FLAGSSDNode::ANCHOR() {}
    41724193 void VTSDNode::ANCHOR() {}
    4194 void MemSDNode::ANCHOR() {}
    41734195 void LoadSDNode::ANCHOR() {}
    41744196 void StoreSDNode::ANCHOR() {}
    41754197 void AtomicSDNode::ANCHOR() {}
    41924214 }
    41934215
    41944216 /// getMemOperand - Return a MachineMemOperand object describing the memory
    4217 /// reference performed by this atomic.
    4218 MachineMemOperand AtomicSDNode::getMemOperand() const {
    4219 int Size = (getVT().getSizeInBits() + 7) >> 3;
    4220 int Flags = MachineMemOperand::MOLoad | MachineMemOperand::MOStore;
    4221 if (isVolatile()) Flags |= MachineMemOperand::MOVolatile;
    4222
    4223 // Check if the atomic references a frame index
    4224 const FrameIndexSDNode *FI =
    4225 dyn_cast(getBasePtr().Val);
    4226 if (!getSrcValue() && FI)
    4227 return MachineMemOperand(PseudoSourceValue::getFixedStack(), Flags,
    4228 FI->getIndex(), Size, getAlignment());
    4229 else
    4230 return MachineMemOperand(getSrcValue(), Flags, getSrcValueOffset(),
    4231 Size, getAlignment());
    4232 }
    4233
    4234 /// getMemOperand - Return a MachineMemOperand object describing the memory
    41954235 /// reference performed by this load or store.
    41964236 MachineMemOperand LSBaseSDNode::getMemOperand() const {
    41974237 int Size = (getMemoryVT().getSizeInBits() + 7) >> 3;
    41984238 int Flags =
    41994239 getOpcode() == ISD::LOAD ? MachineMemOperand::MOLoad :
    42004240 MachineMemOperand::MOStore;
    4201 if (IsVolatile) Flags |= MachineMemOperand::MOVolatile;
    4241 if (isVolatile()) Flags |= MachineMemOperand::MOVolatile;
    42024242
    42034243 // Check if the load references a frame index, and does not have
    42044244 // an SV attached.
    42064246 dyn_cast(getBasePtr().Val);
    42074247 if (!getSrcValue() && FI)
    42084248 return MachineMemOperand(PseudoSourceValue::getFixedStack(), Flags,
    4209 FI->getIndex(), Size, Alignment);
    4249 FI->getIndex(), Size, getAlignment());
    42104250 else
    42114251 return MachineMemOperand(getSrcValue(), Flags,
    4212 getSrcValueOffset(), Size, Alignment);
    4252 getSrcValueOffset(), Size, getAlignment());
    42134253 }
    42144254
    42154255 /// Profile - Gather unique data for the node.
    44004440
    44014441