Until now, `-x` wasn't really taken into account in Flang's compiler and frontend drivers. `flang-new` and `flang-new -fc1` only recently gained powers to consume inputs other than Fortran files and that's probably why this hasn't been noticed yet. This patch makes sure that `-x` is supported correctly and consistently with Clang. To this end, verification is added when reading LLVM IR files (i.e. IR modules are verified with `llvm::verifyModule`). This way, LLVM IR parsing errors are correctly reported to Flang users. This also aids testing. With the new functionality, we can verify that `-x ir` breaks compilation for e.g. Fortran files and vice-versa. Tests are updated accordingly. Differential Revision: https://reviews.llvm.org/D127207
24 lines
832 B
LLVM
24 lines
832 B
LLVM
; This file is a valid LLVM IR file, but we force the driver to treat it as
|
|
; Fortran (with the `-x` flag). This way we verify that the driver
|
|
; correctly rejects invalid Fortran input.
|
|
|
|
;----------
|
|
; RUN LINES
|
|
;----------
|
|
; Input type is implicit (correctly assumed to be LLVM IR)
|
|
; RUN: %flang_fc1 -S %s -o -
|
|
|
|
; Input type is explicitly set as Fortran
|
|
; Verify that parsing errors are correctly reported by the driver
|
|
; Focuses on actions inheriting from the following:
|
|
; * PrescanAndSemaAction (-fsyntax-only)
|
|
; * PrescanAndParseAction (-fdebug-unparse-no-sema)
|
|
; RUN: not %flang_fc1 -fdebug-unparse-no-sema -x f95 %s 2>&1 | FileCheck %s --check-prefix=ERROR
|
|
; RUN: not %flang_fc1 -fsyntax-only %s -x f95 2>&1 | FileCheck %s --check-prefix=ERROR
|
|
|
|
; ERROR: Could not parse {{.*}}parse-error.f95
|
|
|
|
define void @foo() {
|
|
ret void
|
|
}
|