[Bug c++/17729] [4.3/4.4/4.5/4.6 Regression] Duplicate __attribute__((deprecated)) warning

iains at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Apr 17 10:17:00 GMT 2010



------- Comment #16 from iains at gcc dot gnu dot org  2010-04-17 10:17 -------
Created an attachment (id=20407)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20407&action=view)
alter deprecation tests to eliminate duplicate warnings.

There are actually several constructs that have duplicated warnings.
The code below gives duplicates for each of the dg-warning cases shown:

I have not succeeded in getting the testsuite to recognize the duplicates (see
PR30612), even when putting a single case in one testfile as per the workaround
in the PR.

So, at present, one has to look at g++.log to confirm that the problems are
resolved.

===

gcc/cp/ChangeLog:
  gcc/cp/typeck.c(build_class_member_access_expr): Don't check for deprecation
here.
  gcc/cp/call.c(build_call_a): Ditto.
  (build_over_call): Ditto.
  (convert_like_real): Check for deprecation here instead.
  (build_new_method_call): Ditto.

===


void func(void) __attribute__((deprecated));

void f(void) {
  func(); // { dg-warning "'void func\\(\\)' is deprecated" "func()" }  
}

struct s1 {
  int notdep ;
  int depfield __attribute__((deprecated));
  union {
    int notdep;
    int deprec __attribute__((deprecated));
  } u1 ;
  union {
    int notdep1;
    int notdep2;
  } u2 __attribute__((deprecated)) ;

} ;

int main(void) { 
 struct s1 a;
 int b;
 b  = a.notdep;
 b += a.depfield; // { dg-warning "'s1::depfield' is deprecated .declared at"
"depfield" }
 b += a.u1.notdep;
 b += a.u1.deprec; // { dg-warning "'s1::<anonymous union>::deprec' is
deprecated .declared at" "s1::u1.deprec" }
 b += a.u2.notdep1 ;// { dg-warning "'s1::u2' is deprecated .declared at"
"s1::u2" }
 return 0;
}


-- 


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



More information about the Gcc-bugs mailing list