diff options
author | Pete Steinfeld <47540744+psteinfeld@users.noreply.github.com> | 2024-02-26 14:29:49 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-26 14:29:49 -0800 |
commit | 796d26a37d70374e41766df659700a826dc62e34 (patch) | |
tree | c3f48b82d0fd545311e743218594966e52fc14c5 /clang/lib/CodeGen/CoverageMappingGen.cpp | |
parent | e87724560f5f155e662cbdda17409361b98d42d6 (diff) | |
download | llvm-796d26a37d70374e41766df659700a826dc62e34.zip llvm-796d26a37d70374e41766df659700a826dc62e34.tar.gz llvm-796d26a37d70374e41766df659700a826dc62e34.tar.bz2 |
[flang] Fix ISO_Fortran_binding.h to work better with C++ code (#82556)
[flang] Fix ISO_Fortran_binding.h to work better with C++ code
This stems from working on LANL's "dopey" project --
https://github.com/lanl/dopey.
That project contains C++ code which includes the header file
"ISO_Fortran_binding.h". The dopey code wraps that include with an
'extern "C"' clause since the standard (18.5.1, paragraph 1) says that
the file" shall contain C structure definitions, typedef declarations,
...". But the clang++ compiler emits error messages objecting to the
fact that ISO_Fortran_binding.h contains templates.
This change fixes that by preceding the problematic code in
ISO_Fortran_binding.h with language linkage clauses that specify that
they contain C++ code rather than C code.
In the accompanying test, I needed to account for the fact that some
people build the compiler by doing a `make check-flang`. In this case,
the clang compiler which is required by the test will not be built.
Here's an example of a C++ program that shows the problem:
```
extern "C" {
#include "ISO_Fortran_binding.h"
}
int main() {
return 0;
}
```
Diffstat (limited to 'clang/lib/CodeGen/CoverageMappingGen.cpp')
0 files changed, 0 insertions, 0 deletions