aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-12-03 14:21:33 +0000
committergingerBill <bill@gingerbill.org>2020-12-03 14:21:33 +0000
commit047586afc69977164567daff0927afea31284519 (patch)
tree7747f0176e53ed2263f1fe68f0b571c37e83179f /src/llvm_backend.cpp
parent5acdcfb57c612e25c9e8a49497aeff9881e6fe60 (diff)
Change ExactValue layout for complex/quaternion types to minimize its size
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 11b301268..b4edc4914 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -5316,12 +5316,12 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc
LLVMValueRef values[2] = {};
switch (8*type_size_of(type)) {
case 64:
- values[0] = lb_const_f32(m, cast(f32)value.value_complex.real);
- values[1] = lb_const_f32(m, cast(f32)value.value_complex.imag);
+ values[0] = lb_const_f32(m, cast(f32)value.value_complex->real);
+ values[1] = lb_const_f32(m, cast(f32)value.value_complex->imag);
break;
case 128:
- values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.real);
- values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.imag);
+ values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_complex->real);
+ values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_complex->imag);
break;
}
@@ -5335,17 +5335,17 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc
switch (8*type_size_of(type)) {
case 128:
// @QuaternionLayout
- values[3] = lb_const_f32(m, cast(f32)value.value_quaternion.real);
- values[0] = lb_const_f32(m, cast(f32)value.value_quaternion.imag);
- values[1] = lb_const_f32(m, cast(f32)value.value_quaternion.jmag);
- values[2] = lb_const_f32(m, cast(f32)value.value_quaternion.kmag);
+ values[3] = lb_const_f32(m, cast(f32)value.value_quaternion->real);
+ values[0] = lb_const_f32(m, cast(f32)value.value_quaternion->imag);
+ values[1] = lb_const_f32(m, cast(f32)value.value_quaternion->jmag);
+ values[2] = lb_const_f32(m, cast(f32)value.value_quaternion->kmag);
break;
case 256:
// @QuaternionLayout
- values[3] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.real);
- values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.imag);
- values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.jmag);
- values[2] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.kmag);
+ values[3] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->real);
+ values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->imag);
+ values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->jmag);
+ values[2] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->kmag);
break;
}