Paranoider Deutschenmoerder kommt in Psychiatrie

2005-05-15 Thread wsf
Lese selbst:
http://brandenburg.rz.fhtw-berlin.de/poetschke.html


[Bug c++/44920] New: const rvalue cast results in internal compiler error

2010-07-12 Thread wsf at fultondesigns dot co dot uk
>Submitter-Id:net
>Originator:William S Fulton
>Organization:
>Confidential:no
>Synopsis:const rvalue cast results in internal compiler error
>Severity:serious
>Priority:medium
>Category:
>Class:ice-on-legal-code
>Release:gcc-4.5 (GCC) 4.5.0
>Environment:
System: Linux caracal 2.6.27-16-generic #1 SMP Tue Dec 1 17:56:54 UTC 2009 i686
GNU/Linux

host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ./configure --program-suffix=-4.5
>Description:
A rvalue cast involving a const gives internal compiler error
>How-To-Repeat:
$ g++-4.5 -E -std=gnu++0x runme.cxx
# 1 "runme.cxx"
# 1 ""
# 1 ""
# 1 "runme.cxx"

class A {
public:
  void set(const int &&a) {
_a = a;
  }

private:
  int _a;
};

template T Copy(const T& t) {
return T(t);
};

void doit() {
  A a;
  A *arg1 = (A *) &a;
  int arg2 = 0 ;


  (arg1)->set((const int&&)Copy(arg2));
}

int main ()
{
doit();
return 0;
}

$ g++-4.5 -std=gnu++0x runme.cxx
runme.cxx: In function ‘void doit()’:
runme.cxx:22:48: internal compiler error: in cp_build_c_cast, at
cp/typeck.c:6308
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

>Fix:
Remove the cast replacing:

  (arg1)->set((const int&&)Copy(arg2));

with:

  (arg1)->set(Copy(arg2));

Note (fix 2): if 'const int' is replaced with 'int' everywhere, everything
works fine.


-- 
   Summary: const rvalue cast results in internal compiler error
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: wsf at fultondesigns dot co dot uk
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44920



[Bug c++/34822] New: Compiler seg fault with incorrect templated static member variable initialization

2008-01-16 Thread wsf at fultondesigns dot co dot uk
Testcase (runme.cxx):

template 
struct DiffImContainer {
   int id;
   static short xyz;
};
template  short DiffImContainer::xyz = 0;

int main() {
DiffImContainer d;
d.id = 20;
return 0;
}


[EMAIL PROTECTED]:~/temp/compile$ gcc-4.2 -v -save-temps runme.cxx
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2
--enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr
--enable-targets=all --enable-checking=release --build=i486-linux-gnu
--host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.2.1 (Ubuntu 4.2.1-5ubuntu4)
 /usr/lib/gcc/i486-linux-gnu/4.2.1/cc1plus -E -quiet -v -D_GNU_SOURCE runme.cxx
-mtune=generic -fpch-preprocess -o runme.ii
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/i486-linux-gnu/4.2.1/../../../../i486-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.2
 /usr/include/c++/4.2/i486-linux-gnu
 /usr/include/c++/4.2/backward
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.2.1/include
 /usr/include
End of search list.
 /usr/lib/gcc/i486-linux-gnu/4.2.1/cc1plus -fpreprocessed runme.ii -quiet
-dumpbase runme.cxx -mtune=generic -auxbase runme -version -fstack-protector
-fstack-protector -o runme.s
GNU C++ version 4.2.1 (Ubuntu 4.2.1-5ubuntu4) (i486-linux-gnu)
compiled by GNU C version 4.2.1 (Ubuntu 4.2.1-5ubuntu4).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129454
Compiler executable checksum: 44e55ae5d2724830dee11801424b84d8
runme.cxx:11: internal compiler error: in import_export_decl, at
cp/decl2.c:1962
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see .
[EMAIL PROTECTED]:~/temp/compile$ 


If
template  short DiffImContainer::xyz = 0;
is corrected to:
template  short DiffImContainer::xyz = 0;
then everything is okay.


-- 
   Summary: Compiler seg fault with incorrect templated static
member variable initialization
   Product: gcc
   Version: 4.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: wsf at fultondesigns dot co dot uk


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34822



[Bug c++/114385] New: -Wrestrict false positive creating std::string from iterators

2024-03-18 Thread wsf at fultondesigns dot co.uk via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114385

Bug ID: 114385
   Summary: -Wrestrict false positive creating std::string from
iterators
   Product: gcc
   Version: 14.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wsf at fultondesigns dot co.uk
  Target Milestone: ---

Observed in gcc-13.1.0, 13.2.0, gcc-14 (gcc-trunk-20240318).

Minimal testcase:

#include 

template< class String_type >
String_type substitute_esc_chars( typename String_type::const_iterator
begin, 
   typename String_type::const_iterator end )
{

if( end - begin < 2 ) return String_type( begin, end );
//if( end - begin < 2 ) return String_type(1, *begin); // workaround 1
//if( end - begin == 0 || end - begin == 1 ) return String_type( begin,
end ); // workaround 2

String_type result;

result.resize( end - begin );
std::copy(begin, end, result.begin());
return result;
}



int main() {
std::string ss[] = {"hi", "a"};
for (const std::string& s : ss)
substitute_esc_chars(s.begin(), s.end());
return 0;
}

gcc-13.1 version info...

$ g++-13 -Wall -O1 -D_GLIBCXX_ASSERTIONS runme.cxx -o runme
In file included from /usr/include/c++/13/string:42,
 from runme.cxx:1:
In static member function ‘static std::char_traits::char_type*
std::char_traits::copy(char_type*, const char_type*, std::size_t)’,
inlined from ‘static void std::__cxx11::basic_string<_CharT, _Traits,
_Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char;
_Traits = std::char_traits; _Alloc = std::allocator]’ at
/usr/include/c++/13/bits/basic_string.h:420:21,
inlined from ‘static void std::__cxx11::basic_string<_CharT, _Traits,
_Alloc>::_S_copy_chars(_CharT*, const _CharT*, const _CharT*) [with _CharT =
char; _Traits = std::char_traits; _Alloc = std::allocator]’ at
/usr/include/c++/13/bits/basic_string.h:474:16,
inlined from ‘static void std::__cxx11::basic_string<_CharT, _Traits,
_Alloc>::_S_copy_chars(_CharT*, const_iterator, const_iterator) [with _CharT =
char; _Traits = std::char_traits; _Alloc = std::allocator]’ at
/usr/include/c++/13/bits/basic_string.h:463:22,
inlined from ‘void std::__cxx11::basic_string<_CharT, _Traits,
_Alloc>::_M_construct(_InIterator, _InIterator, std::forward_iterator_tag)
[with _FwdIterator = __gnu_cxx::__normal_iterator >; _CharT = char; _Traits =
std::char_traits; _Alloc = std::allocator]’ at
/usr/include/c++/13/bits/basic_string.tcc:243:21,
inlined from ‘std::__cxx11::basic_string<_CharT, _Traits,
_Alloc>::basic_string(_InputIterator, _InputIterator, const _Alloc&) [with
_InputIterator = __gnu_cxx::__normal_iterator >;  = void; _CharT =
char; _Traits = std::char_traits; _Alloc = std::allocator]’ at
/usr/include/c++/13/bits/basic_string.h:753:16,
inlined from ‘String_type substitute_esc_chars(typename
String_type::const_iterator, typename String_type::const_iterator) [with
String_type = std::__cxx11::basic_string]’ at runme.cxx:8:62:
/usr/include/c++/13/bits/char_traits.h:445:56: warning: ‘void*
__builtin_memcpy(void*, const void*, long unsigned int)’ accessing
9223372036854775808 or more bytes at offsets 0 and 0 may overlap up to
9223372036854775809 bytes at offset -1 [-Wrestrict]
  445 | return static_cast(__builtin_memcpy(__s1, __s2,
__n));
  |   
^


$ g++-13 -v
Using built-in specs.
COLLECT_GCC=g++-13
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
13.1.0-8ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr
--with-gcc-major-version-only --program-suffix=-13
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin
--enable-default-pie --with-system-zlib --enable-libphobos-checking=release
--with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch
--disable-werror --disable-cet --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.1.0 (Ubuntu 13.1.0-8ubuntu1~18.04)

[Bug c++/117063] New: Incorrect stringop-overread warning using std::vector::insert at -O3

2024-10-10 Thread wsf at fultondesigns dot co.uk via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117063

Bug ID: 117063
   Summary: Incorrect stringop-overread warning using
std::vector::insert at -O3
   Product: gcc
   Version: 14.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wsf at fultondesigns dot co.uk
  Target Milestone: ---

Standalone code is below and triggers warning

gcc-14.1.0/include/c++/14.1.0/bits/stl_algobase.h:452:30: warning: 'void*
__builtin_memcpy(void*, const void*, long unsigned int)' reading between 9 and
9223372036854775800 bytes from a region of size 8 [-Wstringop-overread]

Compile using: g++ -std=c++14 -O2

No warning with gcc 13.3.0, warning appears with gcc 14.1.0 and 14.2.0.

Also warns, but requires -O3 instead of -O2, with godbolt.org build: g++
(Compiler-Explorer-Build-gcc-e9a213810aa9b87c7c868c93d5a93f3c63e03a3c-binutils-2.42)
15.0.0 20241010 (experimental)

Workarounds:
1) Compile with -O1 instead of -O2
2) Alternative code using #if 1 instead of #if 0 below


#include 
#include 
using std::vector;
#include 

template inline
typename C::const_iterator container_upper_bound(const C& container, const V&
value)
{
return upper_bound(container.begin(), container.end(), value);
}

template
T Next(T val)
{
++val;
return val;
}

template
T Previous(T val)
{
--val;
return val;
}

long m_firstDate = 500;
long m_lastDate = 2400;
vector event_dates { 300, 2000 };

int main() {
vector relevantDates;

if (event_dates.size() > 0)
{
if (m_firstDate < event_dates.front())
relevantDates.push_back(0L);
vector::const_iterator start = ((m_firstDate <
event_dates.front()) ? event_dates.begin() 
: Previous(container_upper_bound(event_dates, m_firstDate)));
auto upper_iterator = container_upper_bound(event_dates, m_lastDate);
vector::const_iterator stop = (upper_iterator !=
event_dates.end()) ?  Next(upper_iterator) : event_dates.end();
#if 1
// Results in stringop-overread warning
relevantDates.insert(relevantDates.end(), start, stop);
#else
// Workaround to remove warning
std::copy(start, stop, std::back_inserter(relevantDates));
#endif
}
std::cout << "dates..." << std::endl;
for (auto v : relevantDates)
std::cout << v << std::endl;
return 0;
}