Skip to content

Commit 6cdf803

Browse files
authored
Rollup merge of #89809 - tmiasko:remap-real-predicate, r=michaelwoerister
Remap ssa RealPredicate to llvm RealPredicate to avoid relying on the discriminant of the former for FFI purposes
2 parents 17c7635 + ce7713d commit 6cdf803

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

compiler/rustc_codegen_llvm/src/builder.rs

+1
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
828828
}
829829

830830
fn fcmp(&mut self, op: RealPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
831+
let op = llvm::RealPredicate::from_generic(op);
831832
unsafe { llvm::LLVMBuildFCmp(self.llbuilder, op as c_uint, lhs, rhs, UNNAMED) }
832833
}
833834

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

+27
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,33 @@ pub enum RealPredicate {
223223
RealPredicateTrue = 15,
224224
}
225225

226+
impl RealPredicate {
227+
pub fn from_generic(realp: rustc_codegen_ssa::common::RealPredicate) -> Self {
228+
match realp {
229+
rustc_codegen_ssa::common::RealPredicate::RealPredicateFalse => {
230+
RealPredicate::RealPredicateFalse
231+
}
232+
rustc_codegen_ssa::common::RealPredicate::RealOEQ => RealPredicate::RealOEQ,
233+
rustc_codegen_ssa::common::RealPredicate::RealOGT => RealPredicate::RealOGT,
234+
rustc_codegen_ssa::common::RealPredicate::RealOGE => RealPredicate::RealOGE,
235+
rustc_codegen_ssa::common::RealPredicate::RealOLT => RealPredicate::RealOLT,
236+
rustc_codegen_ssa::common::RealPredicate::RealOLE => RealPredicate::RealOLE,
237+
rustc_codegen_ssa::common::RealPredicate::RealONE => RealPredicate::RealONE,
238+
rustc_codegen_ssa::common::RealPredicate::RealORD => RealPredicate::RealORD,
239+
rustc_codegen_ssa::common::RealPredicate::RealUNO => RealPredicate::RealUNO,
240+
rustc_codegen_ssa::common::RealPredicate::RealUEQ => RealPredicate::RealUEQ,
241+
rustc_codegen_ssa::common::RealPredicate::RealUGT => RealPredicate::RealUGT,
242+
rustc_codegen_ssa::common::RealPredicate::RealUGE => RealPredicate::RealUGE,
243+
rustc_codegen_ssa::common::RealPredicate::RealULT => RealPredicate::RealULT,
244+
rustc_codegen_ssa::common::RealPredicate::RealULE => RealPredicate::RealULE,
245+
rustc_codegen_ssa::common::RealPredicate::RealUNE => RealPredicate::RealUNE,
246+
rustc_codegen_ssa::common::RealPredicate::RealPredicateTrue => {
247+
RealPredicate::RealPredicateTrue
248+
}
249+
}
250+
}
251+
}
252+
226253
/// LLVMTypeKind
227254
#[derive(Copy, Clone, PartialEq, Debug)]
228255
#[repr(C)]

0 commit comments

Comments
 (0)