Skip to content

Commit 994041a

Browse files
committed
Remove type_i1 and type_struct from cg_ssa
They are not representable by Cranelift
1 parent 8a1e581 commit 994041a

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

src/type_.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,34 @@ impl<'gcc, 'tcx> CodegenCx<'gcc, 'tcx> {
8989
ty::FloatTy::F128 => self.type_f128(),
9090
}
9191
}
92-
}
9392

94-
impl<'gcc, 'tcx> BaseTypeMethods<'tcx> for CodegenCx<'gcc, 'tcx> {
95-
fn type_i1(&self) -> Type<'gcc> {
93+
pub fn type_i1(&self) -> Type<'gcc> {
9694
self.bool_type
9795
}
9896

97+
pub fn type_struct(&self, fields: &[Type<'gcc>], packed: bool) -> Type<'gcc> {
98+
let types = fields.to_vec();
99+
if let Some(typ) = self.struct_types.borrow().get(fields) {
100+
return *typ;
101+
}
102+
let fields: Vec<_> = fields
103+
.iter()
104+
.enumerate()
105+
.map(|(index, field)| {
106+
self.context.new_field(None, *field, format!("field{}_TODO", index))
107+
})
108+
.collect();
109+
let typ = self.context.new_struct_type(None, "struct", &fields).as_type();
110+
if packed {
111+
#[cfg(feature = "master")]
112+
typ.set_packed();
113+
}
114+
self.struct_types.borrow_mut().insert(types, typ);
115+
typ
116+
}
117+
}
118+
119+
impl<'gcc, 'tcx> BaseTypeMethods<'tcx> for CodegenCx<'gcc, 'tcx> {
99120
fn type_i8(&self) -> Type<'gcc> {
100121
self.i8_type
101122
}
@@ -131,7 +152,7 @@ impl<'gcc, 'tcx> BaseTypeMethods<'tcx> for CodegenCx<'gcc, 'tcx> {
131152
fn type_f64(&self) -> Type<'gcc> {
132153
self.double_type
133154
}
134-
155+
135156
fn type_f128(&self) -> Type<'gcc> {
136157
unimplemented!("f16_f128")
137158
}
@@ -140,27 +161,6 @@ impl<'gcc, 'tcx> BaseTypeMethods<'tcx> for CodegenCx<'gcc, 'tcx> {
140161
self.context.new_function_pointer_type(None, return_type, params, false)
141162
}
142163

143-
fn type_struct(&self, fields: &[Type<'gcc>], packed: bool) -> Type<'gcc> {
144-
let types = fields.to_vec();
145-
if let Some(typ) = self.struct_types.borrow().get(fields) {
146-
return *typ;
147-
}
148-
let fields: Vec<_> = fields
149-
.iter()
150-
.enumerate()
151-
.map(|(index, field)| {
152-
self.context.new_field(None, *field, format!("field{}_TODO", index))
153-
})
154-
.collect();
155-
let typ = self.context.new_struct_type(None, "struct", &fields).as_type();
156-
if packed {
157-
#[cfg(feature = "master")]
158-
typ.set_packed();
159-
}
160-
self.struct_types.borrow_mut().insert(types, typ);
161-
typ
162-
}
163-
164164
fn type_kind(&self, typ: Type<'gcc>) -> TypeKind {
165165
if self.is_int_type_or_bool(typ) {
166166
TypeKind::Integer

0 commit comments

Comments
 (0)