[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with c
From: |
Markus Mützel |
Subject: |
[Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang |
Date: |
Wed, 23 Mar 2022 10:25:50 -0400 (EDT) |
URL:
<https://savannah.gnu.org/bugs/?62212>
Summary: Wrong unsigned integer overflow with clang
Project: GNU Octave
Submitted by: mmuetzel
Submitted on: Wed 23 Mar 2022 03:25:47 PM CET
Category: None
Severity: 3 - Normal
Priority: 5 - Normal
Item Group: Incorrect Result
Status: None
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Release: dev
Discussion Lock: Any
Operating System: Any
_______________________________________________________
Details:
I mainly open this report to get a bug number to tag failing tests with clang
(at least version 13).
This can lead to incorrect range operator results for corner case inputs.
Other places in the code might also be affected.
"Minimal" reproducer:
#include <cmath>
#include <iostream>
int main (void)
{
double db_large_integer = std::pow (2., 64.);
std::cout << "db_large_integer: " << db_large_integer << std::endl;
uint64_t ui64_large_integer = db_large_integer;
std::cout << "ui64_large_integer: " << ui64_large_integer << std::endl;
return 0;
}
With Ubuntu 21.10:
$ g++ --version
g++ (Ubuntu 11.2.0-7ubuntu2) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++ -otest_cast test_cast.cc
$ ./test_cast
db_large_integer: 1.84467e+19
ui64_large_integer: 0
$ clang++ --version
Ubuntu clang version 13.0.0-2
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$ clang++ -otest_cast test_cast.cc
$ ./test_cast
db_large_integer: 1.84467e+19
ui64_large_integer: 9223372036854775808
IIUC, the overflow behavior of unsigned integers is defined in the standard.
Afaict, gcc gets the correct answer, clang doesn’t.
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?62212>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang,
Markus Mützel <=
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Markus Mützel, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Arun Giridhar, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Arun Giridhar, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Markus Mützel, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Markus Mützel, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Markus Mützel, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Markus Mützel, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Arun Giridhar, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, Markus Mützel, 2022/03/23
- [Octave-bug-tracker] [bug #62212] Wrong unsigned integer overflow with clang, John W. Eaton, 2022/03/23