diff options
-rwxr-xr-x | lib/spack/env/cc | 8 | ||||
-rw-r--r-- | lib/spack/spack/test/cc.py | 9 |
2 files changed, 13 insertions, 4 deletions
diff --git a/lib/spack/env/cc b/lib/spack/env/cc index 4d8c4644cb..bd479f05ec 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -319,11 +319,13 @@ while [ $# -ne 0 ]; do fi ;; -l*) - # -loopopt=0 is passed to the linker erroneously in - # autoconf <= 2.69. Filter it out. + # -loopopt=0 is generated erroneously in autoconf <= 2.69, + # and passed by ifx to the linker, which confuses it with a + # library. Filter it out. # TODO: generalize filtering of args with an env var, so that # TODO: we do not have to special case this here. - if [ "$mode" = "ld" ] && [ "$1" != "${1#-loopopt}" ]; then + if { [ "$mode" = "ccld" ] || [ $mode = "ld" ]; } \ + && [ "$1" != "${1#-loopopt}" ]; then shift continue fi diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index fa61a5e9e6..20ec946835 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -632,7 +632,14 @@ def test_linker_strips_loopopt(wrapper_flags): result = result.strip().split('\n') assert '-loopopt=0' not in result - # ensure that -loopopt=0 is present in compile mode + # ensure that -loopopt=0 is not present in ccld mode result = cc(*(test_args + ["-loopopt=0"]), output=str) result = result.strip().split('\n') + assert '-loopopt=0' not in result + + # ensure that -loopopt=0 *is* present in cc mode + # The "-c" argument is needed for cc to be detected + # as compile only (cc) mode. + result = cc(*(test_args + ["-loopopt=0", "-c", "x.c"]), output=str) + result = result.strip().split('\n') assert '-loopopt=0' in result |