Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
7530fc1
Mark the compile unit for `-Zdebuginfo-for-profiling`
apolloww Nov 4, 2026
44a7763
Upgrade bundled musl to 1.2.6
Amanieu Nov 6, 2026
9882511
Keep the minimum required musl version at 1.2.5
Amanieu Nov 7, 2026
48106d7
rename this -> ecx in intrinsics/x86
programskillforverification Nov 8, 2026
ae4771b
Rename evaluation context bindings from this to ecx
Kaileshwar16 Nov 8, 2026
ad13cdf
fix NumScalableVectors::from_field_count
malezjaa Nov 8, 2026
a79fce1
add `core::arch::{x86, x86_64}::x87_f80`
folkertdev Sep 23, 2026
9da70e9
rename `Reg::align` and `Uniform::align` to `scratch_align`
folkertdev Nov 2, 2026
3592132
use `type_padding_filler` for `x87_f80_raw` in arrays and structs
folkertdev Nov 1, 2026
cc199fa
add assert that we never cast to `x87_f80`
folkertdev Nov 4, 2026
802a33e
adjust comments on backend type functions
folkertdev Nov 4, 2026
7274b42
support x87_f80 in const eval's `try_visit_primitive`
folkertdev Nov 5, 2026
bbcae61
fix ICE when reading as signed
programskillforverification Nov 1, 2026
c07d3b3
add test for closing the end of a socketpair that someone is blocked on
RalfJung Nov 9, 2026
8c9cbb2
Merge pull request #5591 from programskillforverification/this-to-ecx-3
RalfJung Nov 9, 2026
ea34445
Merge pull request #5593 from Kaileshwar16/issue-5569-operator-gc-all…
RalfJung Nov 9, 2026
a6611ac
Merge pull request #5600 from RalfJung/socketpair-deadlock-test
RalfJung Nov 9, 2026
0edc67f
syscall: return ENOSYS for unknown syscalls
RalfJung Nov 9, 2026
462d762
Rename evaluation context bindings in shims
darkraider01 Nov 9, 2026
a4cc283
Merge pull request #5602 from RalfJung/syscall-nosys
RalfJung Nov 9, 2026
e7007d3
interpret: ensure newly created unions have uninit in their padding
RalfJung Nov 9, 2026
98962a2
statx: explain why we initialize these fields
RalfJung Nov 9, 2026
be44f80
Merge pull request #5605 from RalfJung/statx-comment
RalfJung Nov 9, 2026
3cf3c87
std Miri testing: use skip_unsupported_miri_tests to control when tes…
RalfJung Oct 29, 2026
f64ebf2
windows: check for null before wide encoding
seritools Nov 8, 2026
0aa6251
Unignore passing GCC backend tests
GuillaumeGomez Nov 8, 2026
0e99915
mpsc_sync::stream_send_recv_stress: wait for all thread to finish
RalfJung Nov 9, 2026
d11b3f4
fix MSVC calling convention symbol byte counts
paradoxicalguy Nov 8, 2026
32d7c93
Merge pull request #5603 from darkraider01/rename-shims-ecx
RalfJung Nov 9, 2026
792c14e
tweak comment
RalfJung Nov 9, 2026
9ee159b
Merge pull request #5537 from programskillforverification/fix-len-arg…
RalfJung Nov 9, 2026
b52077c
Remove `backend_optimization_level`.
veluca93 Nov 7, 2026
6e05a38
Partially stabilize `ptr_alignment_type` as `alignment_type`
GrigorenkoPV Mar 1, 2026
117c517
docs(num): remove needless whitespaces
sorairolake Nov 10, 2026
2fa016a
Remove parsed arm of `check_attr`
JonathanBrouwer Nov 9, 2026
6fd528c
Move `check_attr` to attribute parsing
JonathanBrouwer Nov 9, 2026
0a179cc
Add test checking that the behaviour for diagnostic attrs is preserved
JonathanBrouwer Nov 9, 2026
eaf2a71
fs::Dir tests: ensure remove and rename do not follow symlinks
RalfJung Oct 19, 2026
811ebf7
windows: fix Dir::{remove_*,rename} symlink behavior
RalfJung Oct 19, 2026
cea69c9
Rollup merge of #165575 - Amanieu:musl-1.2.6, r=cuviper
JonathanBrouwer Nov 10, 2026
53bc76b
Rollup merge of #163992 - folkertdev:x87_f80-simple, r=beetrees,RalfJung
JonathanBrouwer Nov 10, 2026
b6d1b7d
Rollup merge of #165117 - RalfJung:skip_missing_miri_shims, r=maxdexh
JonathanBrouwer Nov 10, 2026
4e73041
Rollup merge of #165458 - paradoxicalguy:fix-msvc-byte-count-clean, r…
JonathanBrouwer Nov 10, 2026
640b504
Rollup merge of #165490 - apolloww:debuginfo-for-profiling-compile-un…
JonathanBrouwer Nov 10, 2026
b471596
Rollup merge of #165586 - veluca93:cleanup-opt-speed, r=nikic
JonathanBrouwer Nov 10, 2026
2a4246a
Rollup merge of #165646 - malezjaa:fix-from_field_count, r=workingjub…
JonathanBrouwer Nov 10, 2026
5c05ae3
Rollup merge of #165655 - GuillaumeGomez:gcc-tests, r=antoyo
JonathanBrouwer Nov 10, 2026
db4ece3
Rollup merge of #165740 - RalfJung:miri, r=RalfJung
JonathanBrouwer Nov 10, 2026
54abaa5
Rollup merge of #153261 - GrigorenkoPV:stabilize/alignment, r=clarfon…
JonathanBrouwer Nov 10, 2026
1de5a64
Rollup merge of #164559 - RalfJung:dir-remove-rename-symlinks, r=Chri…
JonathanBrouwer Nov 10, 2026
a9260df
Rollup merge of #165682 - RalfJung:union-init, r=oli-obk
JonathanBrouwer Nov 10, 2026
f21beae
Rollup merge of #165693 - JonathanBrouwer:check-attr, r=mejrs
JonathanBrouwer Nov 10, 2026
793cd73
Rollup merge of #165715 - rust9x:windows-osstr-null-precheck, r=Chris…
JonathanBrouwer Nov 10, 2026
d172273
Rollup merge of #165717 - RalfJung:stream_send_recv_stress, r=maxdexh
JonathanBrouwer Nov 10, 2026
362b3ac
Rollup merge of #165733 - sorairolake:remove-needless-ws-from-reverse…
JonathanBrouwer Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 10 additions & 4 deletions compiler/rustc_abi/src/callconv/reg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ impl RegKind {
match primitive {
Primitive::Int(..) | Primitive::Pointer(_) => RegKind::Integer,
Primitive::Float(Float::PpcF128) => RegKind::PpcF128,
Primitive::Float(Float::F16 | Float::F16B | Float::F32 | Float::F64 | Float::F128) => {
RegKind::Float
}
Primitive::Float(
Float::F16 | Float::F16B | Float::F32 | Float::F64 | Float::X87F80 | Float::F128,
) => RegKind::Float,
}
}
}
Expand Down Expand Up @@ -60,6 +60,7 @@ impl Reg {
reg_ctor!(f16, Float, 16);
reg_ctor!(f32, Float, 32);
reg_ctor!(f64, Float, 64);
reg_ctor!(x87_f80, Float, 80);
reg_ctor!(f128, Float, 128);

/// A vector of the given size with an unknown (and irrelevant) element type.
Expand All @@ -70,7 +71,8 @@ impl Reg {
}

impl Reg {
pub fn align<C: HasDataLayout>(&self, cx: &C) -> Align {
/// Alignment used for the scratch space when this type is part of a `PassMode::Cast`.
pub fn scratch_align<C: HasDataLayout>(&self, cx: &C) -> Align {
let dl = cx.data_layout();
match self.kind {
RegKind::Integer => match self.size.bits() {
Expand All @@ -86,6 +88,10 @@ impl Reg {
16 => dl.f16_align,
32 => dl.f32_align,
64 => dl.f64_align,
// This alignment is not a multiple of 80 bits, but the alignment
// here is only used to align the alloca of a cast, and there the
// full alignment of x87_f80 should be used.
80 => dl.x87_f80_align,
128 => dl.f128_align,
_ => panic!("unsupported float: {self:?}"),
},
Expand Down
17 changes: 17 additions & 0 deletions compiler/rustc_abi/src/layout/ty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ pub trait TyAbiInterface<'a, C>: Sized + std::fmt::Debug + std::fmt::Display {
fn is_unit(this: TyAndLayout<'a, Self>) -> bool;
fn is_transparent(this: TyAndLayout<'a, Self>) -> bool;
fn is_complex_number_lang_item(this: TyAndLayout<'a, Self>, cx: &C) -> bool;
fn is_x87_f80_lang_item(this: TyAndLayout<'a, Self>, cx: &C) -> bool;
fn is_scalable_vector(this: TyAndLayout<'a, Self>) -> bool;
/// See [`TyAndLayout::pass_indirectly_in_non_rustic_abis`] for details.
fn is_pass_indirectly_in_non_rustic_abis_flag_set(this: TyAndLayout<'a, Self>) -> bool;
Expand Down Expand Up @@ -232,6 +233,17 @@ impl<'a, Ty> TyAndLayout<'a, Ty> {
Ty::is_scalable_vector(self)
}

/// Returns `true` if this type is the `x87_f80` lang item.
///
/// Note that this function returns `false` for the `x87_f80_raw` lang item.
pub fn is_x87_f80<C>(self, cx: &C) -> bool
where
Ty: TyAbiInterface<'a, C> + Copy,
{
// A 1-ZST is never x87_f80.
Ty::is_x87_f80_lang_item(self.peel_transparent_wrappers_from_non_1zst(cx), cx)
}

/// If this method returns `true`, then this type should always have a `PassMode` of
/// `Indirect { mode: IndirectMode::Pointer, .. }` when being used as the argument type of a
/// function with a non-Rustic ABI (this is true for structs annotated with the
Expand Down Expand Up @@ -339,6 +351,10 @@ impl<'a, Ty> TyAndLayout<'a, Ty> {

let component = complex.field(cx, 0).peel_transparent_wrappers_from_non_1zst(cx);

if component.is_x87_f80(cx) {
return Some(Numeric::Float(Float::X87F80));
}

let BackendRepr::Scalar(scalar) = component.backend_repr else {
return None;
};
Expand All @@ -353,6 +369,7 @@ impl<'a, Ty> TyAndLayout<'a, Ty> {
Primitive::Float(
float @ (Float::F16 | Float::F32 | Float::F64 | Float::F128 | Float::PpcF128),
) => Some(Numeric::Float(float)),
Primitive::Float(Float::X87F80) => None, // x87_f80_raw has incorrect alignment.
Primitive::Pointer(..) | Primitive::Float(Float::F16B) => None,
}
}
Expand Down
36 changes: 28 additions & 8 deletions compiler/rustc_abi/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ pub struct TargetDataLayout {
pub f16_align: Align,
pub f32_align: Align,
pub f64_align: Align,
pub x87_f80_align: Align,
pub f128_align: Align,
pub aggregate_align: Align,

Expand Down Expand Up @@ -367,6 +368,7 @@ impl Default for TargetDataLayout {
f16_align: align(16),
f32_align: align(32),
f64_align: align(64),
x87_f80_align: align(128),
f128_align: align(128),
aggregate_align: align(8),
vector_align: vec![
Expand Down Expand Up @@ -510,6 +512,7 @@ impl TargetDataLayout {
["f16", a @ ..] => dl.f16_align = parse_align_seq(a, "f16")?,
["f32", a @ ..] => dl.f32_align = parse_align_seq(a, "f32")?,
["f64", a @ ..] => dl.f64_align = parse_align_seq(a, "f64")?,
["f80", a @ ..] => dl.x87_f80_align = parse_align_seq(a, "f80")?,
["f128", a @ ..] => dl.f128_align = parse_align_seq(a, "f128")?,
[p, s, a @ ..] if p.starts_with("p") => {
let mut p = p.strip_prefix('p').unwrap();
Expand Down Expand Up @@ -1387,10 +1390,22 @@ pub enum Float {
F16B,
F32,
F64,
/// `x87_f80`. This is not a builtin type in Rust (it is exposed as a lang item),
/// but it is a builtin type in LLVM so needs to be explicitly represented
/// in the backend.
///
/// Here we define the 80-bit scalar value that corresponds to the `x87_f80_raw` lang item.
/// In `core::arch::{x86, x86_64}` this type is wrapped by the `x87_f80` lang item that adds
/// the proper alignment and bumps the size to either 12 or 16 bytes depending on the target.
///
/// Only used on x86 and x86_64 targets.
X87F80,
F128,
/// `ppcf128`. This is not a builtin type in Rust (it is exposed as a lang item),
/// but it is a builtin type in LLVM so needs to be explicitly represented
/// in the backend.
///
/// Only used on powerpc and powerpc64 targets.
PpcF128,
}

Expand All @@ -1403,6 +1418,7 @@ impl Float {
F16B => Size::from_bits(16),
F32 => Size::from_bits(32),
F64 => Size::from_bits(64),
X87F80 => Size::from_bits(80),
F128 => Size::from_bits(128),
PpcF128 => Size::from_bits(128),
}
Expand All @@ -1416,6 +1432,9 @@ impl Float {
F16 | F16B => dl.f16_align,
F32 => dl.f32_align,
F64 => dl.f64_align,
// Use an alignment of 1 for x87_f80_raw,
// so that its size really is 80 bits in memory.
X87F80 => Align::ONE,
F128 => dl.f128_align,
PpcF128 => dl.f128_align,
}
Expand All @@ -1429,6 +1448,7 @@ impl Float {
F16B => "f16b",
F32 => "f32",
F64 => "f64",
X87F80 => "x87_f80",
F128 => "f128",
PpcF128 => "ppcf128",
}
Expand All @@ -1439,7 +1459,7 @@ impl Float {

match self {
F16 | F32 | F64 | F128 => true,
F16B | PpcF128 => false,
F16B | X87F80 | PpcF128 => false,
}
}
}
Expand All @@ -1465,9 +1485,9 @@ impl Numeric {
match self {
Numeric::Int(_, _) => RegKind::Integer,
Numeric::Float(Float::PpcF128) => RegKind::PpcF128,
Numeric::Float(Float::F16 | Float::F16B | Float::F32 | Float::F64 | Float::F128) => {
RegKind::Float
}
Numeric::Float(
Float::F16 | Float::F16B | Float::F32 | Float::F64 | Float::X87F80 | Float::F128,
) => RegKind::Float,
}
}
}
Expand Down Expand Up @@ -1778,12 +1798,12 @@ impl NumScalableVectors {
NumScalableVectors(1)
}

// Returns `NumScalableVectors` for values of two through eight, which are a valid number of
// fields for a tuple of scalable vectors to have. `1` is a valid value of `NumScalableVectors`
// but not for a tuple which would have a field count.
/// Returns `NumScalableVectors` for values of two through eight, which are a valid number of
/// fields for a tuple of scalable vectors to have. `1` is a valid value of `NumScalableVectors`
/// but not for a tuple which would have a field count.
pub fn from_field_count(count: usize) -> Option<Self> {
match count {
2..8 => Some(NumScalableVectors(count as u8)),
2..=8 => Some(NumScalableVectors(count as u8)),
_ => None,
}
}
Expand Down
5 changes: 0 additions & 5 deletions compiler/rustc_ast_passes/src/ast_validation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ use rustc_abi::{CVariadicStatus, CanonAbi, ExternAbi, InterruptKind};
use rustc_ast::visit::{AssocCtxt, BoundKind, FnCtxt, FnKind, Visitor, walk_list};
use rustc_ast::*;
use rustc_ast_pretty::pprust::{self, State};
use rustc_attr_parsing::validate_attr;
use rustc_data_structures::fx::FxIndexMap;
use rustc_errors::{DiagCtxtHandle, Diagnostic, LintBuffer};
use rustc_feature::Features;
Expand Down Expand Up @@ -1402,10 +1401,6 @@ fn validate_generic_param_order(dcx: DiagCtxtHandle<'_>, generics: &[GenericPara
}

impl Visitor<'_> for AstValidator<'_> {
fn visit_attribute(&mut self, attr: &Attribute) {
validate_attr::check_attr(&self.sess.psess, attr);
}

fn visit_ty(&mut self, ty: &Ty) {
self.visit_ty_common(ty);
self.walk_ty(ty)
Expand Down
2 changes: 2 additions & 0 deletions compiler/rustc_attr_ir/src/lang_items.rs
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,8 @@ language_item_table! {

Complex, sym::complex, complex, Target::Struct, GenericRequirement::Exact(1);
PpcF128, sym::ppcf128, ppcf128, Target::Struct, GenericRequirement::None;
X87F80, sym::x87_f80, x87_f80, Target::Struct, GenericRequirement::None;
X87F80Raw, sym::x87_f80_raw, x87_f80_raw, Target::Struct, GenericRequirement::None;

Deref, kw::Deref, deref_trait, Target::Trait, GenericRequirement::Exact(0);
DerefMut, sym::deref_mut, deref_mut_trait, Target::Trait, GenericRequirement::Exact(0);
Expand Down
16 changes: 15 additions & 1 deletion compiler/rustc_attr_parsing/src/interface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ use crate::diagnostics::ParsedDescription;
use crate::generated::GeneratedAttrState;
use crate::parser::{AllowExprMetavar, ArgParser, PathParser, RefPathParser};
use crate::synthetic::SyntheticAttrState;
use crate::validate_attr::parse_meta;
use crate::{AttributeTemplate, ShouldEmit, diagnostics};

pub struct EmitAttribute(
Expand Down Expand Up @@ -359,7 +360,8 @@ impl<'sess> AttributeParser<'sess> {
n.item.path.segments.iter().map(|seg| seg.ident.name).collect::<Vec<_>>();
let inner_span = lower_span(n.item.span);

if let Some(accept) = ATTRIBUTE_PARSERS.accepters.get(parts.as_slice()) {
let accepter = ATTRIBUTE_PARSERS.accepters.get(parts.as_slice());
if let Some(accept) = accepter {
self.check_attribute_safety(
&attr_path,
inner_span,
Expand Down Expand Up @@ -492,6 +494,18 @@ impl<'sess> AttributeParser<'sess> {

attributes.push(attr);
};

if accepter.is_none()
&& let rustc_ast::AttrArgs::Eq { .. } = n.item.args
{
// All key-value attributes are restricted to meta-item syntax.
match parse_meta(&self.sess.psess, &attr) {
Ok(_) => {}
Err(err) => {
err.emit();
}
}
}
}
}
}
Expand Down
51 changes: 1 addition & 50 deletions compiler/rustc_attr_parsing/src/validate_attr.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
//! Meta-syntax validation logic of attributes for post-expansion.

use std::convert::identity;
use std::slice;

use rustc_ast::SyntheticAttr::CfgAttrTrace;
use rustc_ast::token::Delimiter;
Expand All @@ -12,61 +11,13 @@ use rustc_ast::{
};
use rustc_attr_ir::AttrPath;
use rustc_errors::{Applicability, Diagnostic, PResult};
use rustc_feature::BUILTIN_ATTRIBUTE_SET;
use rustc_lint_defs::builtin::ILL_FORMED_ATTRIBUTE_INPUT;
use rustc_parse::parse_in;
use rustc_session::diagnostics::report_lit_error;
use rustc_session::parse::ParseSess;
use rustc_span::{Span, Symbol, sym};

use crate::{AttributeParser, AttributeTemplate, diagnostics as errors, template};

pub fn check_attr(psess: &ParseSess, attr: &Attribute) {
use ast::SyntheticAttr::*;
match &attr.kind {
AttrKind::Normal(_) => {}
AttrKind::Synthetic(CfgTrace(_) | CfgAttrTrace(_))
| AttrKind::DocComment(..)
| AttrKind::Generated(..) => return,
}

let builtin_attr_info = attr.name().and_then(|name| BUILTIN_ATTRIBUTE_SET.get(&name));

// Check input tokens for built-in and key-value attributes.
if let Some(name) = builtin_attr_info {
if AttributeParser::is_parsed_attribute(slice::from_ref(name)) {
return;
}
match parse_meta(psess, attr) {
// Don't check safety again, we just did that
Ok(meta) => {
// FIXME The only unparsed builtin attributes that are left are the lint attributes, so we can hardcode the template here
let lint_attrs = [sym::forbid, sym::allow, sym::warn, sym::deny, sym::expect];
assert!(lint_attrs.contains(name));

let template = template!(
List: &["lint1", "lint1, lint2, ...", r#"lint1, lint2, lint3, reason = "...""#],
"https://doc.rust-lang.org/reference/attributes/diagnostics.html#lint-check-attributes"
);
check_builtin_meta_item(psess, &meta, attr.style, *name, template, false)
}
Err(err) => {
err.emit();
}
}
} else {
let attr_item = attr.get_normal_item();
if let AttrArgs::Eq { .. } = attr_item.args {
// All key-value attributes are restricted to meta-item syntax.
match parse_meta(psess, attr) {
Ok(_) => {}
Err(err) => {
err.emit();
}
}
}
}
}
use crate::{AttributeTemplate, diagnostics as errors};

pub fn parse_meta<'a>(psess: &'a ParseSess, attr: &Attribute) -> PResult<'a, MetaItem> {
let item = attr.get_normal_item();
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_codegen_cranelift/src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ pub(crate) fn scalar_to_clif_type(tcx: TyCtxt<'_>, scalar: Scalar) -> Type {
Float::F16B => bug!("f16b is not supported by the Cranelift codegen backend"),
Float::F32 => types::F32,
Float::F64 => types::F64,
Float::X87F80 => bug!("cranelift does not support x87 floats"),
Float::F128 => types::F128,
Float::PpcF128 => bug!("cranelift does not support powerpc"),
},
Expand Down
8 changes: 2 additions & 6 deletions compiler/rustc_codegen_cranelift/src/driver/aot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ use rustc_errors::{DiagCtxt, DiagCtxtHandle};
use rustc_middle::dep_graph::WorkProduct;
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
use rustc_middle::mono::{MonoItem, MonoItemData, Visibility};
use rustc_session::config::{OptLevel, OutputFilenames, OutputType};
use rustc_session::config::{OutputFilenames, OutputType};
use rustc_session::{BorrowedIncrCompSession, Session};
use rustc_span::Symbol;

Expand Down Expand Up @@ -318,11 +318,7 @@ impl WriteBackendMethods for AotDriver {
type TargetMachine = ();
type ThinData = Infallible;

fn target_machine_factory(
&self,
_sess: &Session,
_opt_level: OptLevel,
) -> TargetMachineFactoryFn<Self> {
fn target_machine_factory(&self, _sess: &Session) -> TargetMachineFactoryFn<Self> {
Arc::new(|_, _| ())
}

Expand Down
6 changes: 3 additions & 3 deletions compiler/rustc_codegen_gcc/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,7 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
);
return self.context.new_call(self.location, fmodf128, &[a, b]);
}
Some(float @ (abi::Float::F16B | abi::Float::PpcF128)) => {
Some(float @ (abi::Float::F16B | abi::Float::X87F80 | abi::Float::PpcF128)) => {
bug!("frem unsupported on {float:?}")
}
None => (),
Expand Down Expand Up @@ -2022,7 +2022,7 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
abi::Float::F32 => bx.cx().const_u32(bits as u32),
abi::Float::F64 => bx.cx().const_u64(bits as u64),
abi::Float::F128 => bx.cx().const_u128(bits),
abi::Float::F16B | abi::Float::PpcF128 => {
abi::Float::F16B | abi::Float::X87F80 | abi::Float::PpcF128 => {
bug!("unsupported float width {float_type:?}")
}
};
Expand All @@ -2033,7 +2033,7 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
abi::Float::F32 => compute_clamp_bounds::<ieee::Single>(signed, int_width),
abi::Float::F64 => compute_clamp_bounds::<ieee::Double>(signed, int_width),
abi::Float::F128 => compute_clamp_bounds::<ieee::Quad>(signed, int_width),
abi::Float::F16B | abi::Float::PpcF128 => {
abi::Float::F16B | abi::Float::X87F80 | abi::Float::PpcF128 => {
bug!("unsupported float width {float_type:?}")
}
};
Expand Down
Loading
Loading