awarzynski added inline comments.
================
Comment at: flang/lib/Frontend/CompilerInvocation.cpp:254
+ if (args.hasArg(clang::driver::options::OPT_fdefault_real_8))
+ res.defaultKinds().set_defaultRealKind(8);
+ if (args.hasArg(clang::driver::options::OPT_fdefault_integer_8)) {
----------------
arnamoy10 wrote:
> awarzynski wrote:
> > From `gfortran` [[
> > https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html |
> > documentation ]]:
> >
> > ```
> > This option promotes the default width of DOUBLE PRECISION and double real
> > constants like 1.d0 to 16 bytes if possible.
> > ```
> >
> > So I believe that you are missing:
> > ```
> > res.defaultKinds().set_doublePrecisionKind(16);
> > ```
> I thought it is not necessary because `doublePrecisionKind` is automatically
> initialized to double the size of `defaultRealKind_` in [[
> https://github.com/llvm/llvm-project/blob/adfd3c7083f9808d145239153c10f72eece485d8/flang/include/flang/Common/default-kinds.h#L51-L58
> | here ]]--> `int doublePrecisionKind_{2 * defaultRealKind_};`.
>
>
Yes, but the default value for `defaultRealKind_` is 4 and here you are setting
it to 8. So, correct me if I'm wrong, but when the driver is here, the
following has happened:
```
int defaultIntegerKind_{4};
int defaultRealKind_{defaultIntegerKind_};
int doublePrecisionKind_{2 * defaultRealKind_};
```
So `dublePrecisionKind_` is 8 rather than 16.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96344/new/
https://reviews.llvm.org/D96344
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits