From 377787e3c80a4650dcd8ebd80de5f805cc1c4b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=A4rtens?= Date: Sat, 6 May 2023 11:57:21 +0200 Subject: [PATCH] avoid: ``` PHI nodes not grouped at top of basic block! %246 = phi <4 x float> [ , %114 ], [ %241, ], !dbg !961029 label %243 in function _ZN14veloren_common4comp9inventory4item7modular11ModularBase4kind17h0950571ff74739d8E LLVM ERROR: Broken function found, compilation aborted! ``` --- common/src/comp/inventory/item/modular.rs | 32 +++++++++-------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/common/src/comp/inventory/item/modular.rs b/common/src/comp/inventory/item/modular.rs index da29ede36a..872b84c213 100644 --- a/common/src/comp/inventory/item/modular.rs +++ b/common/src/comp/inventory/item/modular.rs @@ -105,24 +105,6 @@ impl ModularBase { msm: &MaterialStatManifest, durability_multiplier: DurabilityMultiplier, ) -> Cow { - fn resolve_stats( - components: &[Item], - msm: &MaterialStatManifest, - durability_multiplier: DurabilityMultiplier, - ) -> tool::Stats { - components - .iter() - .filter_map(|comp| { - if let ItemKind::ModularComponent(mod_comp) = &*comp.kind() { - mod_comp.tool_stats(comp.components(), msm) - } else { - None - } - }) - .fold(tool::Stats::one(), |a, b| a * b) - * durability_multiplier - } - let toolkind = components .iter() .find_map(|comp| match &*comp.kind() { @@ -134,11 +116,23 @@ impl ModularBase { }) .unwrap_or(ToolKind::Empty); + let stats: tool::Stats = components + .iter() + .filter_map(|comp| { + if let ItemKind::ModularComponent(mod_comp) = &*comp.kind() { + mod_comp.tool_stats(comp.components(), msm) + } else { + None + } + }) + .fold(tool::Stats::one(), |a, b| a * b) + * durability_multiplier; + match self { ModularBase::Tool => Cow::Owned(ItemKind::Tool(Tool::new( toolkind, Self::resolve_hands(components), - resolve_stats(components, msm, durability_multiplier), + stats, ))), } }