Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pveclib: FTBFS in Fedora rawhide/f37 #169

Open
munroesj52 opened this issue Sep 4, 2022 · 0 comments · Fixed by #170
Open

pveclib: FTBFS in Fedora rawhide/f37 #169

munroesj52 opened this issue Sep 4, 2022 · 0 comments · Fixed by #170

Comments

@munroesj52
Copy link
Contributor

munroesj52 commented Sep 4, 2022

https://bugzilla.redhat.com/show_bug.cgi?id=2113609
The switch to GCC-12 exposed some latent issues in pveclib-1.0.4-4

  1. The (accidental) typedef of __float128 over __ieee128 and the cast
    of (vector unsigned int *) constants to (vector unsigned __int128 *)
    seems to violate strict-aliasing. But this is not reported unless
    -Wstrict-aliasing=2 is used. The result was silently generating
    incorrect code. In this case required computation was treated as
    dead code and eliminated. Returning incorrect results.
    GCC PR 106755.

  2. GCC-12 corrected a long latent problem with vec_cpsgn
    (swapped operands). PVECLIB followed the implementation from
    previous GCC versions (GCC <= 11). This broke vector float/double
    unit tests. GCC PR 101984.

  3. The implementation of IEEE Float128 is evolving and various types
    (__float128, __ieee128, _Float128, ...) are highly dependent on the
    compiler version/options used. The implementation tries (again) to
    #define/typedef __binary128 to the float128 type that the compiler
    supports. The API uses __binary128 and avoids _Float128.

    • src/pveclib/vec_f128_ppc.h (__binary128): Define/typedef to
      the quad-precision float type that the compiler supports.

    • src/pveclib/vec_f32_ppc.h (vec_copysignf32):
      Unless PVECLIB_CPSGN_FIXED is defined, avoid vec_cpsgn.

    • src/pveclib/vec_f64_ppc.h (vec_copysignf64):
      Unless PVECLIB_CPSGN_FIXED is defined, avoid vec_cpsgn.

    • src/testsuite/arith128_test_f32.c (test_float_cpsgn):
      Swap operands/results to match GCC12.

    • src/testsuite/arith128_test_f64.c (test_double_cpsgn):
      Swap operands/results to match GCC12.

    • src/testsuite/arith128_test_i128.c (test_muludq):
      Change local variable 'l' type to match vec_muludq parameter.
      (test_madduq)
      Change local variable 'l' type to match vec_madduq parameter.

    • src/testsuite/vec_f128_dummy.c: Replace all usage of type
      __Float128 with __binary128.

@munroesj52 munroesj52 linked a pull request Sep 16, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant