llvm-project/flang/test/Driver/parse-error.ll
Andrzej Warzynski 3e782ba21b [flang][driver] Fix support for -x
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
2022-06-10 10:36:25 +00:00

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
}