[flang-commits] [flang] [flang][driver] Improve diagnostic for assembly inputs (PR #174316)

via flang-commits flang-commits at lists.llvm.org
Sat Jan 3 23:35:30 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-driver

Author: Soumik Kumar Basu (soumikiith)

<details>
<summary>Changes</summary>

This PR improves the error message when assembly files are passed to the Flang driver.

## Current Behavior
```
$ flang test.s
error: unknown integrated tool '-cc1as'. Valid tools include '-fc1'.
```

## New Behavior
```
$ flang test.s
error: flang does not support assembly files as input
```

## Changes
- Modified the driver to detect assembly file extensions early
- Added a clear, helpful error message
- Added test coverage for the new error message

Fixes #<!-- -->173528

---
Full diff: https://github.com/llvm/llvm-project/pull/174316.diff


2 Files Affected:

- (added) flang/test/Driver/asm-error-fix.s (+9) 
- (modified) flang/tools/flang-driver/driver.cpp (+21) 


``````````diff
diff --git a/flang/test/Driver/asm-error-fix.s b/flang/test/Driver/asm-error-fix.s
new file mode 100644
index 0000000000000..d9d5d444bd698
--- /dev/null
+++ b/flang/test/Driver/asm-error-fix.s
@@ -0,0 +1,9 @@
+! Test that flang rejects assembly files as input
+
+! RUN: not %flang -c %s 2>&1 | FileCheck %s
+
+! CHECK: error: flang does not accept assembly code
+
+.globl foo
+foo:
+  ret
diff --git a/flang/tools/flang-driver/driver.cpp b/flang/tools/flang-driver/driver.cpp
index 0840255a739f3..136922cceff0d 100644
--- a/flang/tools/flang-driver/driver.cpp
+++ b/flang/tools/flang-driver/driver.cpp
@@ -147,6 +147,27 @@ int main(int argc, const char **argv) {
   llvm::SmallVector<std::pair<int, const clang::driver::Command *>, 4>
       failingCommands;
 
+  for (const auto &job : c->getJobs()) {
+    const auto *cmd = llvm::dyn_cast<clang::driver::Command>(&job);
+    if (!cmd)
+      continue;
+      
+    for (const clang::driver::InputInfo &inputInfo : cmd->getInputInfos()) {
+      clang::driver::types::ID type = inputInfo.getType();
+      
+      if (type == clang::driver::types::TY_Asm ||
+          type == clang::driver::types::TY_PP_Asm) {
+        
+        diags.Report(diags.getCustomDiagID(
+            clang::DiagnosticsEngine::Error,
+            "flang does not accept assembly code"))
+            << inputInfo.getAsString();
+            
+        return 1;
+      }
+    }
+  }
+
   // Set the environment variable, FLANG_COMPILER_OPTIONS_STRING, to contain all
   // the compiler options. This is intended for the frontend driver,
   // flang -fc1, to enable the implementation of the COMPILER_OPTIONS

``````````

</details>


https://github.com/llvm/llvm-project/pull/174316


More information about the flang-commits mailing list