| ... | @@ -6764,13 +6764,12 @@ check: switch (const_val->special) { | ... | @@ -6764,13 +6764,12 @@ check: switch (const_val->special) { |
| 6764 | assert(LLVMGetTypeKind(field_ty) == LLVMIntegerTypeKind); | 6764 | assert(LLVMGetTypeKind(field_ty) == LLVMIntegerTypeKind); |
| 6765 | fields[type_struct_field->gen_index] = val; | 6765 | fields[type_struct_field->gen_index] = val; |
| 6766 | } else { | 6766 | } else { |
| 6767 | const LLVMValueRef MASK = LLVMConstInt(LLVMInt8Type(), 255, false); | 6767 | const LLVMValueRef AMT = LLVMConstInt(LLVMTypeOf(val), 8, false); |
| 6768 | const LLVMValueRef AMT = LLVMConstInt(LLVMInt8Type(), 8, false); | | |
| 6769 | | 6768 | |
| 6770 | LLVMValueRef *values = allocate<LLVMValueRef>(size_in_bytes); | 6769 | LLVMValueRef *values = allocate<LLVMValueRef>(size_in_bytes); |
| 6771 | for (size_t i = 0; i < size_in_bytes; i++) { | 6770 | for (size_t i = 0; i < size_in_bytes; i++) { |
| 6772 | const size_t idx = is_big_endian ? size_in_bytes - 1 - i : i; | 6771 | const size_t idx = is_big_endian ? size_in_bytes - 1 - i : i; |
| 6773 | values[idx] = LLVMConstTruncOrBitCast(LLVMConstAnd(val, MASK), LLVMInt8Type()); | 6772 | values[idx] = LLVMConstTruncOrBitCast(val, LLVMInt8Type()); |
| 6774 | val = LLVMConstLShr(val, AMT); | 6773 | val = LLVMConstLShr(val, AMT); |
| 6775 | } | 6774 | } |
| 6776 | | 6775 | |