[Bug target/121696] New: __VSX__ is defined on Darwin, where it cannot possibly be supported
vital.had at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Aug 27 19:06:01 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121696
Bug ID: 121696
Summary: __VSX__ is defined on Darwin, where it cannot possibly
be supported
Product: gcc
Version: 14.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: vital.had at gmail dot com
CC: iains at gcc dot gnu.org, pinskia at gcc dot gnu.org
Target Milestone: ---
Target: powerpc*-apple-darwin
Could someone say why we have `__VSX__` defined on powerpc*-apple-darwin? I
keep bumping into breakages since everyone – IMO, quite naturally – assumes
that `#ifdef __VSX__` ensures that the code is only used where VSX insns are
supported. However, it is not the case, apparently.
Example with Eigen: https://gitlab.com/libeigen/eigen/-/merge_requests/1150
An issue I ran into right now, where using `#if !defined(__VSX__)` did not work
as I would expect, and I had to explicitly use `#if !defined(__APPLE__)`:
https://github.com/barracuda156/highwayhash/commit/846fc621842037f13d5d74a5c770f7be9ae038e2
I think there were some other cases. Is this a bug or something by design?
It also doesn’t help that gcc error messages are somewhat misleading,
suggesting compilation with `-mvsx`, which won’t work where insns aren’t
recognized to begin with.
More information about the Gcc-bugs
mailing list