This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/31742] New: warn_unused_result prints no warning for return value with destructor


(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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]