[Clang][LoongArch] Pass the -mabi and -target-abi options to as and cc1as respectively
authorWeining Lu <luweining@loongson.cn>
Tue, 16 May 2023 09:43:59 +0000 (17:43 +0800)
committerWeining Lu <luweining@loongson.cn>
Tue, 16 May 2023 13:10:15 +0000 (21:10 +0800)
commitddb27b1870691595173608ce0c4a0c70ad16513d
tree5349dd65e31fb98bbb2ab212f386588854ede061
parent2cf0314029804ab467517b390f0fa2a48a34dbe7
[Clang][LoongArch] Pass the -mabi and -target-abi options to as and cc1as respectively

This change is necessary to set correct EFlags according to the
options (-m*-float and -mabi=) passed to clang when input is assembly.

Note: `-mabi=` is not documented by `as`.
```
$ as --version
GNU assembler (GNU Binutils) 2.40.50.20230316
...
$ as --target-help
LARCH options:
```

But we can see gcc invokes `as` and passes the `-mabi=` option when compiling C or assembly.
```
$ gcc -c a.c -v 2>&1 -msoft-float | grep "as -v"
 as -v -mabi=lp64s -o a.o /tmp/ccFrxzZi.s
$ gcc -c a.s -v 2>&1 -msoft-float | grep "as -v"
 as -v -mabi=lp64s -o a.o a.s
```

Reviewed By: xen0n

Differential Revision: https://reviews.llvm.org/D150537
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/Clang.h
clang/lib/Driver/ToolChains/Gnu.cpp
clang/test/Driver/loongarch-as.s [new file with mode: 0644]
clang/test/Driver/loongarch-ias.s [new file with mode: 0644]