-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[flang] Add flag to disable Float128 runtime #110116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We check for F128 in other places too. See #106957
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was sort of just trying to get this as a quick fix for building the runtime. I think fixing up all the warnings etc might be a bit more effort.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess it is okay as an engineering temporary switch, but, in general, uncoordinated settings for float128 math for the compiler driver and runtime may result in completely unsuable driver, e.g. if Float128Math is packaged as a separate library (rather than as part of FortranRuntime) then the driver will try to link it always, so it has to be built during the runtime build. As I uderstand this is not your case, and Float128Math is a part of FortranRuntime (except that it does not build at all due to missing
ynl
).If
ynl
is the only missing piece in those configurations, you can try to ifdefDEFINE_SIMPLE_ALIAS(Yn, ynl)
inmath-entries.h
for those targets. The library will compile, but there will be a runtime error if a program usesbessel_yn
forreal(16)
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I understand it, we currently check if the libc has float 128 support by checking if
LDBL_MANT_DIG
has a certain value. The issue I guess is that that's sufficient for checking that libc will provide float 128 support for the standard libc functions, butynl
is a glibc-only function.I think it'd be nice if we could have this support everywhere that does have float128 not just glibc; could we maybe re-use the implementation from llvm/libc++ somehow without introducing a runtime dependency on the system c++ library? And possibly the same for any other glibc-specific functions that might be being used (I haven't checked for others)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or I suppose if there are no targets on which we expect float128 to be available but not a C++ standard library, could we introduce a dependency on the system c++ library just for float128 support?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should use
#if defined(__GLIBC__) && defined(_GNU_SOURCE)
for defining the simple alias forynl
.Regarding adding dependency on the C++ library, I think we want to avoid this for
FortranRuntime
, in general. When float128 support is enabled vialibc
, the float128 math functions are actually a part ofFortranRuntime
and so using libc++ would break this "rule".There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll try that as a fix instead and see what happens. If it works I can open another PR and close this one.
ynl
might not be the only glibc-specific function though.