This patch make __float128/long double(128bits) passed on the stack with 16-byte alignment, according to i386 System V ABI.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
| clang/lib/CodeGen/TargetInfo.cpp | ||
|---|---|---|
| 1603 | I don't think this should be restricted to just Linux. It's a fix for all OSes that support __float128, i.e. Haiku, Linux, OpenBSD, and Solaris. It would be better to check the floating-point semantics rather than relying on the type size, since the type size could easily be rounded up to 128 for alignment reasons. Should this also apply to structs containing __float128, the same way that SIMD does below? | |
clang-format: please reformat the code
- : SwiftABIInfo(CGT), IsDarwinVectorABI(DarwinVectorABI), - IsRetSmallStructInRegABI(RetSmallStructInRegABI), - IsWin32StructABI(Win32StructABI), - IsSoftFloatABI(SoftFloatABI), - IsMCUABI(CGT.getTarget().getTriple().isOSIAMCU()), - IsLinuxABI(CGT.getTarget().getTriple().isOSLinux()), - DefaultNumRegisterParameters(NumRegisterParameters) {} + : SwiftABIInfo(CGT), IsDarwinVectorABI(DarwinVectorABI), + IsRetSmallStructInRegABI(RetSmallStructInRegABI), + IsWin32StructABI(Win32StructABI), IsSoftFloatABI(SoftFloatABI),3 diff lines are omitted. See full path.