-
-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Inlining + target_feature broken in powerpc64 #60637
Copy link
Copy link
Closed
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-SIMDArea: SIMD (Single Instruction Multiple Data)Area: SIMD (Single Instruction Multiple Data)C-bugCategory: This is a bug.Category: This is a bug.O-PowerPCTarget: PowerPC processorsTarget: PowerPC processorsT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Metadata
Metadata
Assignees
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-SIMDArea: SIMD (Single Instruction Multiple Data)Area: SIMD (Single Instruction Multiple Data)C-bugCategory: This is a bug.Category: This is a bug.O-PowerPCTarget: PowerPC processorsTarget: PowerPC processorsT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Type
Fields
Give feedbackNo fields configured for issues without a type.
godbolt
with
#[inline]that code produces a function call withinsplat_u32x4(b example::u32x4::splat) tou32x4::splat, which is not eliminated, even though this method is module private. With#[inline(always)],u32x4::splatis inlined intosplat_u32x4, and no code foru32x4::splatis generated.#[inline]should not be needed here, much less#[inline(always)], yet without#[inline(always)]this produces bad codegen.Removing the
#[target_feature]attribute fromsplat_u32x4fixes the issue, no#[inline]necessary: godbolt. So there must be some interaction between inlining and target features going on here.