Bug in GCC 7.1?

Marc Glisse marc.glisse@inria.fr
Fri May 5 09:51:00 GMT 2017


(I think you are looking for gcc-help@gcc.gnu.org, or gcc's bugzilla, 
rather than this mailing list)

On Fri, 5 May 2017, Helmut Zeisel wrote:

> The following program gives a warning under GCC 7.1 (built on cygwin, 64 bit)
>
> #include <vector>
> int main()
> {
>    std::vector<int> c {1,2,3,0};
>    while(c.size() > 0 && c.back() == 0)
>    {
>        auto sz = c.size() -1;
>        c.resize(sz);
>    }
>    return 0;
> }
>
> $ c++7.1 -O3 tt.cxx

Please use
$ LC_ALL=C c++7.1 -O3 tt.cxx
when you want to post the result, unless you are sending to a German 
forum.

> In Funktion »int main()«:
> cc1plus: Warnung: »void* __builtin_memset(void*, int, long unsigned int)«: angegebene Größe 18446744073709551612 überschreitet maximale Objektgröße 9223372036854775807 [-Wstringop-overflow=]
>
> Compiling with GCC 6.1 (c++6.1 -O3 tt.cxx) works fine.
>
> Is this a problem of my program or a problem of GCC 7.1?

Sounds like a problem with gcc, maybe optimization creates a path that 
corresponds to size==0 and fails to notice that it cannot be taken.

-- 
Marc Glisse



More information about the Gcc mailing list