oxilean_codegen/llvm_backend/
llvmvalue_traits.rs1use crate::lcnf::*;
12
13use super::types::LlvmValue;
14use std::fmt;
15
16impl fmt::Display for LlvmValue {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 match self {
19 LlvmValue::Const(n) => write!(f, "{}", n),
20 LlvmValue::Float(v) => write!(f, "{:.17e}", v),
21 LlvmValue::Undef => write!(f, "undef"),
22 LlvmValue::Null => write!(f, "null"),
23 LlvmValue::True_ => write!(f, "true"),
24 LlvmValue::False_ => write!(f, "false"),
25 LlvmValue::GlobalRef(name) => write!(f, "@{}", name),
26 LlvmValue::LocalRef(name) => write!(f, "%{}", name),
27 LlvmValue::ConstArray(ty, elems) => {
28 write!(f, "[")?;
29 for (i, e) in elems.iter().enumerate() {
30 if i > 0 {
31 write!(f, ", ")?;
32 }
33 write!(f, "{} {}", ty, e)?;
34 }
35 write!(f, "]")
36 }
37 LlvmValue::ConstStruct(fields) => {
38 write!(f, "{{ ")?;
39 for (i, field) in fields.iter().enumerate() {
40 if i > 0 {
41 write!(f, ", ")?;
42 }
43 write!(f, "{}", field)?;
44 }
45 write!(f, " }}")
46 }
47 LlvmValue::ZeroInitializer => write!(f, "zeroinitializer"),
48 }
49 }
50}