[PATCH] D26955: Fix bitwidth for x87 extended-precision floating-point type

Eli Friedman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 28 13:53:44 PST 2016


efriedma added inline comments.


================
Comment at: lib/Basic/TargetInfo.cpp:229
   switch (BitWidth) {
-  case 96:
+  case 80:
     if (&getLongDoubleFormat() == &llvm::APFloat::x87DoubleExtended)
----------------
ddcc wrote:
> bruno wrote:
> > The change makes sense but I believe there's some historical reason why this is 96 instead of 80? What problem have you found in practice? Do you have a testcase or unittest that exercise the issue (and that could be added to the patch)?
> I'd be curious why it was historically set to 96; I dug up rL190044 as the original commit, but it doesn't mention 80 vs 96 for this at all.
> 
> I've been implementing an alternative symbolic constraint solver backend for the static analyzer, including floating-point support, which performs some type conversion and needs to reason about bitwidth. I'm still working on those patches, since they touch a lot of code and currently break some tests. I can write up a testcase for this issue, though I've only written IR testcases before and I'm not sure how I'd directly call a clang internal function?
It was set to 96 because that's what the only caller (handleModeAttr) expects; see https://reviews.llvm.org/rL65935 and https://reviews.llvm.org/rL190926.  It's arbitrary as far as I know.


https://reviews.llvm.org/D26955





More information about the cfe-commits mailing list