This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/31742] New: warn_unused_result prints no warning for return value with destructor
- From: "mec at google dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Apr 2007 07:21:37 -0000
- Subject: [Bug c++/31742] New: warn_unused_result prints no warning for return value with destructor
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
(This is similar to PR 27371)
When a function or method has attribute warn_unused_result, and the return type
has a destructor, gcc does not emit a warning. gcc 4.0.3 emitted a warning;
gcc 4.1.2 does not; gcc 4.3-20070427 does not.
mec@hollerith:~/exp-warn-unused-result$ cat warn.cc
int Alpha() __attribute__ ((warn_unused_result));
class C1 {
public:
C1();
~C1();
public:
int value_;
int Beta() __attribute__ ((warn_unused_result)) {
return value_;
}
C1 Gamma() __attribute__ ((warn_unused_result)) {
return *this;
}
};
extern C1 Delta() __attribute__ ((warn_unused_result));
int Foo() {
C1 c1;
Alpha();
c1.Beta();
c1.Gamma();
Delta();
return 0;
}
mec@hollerith:~/exp-warn-unused-result$
/home/mec/gcc-4.3-20070427/install/bin/g++ -Wall -S warn.cc
warn.cc: In function 'int Foo()':
warn.cc:22: warning: ignoring return value of 'int Alpha()', declared with
attribute warn_unused_result
warn.cc:23: warning: ignoring return value of 'int C1::Beta()', declared with
attribute warn_unused_result
mec@hollerith:~/exp-warn-unused-result$ /home/mec/gcc-4.1.2/install/bin/g++
-Wall -S warn.cc
warn.cc: In function 'int Foo()':
warn.cc:22: warning: ignoring return value of 'int Alpha()', declared with
attribute warn_unused_result
warn.cc:23: warning: ignoring return value of 'int C1::Beta()', declared with
attribute warn_unused_result
mec@hollerith:~/exp-warn-unused-result$ /home/mec/gcc-4.0.3/install/bin/g++
-Wall -S warn.cc
warn.cc: In function 'int Foo()':
warn.cc:22: warning: ignoring return value of 'int Alpha()', declared with
attribute warn_unused_result
warn.cc:23: warning: ignoring return value of 'int C1::Beta()', declared with
attribute warn_unused_result
warn.cc:24: warning: ignoring return value of 'C1 C1::Gamma()', declared with
attribute warn_unused_result
warn.cc:25: warning: ignoring return value of 'C1 Delta()', declared with
attribute warn_unused_result
--
Summary: warn_unused_result prints no warning for return value
with destructor
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mec at google dot com
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=31742