Issue 184802
Summary [flang] Issue with save-temps and labels in certain columns
Labels flang
Assignees
Reporter mathomp4
    ## Summary

In testing some code with Flang 22, I encountered an issue with `-save-temps`. Well, first I found #119624 (fixing #58587) telling me I had to also add `-fno-integrated-as` to use it. But after that, my code kept randomly failing on valid Fortran.

Essentially, when compiling free-form Fortran code with `flang`, enabling `-save-temps` (or `-save-temps=obj` / `-save-temps=cwd`) can cause an indented statement label to be lost *depending on the number of spaces in the indent*, producing:

```
error: Label '101' was not found
```

The same source compiles successfully without `-save-temps`.

---

## Compiler Version

```
> flang --version
flang version 22.1.0 ([email protected]:GEOS-ESM/build-llvm-flang.git 337c2cab67836c0beb2910664cf02d1df1e27609)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /gpfsm/dnb10/projects/p50/comp/SLES-15/llvm-flang/22.1.0/bin
```

---

## Minimal Reproducer

```fortran
write(*, fmt=101) 12
    101 format(i0)
end
```

Note that the label `101` is indented (four leading spaces), which is valid in free-form Fortran.

---

## Commands

Baseline (works):

```
flang -O0 -g -c repro.F90
```

With `-save-temps` (fails):

```
flang -O0 -g -fno-integrated-as -save-temps=obj -c repro.F90
```

Error:

```
> flang -O0 -g -fno-integrated-as -save-temps repro.F90
error: Semantic errors in repro.i
./repro.F90:1:7: error: Label '101' was not found
        write(*, fmt=101) 12
        ^^^^^^^^^^^^^^^^^^^^
```

---

## Additional Observations

The failure depends on the indentation of the statement label. Using a small script (see https://gist.github.com/mathomp4/b073a15ca4eaea4bdcc0cad00266cadb) to generate different indent levels produced the following results:

```
> ./run_indent_matrix.sh
spaces | label_col  | rc   | result
-------+------------+------+------------------------------
0      | 1          | 0    | OK
1      | 2          | 0    | OK
2      | 3 | 0    | OK
3      | 4          | 1    | FAIL: label 101 not found
4      | 5          | 1    | FAIL: label 101 not found
5      | 6          | 1    | FAIL: error: Could not parse obj/repro_indent_5.i
6      | 7          | 0 | OK
7      | 8          | 0    | OK
8      | 9          | 0    | OK

Wrote:
  Sources/logs: obj/repro_indent_*.F90 / .log
  Table TSV: obj/results.tsv
```

_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to