On Thu, Aug 8, 2024 at 6:11 AM Prathamesh Kulkarni <prathame...@nvidia.com> wrote: > > Hi Richard, > After differing NUM_POLY_INT_COEFFS fix for AArch64/nvptx offloading, the > following minimal test: > > int main() > { > int x; > #pragma omp target map(x) > x = 5; > return x; > } > > compiled with -fopenmp -foffload=nvptx-none now fails with: > gcc: error: unrecognized command-line option '-m64' > nvptx mkoffload: fatal error: ../install/bin/gcc returned 1 exit status > compilation terminated. > > As mentioned in RFC email, this happens because > nvptx/mkoffload.cc:compile_native passes -m64/-m32 to host compiler depending > on whether > offload_abi is OFFLOAD_ABI_LP64 or OFFLOAD_ABI_ILP32, and aarch64 backend > doesn't recognize these options. > > Based on your suggestion in: > https://gcc.gnu.org/pipermail/gcc/2024-July/244470.html, > The attached patch generates new macro HOST_MULTILIB derived from > $enable_as_accelerator_for, and in mkoffload.cc it gates passing -m32/-m64 > to host_compiler on HOST_MULTILIB. I verified that the macro is set to 0 for > aarch64 host (and thus avoids above unrecognized command line option error), > and is set to 1 for x86_64 host. > > Does the patch look OK ?
Note I think the usage of the name MULTILIB here is wrong because aarch64 (and riscv) could have MUTLILIB support just the options are different. For aarch64, it would be -mabi=ilp32/-mabi=lp64 (riscv it is more complex). This most likely should be something more complex due to the above. Maybe call it HOST_64_32 but even that seems wrong due to Aarch64 having ILP32 support and such. What about HOST_64ABI_OPTS="-mabi=lp64"/HOST_32ABI_OPTS="-mabi=ilp32" but I am not sure if that would be enough to support RISCV which requires two options. Thanks, Andrew Pinski > > Signed-off-by: Prathamesh Kulkarni <prathame...@nvidia.com> > > Thanks, > Prathamesh