public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/45202]  New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop)
@ 2010-08-05 22:00 eric_moyer at yahoo dot com
  2010-08-05 22:02 ` [Bug libstdc++/45202] " eric_moyer at yahoo dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: eric_moyer at yahoo dot com @ 2010-08-05 22:00 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2085 bytes --]

The following code (as small as I can get but I'm not sure its minimal)

#include <set>

struct X{
  unsigned a;
  X(){}
  bool operator<(const X& i)const { return a < i.a; }
};

struct R{
  std::set<X> getSet() const{
    std::set<X> result;
    result.insert(X());
    return result;
  }
};

void bug(){
  for(unsigned x = 0; x < 2; ++x){
    std::set<X> pts = R().getSet();
  }
}


Produces the following warnings:


bug-check2.cpp: In function ‘void bug()’:
bug-check2.cpp:6: warning: dereferencing pointer ‘__x.22’ does break
strict-aliasing rules
/usr/include/c++/4.4/bits/stl_tree.h:525: note: initialized from here
bug-check2.cpp:6: warning: dereferencing pointer ‘__x.22’ does break
strict-aliasing rules
/usr/include/c++/4.4/bits/stl_tree.h:525: note: initialized from here


When compiled with:

g++ -Wall -O3 -c bug-check2.cpp

With version 4.4.1 on Ubuntu 9.10 (Sorry for the old version, it would take
hours to recompile g++ and I already have put several into reducing the
test-case.)

I will be attaching the g++ verbose output, the preprocessed source, and the
original source.




Unusual symptoms:

1. Making getSet static or a global function removes the warning.

2. Reducing the number of loop iterations below 2 reduces or removes the
warning.

3. Removing the constructor for X removes one of the warnings.

4. Changing X::operator< to return a constant value removes the warning

5. Changing X::operator< to {return a < b; } where b is a global variable
removes the warning

6. Removing the result.insert(X()) line removes the warnings

7. Making result a global variable removes the warnings.


-- 
           Summary: Strict aliasing warning in stl_tree (returning a copy of
                    a set from a member function in a loop)
           Product: gcc
           Version: 4.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: eric_moyer at yahoo dot com


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libstdc++/45202] Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop)
  2010-08-05 22:00 [Bug libstdc++/45202] New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop) eric_moyer at yahoo dot com
@ 2010-08-05 22:02 ` eric_moyer at yahoo dot com
  2010-08-05 22:03 ` eric_moyer at yahoo dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: eric_moyer at yahoo dot com @ 2010-08-05 22:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from eric_moyer at yahoo dot com  2010-08-05 22:02 -------
Created an attachment (id=21415)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21415&action=view)
Test case: original source


-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libstdc++/45202] Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop)
  2010-08-05 22:00 [Bug libstdc++/45202] New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop) eric_moyer at yahoo dot com
  2010-08-05 22:02 ` [Bug libstdc++/45202] " eric_moyer at yahoo dot com
@ 2010-08-05 22:03 ` eric_moyer at yahoo dot com
  2010-08-05 22:05 ` eric_moyer at yahoo dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: eric_moyer at yahoo dot com @ 2010-08-05 22:03 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from eric_moyer at yahoo dot com  2010-08-05 22:03 -------
Created an attachment (id=21416)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21416&action=view)
Test case: preprocessed source


-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libstdc++/45202] Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop)
  2010-08-05 22:00 [Bug libstdc++/45202] New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop) eric_moyer at yahoo dot com
  2010-08-05 22:02 ` [Bug libstdc++/45202] " eric_moyer at yahoo dot com
  2010-08-05 22:03 ` eric_moyer at yahoo dot com
@ 2010-08-05 22:05 ` eric_moyer at yahoo dot com
  2010-08-05 22:18 ` eric_moyer at yahoo dot com
  2010-08-06  6:54 ` paolo dot carlini at oracle dot com
  4 siblings, 0 replies; 6+ messages in thread
From: eric_moyer at yahoo dot com @ 2010-08-05 22:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from eric_moyer at yahoo dot com  2010-08-05 22:04 -------
Created an attachment (id=21417)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21417&action=view)
Test case: output of g++ 4.4.1-ubutntu9 with -v switch


-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libstdc++/45202] Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop)
  2010-08-05 22:00 [Bug libstdc++/45202] New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop) eric_moyer at yahoo dot com
                   ` (2 preceding siblings ...)
  2010-08-05 22:05 ` eric_moyer at yahoo dot com
@ 2010-08-05 22:18 ` eric_moyer at yahoo dot com
  2010-08-06  6:54 ` paolo dot carlini at oracle dot com
  4 siblings, 0 replies; 6+ messages in thread
From: eric_moyer at yahoo dot com @ 2010-08-05 22:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from eric_moyer at yahoo dot com  2010-08-05 22:18 -------
This is not a duplicate of bug# 39390 because my copy of g++ compiles the test
case for that bug without complaint.  

It may be related to 42032 since that does not compile correctly but (1) the
error messages are different; (2) the errors are for different lines of the
stl_tree file; and (3) that bug relates to a map rather than a set


-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libstdc++/45202] Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop)
  2010-08-05 22:00 [Bug libstdc++/45202] New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop) eric_moyer at yahoo dot com
                   ` (3 preceding siblings ...)
  2010-08-05 22:18 ` eric_moyer at yahoo dot com
@ 2010-08-06  6:54 ` paolo dot carlini at oracle dot com
  4 siblings, 0 replies; 6+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-08-06  6:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from paolo dot carlini at oracle dot com  2010-08-06 06:53 -------


*** This bug has been marked as a duplicate of 42032 ***


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |DUPLICATE


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-08-06  6:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-05 22:00 [Bug libstdc++/45202] New: Strict aliasing warning in stl_tree (returning a copy of a set from a member function in a loop) eric_moyer at yahoo dot com
2010-08-05 22:02 ` [Bug libstdc++/45202] " eric_moyer at yahoo dot com
2010-08-05 22:03 ` eric_moyer at yahoo dot com
2010-08-05 22:05 ` eric_moyer at yahoo dot com
2010-08-05 22:18 ` eric_moyer at yahoo dot com
2010-08-06  6:54 ` paolo dot carlini at oracle dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).