From e6c8fa131109d52ea4c7f06b11344b0e93b49a77 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Wed, 17 Mar 2021 20:36:25 +0530 Subject: aocc: add support for v3.0 compilers (#22219) A mitigation of a known issue that affects v3.0 is added, see https://developer.amd.com/wp-content/resources/AOCC-3.0-Install-Guide.pdf --- lib/spack/spack/compilers/aocc.py | 20 ++++++++++++++++++++ lib/spack/spack/test/compilers/basics.py | 4 ++++ lib/spack/spack/test/compilers/detection.py | 5 +++++ 3 files changed, 29 insertions(+) (limited to 'lib') diff --git a/lib/spack/spack/compilers/aocc.py b/lib/spack/spack/compilers/aocc.py index 725767b212..f16d9c285c 100644 --- a/lib/spack/spack/compilers/aocc.py +++ b/lib/spack/spack/compilers/aocc.py @@ -9,6 +9,7 @@ import sys import llnl.util.lang from spack.compiler import Compiler +from spack.version import ver class Aocc(Compiler): @@ -118,3 +119,22 @@ class Aocc(Compiler): @property def stdcxx_libs(self): return ('-lstdc++', ) + + @property + def cflags(self): + return self._handle_default_flag_addtions() + + @property + def cxxflags(self): + return self._handle_default_flag_addtions() + + @property + def fflags(self): + return self._handle_default_flag_addtions() + + def _handle_default_flag_addtions(self): + # This is a known issue for AOCC 3.0 see: + # https://developer.amd.com/wp-content/resources/AOCC-3.0-Install-Guide.pdf + if self.real_version == ver('3.0.0'): + return ("-Wno-unused-command-line-argument " + "-mllvm -eliminate-similar-expr=false") diff --git a/lib/spack/spack/test/compilers/basics.py b/lib/spack/spack/test/compilers/basics.py index 005000fdcb..553d89ecac 100644 --- a/lib/spack/spack/test/compilers/basics.py +++ b/lib/spack/spack/test/compilers/basics.py @@ -466,6 +466,10 @@ def test_aocc_flags(): supported_flag_test("f77_pic_flag", "-fPIC", "aocc@2.2.0") supported_flag_test("fc_pic_flag", "-fPIC", "aocc@2.2.0") supported_flag_test("version_argument", "--version", "aocc@2.2.0") + flg = "-Wno-unused-command-line-argument -mllvm -eliminate-similar-expr=false" + supported_flag_test("cflags", flg, "aocc@3.0.0") + supported_flag_test("cxxflags", flg, "aocc@3.0.0") + supported_flag_test("fflags", flg, "aocc@3.0.0") def test_fj_flags(): diff --git a/lib/spack/spack/test/compilers/detection.py b/lib/spack/spack/test/compilers/detection.py index e68c54c6ff..1736f47ee5 100644 --- a/lib/spack/spack/test/compilers/detection.py +++ b/lib/spack/spack/test/compilers/detection.py @@ -321,6 +321,11 @@ def test_cray_frontend_compiler_detection( @pytest.mark.parametrize('version_str,expected_version', [ # This applies to C,C++ and FORTRAN compiler + ('AMD clang version 12.0.0 (CLANG: AOCC_3.0.0-Build#78 2020_12_10)' + '(based on LLVM Mirror.Version.12.0.0)\n' + 'Target: x86_64-unknown-linux-gnu\n' + 'Thread model: posix\n', '3.0.0' + ), ('AMD clang version 11.0.0 (CLANG: AOCC_2.3.0-Build#85 2020_11_10)' '(based on LLVM Mirror.Version.11.0.0)\n' 'Target: x86_64-unknown-linux-gnu\n' -- cgit v1.2.3-60-g2f50