Skip to content

r291677 breaks AEABI comparison function on hard FP targets #33515

@asl

Description

@asl
Bugzilla Link 34167
Resolution FIXED
Resolved on Aug 23, 2017 14:39
Version unspecified
OS All
Blocks #32377 #33196
CC @asl,@compnerd,@zmodem

Extended Description

r291677 changes the calling convention of compiler builtin function on hard FP targets. However, it seems that not all AEABI builtins were updated for this new CC.

Consider __aeabi_fcmpeq. It received the arguments, as it should,
using the AAPCS calling convention in r0/r1, then __aeabi_fcmpeq directly calls __eqsf2. But on HF target we'll end with __eqsf2 that expects to receive arguments in s0/s1 and latter does:

+#if defined(COMPILER_RT_ARMHF_TARGET)

  • vmov r0, s0
  • vmov r1, s1
    +#endif

trashing the contents of r0/r1 with whatever values were in s0/s1.

This affects both ToT, 4.0 and 5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions