Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
59f1d0db
Commit
59f1d0db
authored
Nov 18, 2014
by
Jason Merrill
Committed by
Jason Merrill
Nov 18, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* tree.c (warn_deprecated_use): Show declaration with inform.
From-SVN: r217714
parent
023d89c7
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
68 additions
and
68 deletions
+68
-68
gcc/ChangeLog
+4
-0
gcc/testsuite/g++.dg/warn/deprecated-3.C
+1
-1
gcc/testsuite/g++.dg/warn/deprecated-6.C
+28
-28
gcc/testsuite/gcc.dg/deprecated-4.c
+14
-14
gcc/testsuite/gcc.dg/deprecated-5.c
+1
-1
gcc/testsuite/gcc.dg/deprecated-6.c
+1
-1
gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm
+1
-1
gcc/testsuite/objc.dg/attributes/method-attribute-3.m
+1
-1
gcc/tree.c
+17
-21
No files found.
gcc/ChangeLog
View file @
59f1d0db
2014
-
11
-
18
Jason
Merrill
<
jason
@
redhat
.
com
>
*
tree
.
c
(
warn_deprecated_use
):
Show
declaration
with
inform
.
2014
-
11
-
18
Richard
Biener
<
rguenther
@
suse
.
de
>
PR
tree
-
optimization
/
63914
gcc/testsuite/g++.dg/warn/deprecated-3.C
View file @
59f1d0db
...
...
@@ -10,5 +10,5 @@ struct Foo
void
g
(
void
)
{
Foo
f
;
(
int
)
f
;
// { dg-warning "'Foo::operator int\\(\\)' is deprecated
\\(declared at
" }
(
int
)
f
;
// { dg-warning "'Foo::operator int\\(\\)' is deprecated" }
}
gcc/testsuite/g++.dg/warn/deprecated-6.C
View file @
59f1d0db
...
...
@@ -5,16 +5,16 @@
typedef
int
INT1
__attribute__
((
deprecated
(
"Please avoid INT1"
)));
typedef
INT1
INT2
__attribute__
((
__deprecated__
(
"Please avoid INT2"
)));
typedef
INT1
INT1a
;
/* { dg-warning "'INT1' is deprecated
.declared at \[^\n\]*
: Please avoid INT1" "" } */
typedef
INT1
INT1a
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
INT1
should_be_unavailable
;
/* { dg-warning "'INT1' is deprecated
.declared at \[^\n\]*
: Please avoid INT1" "" } */
INT1
should_be_unavailable
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
INT1a
should_not_be_deprecated
;
INT1
f1
(
void
)
__attribute__
((
deprecated
(
"Please avoid f1"
)));
INT1
f2
(
void
)
{
return
0
;
}
/* { dg-warning "'INT1' is deprecated
.declared at \[^\n\]*
: Please avoid INT1" "" } */
INT1
f2
(
void
)
{
return
0
;
}
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
INT2
f3
(
void
)
__attribute__
((
__deprecated__
(
"Please avoid f3"
)));
INT2
f4
(
void
)
{
return
0
;
}
/* { dg-warning "'INT2' is deprecated
.declared at \[^\n\]*
: Please avoid INT2" "" } */
INT2
f4
(
void
)
{
return
0
;
}
/* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
int
f5
(
INT2
x
);
/* { dg-warning "'INT2' is deprecated" "" } */
int
f6
(
INT2
x
)
__attribute__
((
__deprecated__
(
"Please avoid f6"
)));
...
...
@@ -23,7 +23,7 @@ typedef enum Color {red, green, blue} Color __attribute__((deprecated("Please av
int
g1
;
int
g2
__attribute__
((
deprecated
(
"Please avoid g2"
)));
int
g3
__attribute__
((
__deprecated__
(
"Please avoid g3"
)));
Color
k
;
/* { dg-warning "'Color' is deprecated
.declared at \[^\n\]*
: Please avoid Color" "" } */
Color
k
;
/* { dg-warning "'Color' is deprecated: Please avoid Color" "" } */
typedef
struct
{
int
field1
;
...
...
@@ -44,17 +44,17 @@ typedef struct {
int
func1
()
{
INT1
w
;
/* { dg-warning "'INT1' is deprecated
.declared at \[^\n\]*
: Please avoid INT1" "" } */
INT1
w
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
int
x
__attribute__
((
deprecated
(
"Please avoid x"
)));
int
y
__attribute__
((
__deprecated__
(
"Please avoid y"
)));
int
z
;
int
(
*
pf
)()
=
f1
;
/* { dg-warning "'INT1 f1\\(\\)' is deprecated
.declared at \[^\n\]*
: Please avoid f1" "" } */
int
(
*
pf
)()
=
f1
;
/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" "" } */
z
=
w
+
x
+
y
+
g1
+
g2
+
g3
;
/* { dg-warning "'x' is deprecated
.declared at \[^\n\]*
: Please avoid x" "" } */
/* { dg-warning "'y' is deprecated .declared at \[^\n\]*
: Please avoid y" "y" { target *-*-* } 53 } */
/* { dg-warning "'g2' is deprecated .declared at \[^\n\]*
: Please avoid g2" "g2" { target *-*-* } 53 } */
/* { dg-warning "'g3' is deprecated .declared at \[^\n\]*
: Please avoid g3" "g3" { target *-*-* } 53 } */
return
f1
();
/* { dg-warning "'INT1 f1\\(\\)' is deprecated
.declared at \[^\n\]*
: Please avoid f1" "f1" } */
z
=
w
+
x
+
y
+
g1
+
g2
+
g3
;
/* { dg-warning "'x' is deprecated: Please avoid x" "" } */
/* { dg-warning "'y' is deprecated
: Please avoid y" "y" { target *-*-* } 53 } */
/* { dg-warning "'g2' is deprecated
: Please avoid g2" "g2" { target *-*-* } 53 } */
/* { dg-warning "'g3' is deprecated
: Please avoid g3" "g3" { target *-*-* } 53 } */
return
f1
();
/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" "f1" } */
}
int
func2
(
S1
*
p
)
...
...
@@ -62,29 +62,29 @@ int func2(S1 *p)
S1
lp
;
if
(
p
->
field1
)
return
p
->
field2
;
/* { dg-warning "'S1::field2' is deprecated
.declared at \[^\n\]*
: Please avoid field2" "" } */
else
if
(
lp
.
field4
)
/* { dg-warning "'S1::field4' is deprecated
.declared at \[^\n\]*
: Please avoid field4" "" } */
return
p
->
field2
;
/* { dg-warning "'S1::field2' is deprecated: Please avoid field2" "" } */
else
if
(
lp
.
field4
)
/* { dg-warning "'S1::field4' is deprecated: Please avoid field4" "" } */
return
p
->
field3
;
p
->
u1
.
field5
=
g1
+
p
->
field7
;
p
->
u2
.
field9
;
/* { dg-warning "'S1::u2' is deprecated
.declared at \[^\n\]*
: Please avoid u2" "" } */
return
p
->
u1
.
field6
+
p
->
field8
;
/* { dg-warning "'S1::<anonymous union>::field6' is deprecated
.declared at \[^\n\]*
: Please avoid field6" "" } */
/* { dg-warning "'S1::field8' is deprecated .declared at \[^\n\]*
: Please avoid field8" "field8" { target *-*-* } 71 } */
p
->
u2
.
field9
;
/* { dg-warning "'S1::u2' is deprecated: Please avoid u2" "" } */
return
p
->
u1
.
field6
+
p
->
field8
;
/* { dg-warning "'S1::<anonymous union>::field6' is deprecated: Please avoid field6" "" } */
/* { dg-warning "'S1::field8' is deprecated
: Please avoid field8" "field8" { target *-*-* } 71 } */
}
struct
SS1
{
int
x
;
INT1
y
;
/* { dg-warning "'INT1' is deprecated
.declared at \[^\n\]*
: Please avoid INT1" "" } */
INT1
y
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
}
__attribute__
((
deprecated
(
"Please avoid SS1"
)));
struct
SS1
*
p1
;
/* { dg-warning "'SS1' is deprecated
.declared at \[^\n\]*
: Please avoid SS1" "" } */
struct
SS1
*
p1
;
/* { dg-warning "'SS1' is deprecated: Please avoid SS1" "" } */
struct
__attribute__
((
__deprecated__
(
"Please avoid SS2"
)))
SS2
{
int
x
;
INT1
y
;
/* { dg-warning "'INT1' is deprecated
.declared at \[^\n\]*
: Please avoid INT1" "" } */
INT1
y
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
};
struct
SS2
*
p2
;
/* { dg-warning "'SS2' is deprecated
.declared at \[^\n\]*
: Please avoid SS2" "" } */
struct
SS2
*
p2
;
/* { dg-warning "'SS2' is deprecated: Please avoid SS2" "" } */
class
T
{
public
:
...
...
@@ -94,17 +94,17 @@ class T {
int
x
;
}
__attribute__
((
deprecated
(
"Please avoid T"
)));
T
*
p3
;
// { dg-warning "'T' is deprecated
.declared at \[^\n\]*
: Please avoid T" }
T
*
p3
;
// { dg-warning "'T' is deprecated: Please avoid T" }
inline
void
T
::
member1
(
int
)
{}
int
T
::
member3
(
T
*
p
)
// { dg-warning "'T' is deprecated
.declared at \[^\n\]*
: Please avoid T" }
int
T
::
member3
(
T
*
p
)
// { dg-warning "'T' is deprecated: Please avoid T" }
{
p
->
member1
(
1
);
/* { dg-warning "'void T::member1\\(int\\)' is deprecated
.declared at \[^\n\]*
: Please avoid member1" "" } */
(
*
p
).
member1
(
2
);
/* { dg-warning "'void T::member1\\(int\\)' is deprecated
.declared at \[^\n\]*
: Please avoid member1" "" } */
p
->
member2
(
1
);
/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated
.declared at \[^\n\]*
: Please avoid member2" "" } */
(
*
p
).
member2
(
2
);
/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated
.declared at \[^\n\]*
: Please avoid member2" "" } */
p
->
member1
(
1
);
/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
(
*
p
).
member1
(
2
);
/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
p
->
member2
(
1
);
/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated: Please avoid member2" "" } */
(
*
p
).
member2
(
2
);
/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated: Please avoid member2" "" } */
p
->
member3
(
p
);
(
*
p
).
member3
(
p
);
return
f1
();
/* { dg-warning "'INT1 f1\\(\\)' is deprecated
.declared at \[^\n\]*
: Please avoid f1" "" } */
return
f1
();
/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" "" } */
}
gcc/testsuite/gcc.dg/deprecated-4.c
View file @
59f1d0db
...
...
@@ -24,7 +24,7 @@ typedef enum {red, green, blue} Color __attribute__((deprecated("Please avoid Co
int
g1
;
int
g2
__attribute__
((
deprecated
(
"Please avoid g2"
)));
int
g3
__attribute__
((
__deprecated__
(
"Please avoid g3"
)));
Color
k
;
/* { dg-warning "'Color' is deprecated
.declared at \[^\n\]*
: Please avoid Color" "" } */
Color
k
;
/* { dg-warning "'Color' is deprecated: Please avoid Color" "" } */
typedef
struct
{
int
field1
;
...
...
@@ -49,13 +49,13 @@ int func1()
int
x
__attribute__
((
deprecated
(
"Avoid x"
)));
int
y
__attribute__
((
__deprecated__
(
"Bad y"
)));
int
z
;
int
(
*
pf
)()
=
f1
;
/* { dg-warning "'f1' is deprecated
.declared at \[^\n\]*
: Please avoid f1" "" } */
int
(
*
pf
)()
=
f1
;
/* { dg-warning "'f1' is deprecated: Please avoid f1" "" } */
z
=
w
+
x
+
y
+
g1
+
g2
+
g3
;
/* { dg-warning "'x' is deprecated
.declared at \[^\n\]*
: Avoid x" "" } */
/* { dg-warning "'y' is deprecated
.declared at \[^\n\]*
: Bad y" "y" { target *-*-* } 54 } */
/* { dg-warning "'g2' is deprecated
.declared at \[^\n\]*
: Please avoid g2" "g2" { target *-*-* } 54 } */
/* { dg-warning "'g3' is deprecated
.declared at \[^\n\]*
: Please avoid g3" "g3" { target *-*-* } 54 } */
return
f1
();
/* { dg-warning "'f1' is deprecated
.declared at \[^\n\]*
: Please avoid f1" "" } */
z
=
w
+
x
+
y
+
g1
+
g2
+
g3
;
/* { dg-warning "'x' is deprecated: Avoid x" "" } */
/* { dg-warning "'y' is deprecated: Bad y" "y" { target *-*-* } 54 } */
/* { dg-warning "'g2' is deprecated: Please avoid g2" "g2" { target *-*-* } 54 } */
/* { dg-warning "'g3' is deprecated: Please avoid g3" "g3" { target *-*-* } 54 } */
return
f1
();
/* { dg-warning "'f1' is deprecated: Please avoid f1" "" } */
}
int
func2
(
S1
*
p
)
...
...
@@ -63,14 +63,14 @@ int func2(S1 *p)
S1
lp
;
if
(
p
->
field1
)
return
p
->
field2
;
/* { dg-warning "'field2' is deprecated
.declared at \[^\n\]*
: Please avoid field2" "" } */
else
if
(
lp
.
field4
)
/* { dg-warning "'field4' is deprecated
.declared at \[^\n\]*
: Please avoid field4" "" } */
return
p
->
field2
;
/* { dg-warning "'field2' is deprecated: Please avoid field2" "" } */
else
if
(
lp
.
field4
)
/* { dg-warning "'field4' is deprecated: Please avoid field4" "" } */
return
p
->
field3
;
p
->
u1
.
field5
=
g1
+
p
->
field7
;
p
->
u2
.
field9
;
/* { dg-warning "'u2' is deprecated
.declared at \[^\n\]*
: Please avoid u2" "" } */
return
p
->
u1
.
field6
+
p
->
field8
;
/* { dg-warning "'field6' is deprecated
.declared at \[^\n\]*
: Please avoid field6" "" } */
/* { dg-warning "'field8' is deprecated .declared at \[^\n\]*
: Please avoid field8" "field8" { target *-*-* } 72 } */
p
->
u2
.
field9
;
/* { dg-warning "'u2' is deprecated: Please avoid u2" "" } */
return
p
->
u1
.
field6
+
p
->
field8
;
/* { dg-warning "'field6' is deprecated: Please avoid field6" "" } */
/* { dg-warning "'field8' is deprecated
: Please avoid field8" "field8" { target *-*-* } 72 } */
}
struct
SS1
{
...
...
@@ -78,11 +78,11 @@ struct SS1 {
INT1
y
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
}
__attribute__
((
deprecated
(
"Please avoid SS1"
)));
struct
SS1
*
p1
;
/* { dg-warning "'SS1' is deprecated
.declared at \[^\n\]*
: Please avoid SS1" "" } */
struct
SS1
*
p1
;
/* { dg-warning "'SS1' is deprecated: Please avoid SS1" "" } */
struct
__attribute__
((
__deprecated__
(
"Please avoid SS2"
)))
SS2
{
int
x
;
INT1
y
;
/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
};
struct
SS2
*
p2
;
/* { dg-warning "'SS2' is deprecated
.declared at \[^\n\]*
: Please avoid SS2" "" } */
struct
SS2
*
p2
;
/* { dg-warning "'SS2' is deprecated: Please avoid SS2" "" } */
gcc/testsuite/gcc.dg/deprecated-5.c
View file @
59f1d0db
...
...
@@ -4,4 +4,4 @@
/* { dg-options "" } */
struct
{
int
a
;
}
__attribute__
((
deprecated
(
"Do not use"
)))
x
;
/* { dg-warning "type is deprecated" } */
typeof
(
x
)
y
;
/* { dg-warning "type is deprecated
.declared at .*.
: Do not use" } */
typeof
(
x
)
y
;
/* { dg-warning "type is deprecated: Do not use" } */
gcc/testsuite/gcc.dg/deprecated-6.c
View file @
59f1d0db
...
...
@@ -7,5 +7,5 @@ void func(void);
void
func
(
void
)
__attribute__
((
deprecated
(
"Do not use"
)));
void
f
(
void
)
{
func
();
/* { dg-warning "'func' is deprecated
.declared at .*.
: Do not use" } */
func
();
/* { dg-warning "'func' is deprecated: Do not use" } */
}
gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm
View file @
59f1d0db
...
...
@@ -20,5 +20,5 @@ int foo (void)
{
obj
*
p
=
[
obj
new
];
return
[
p
vargsn
:
0
];
/* { dg-warning "'vargsn:' is deprecated
.declared at
" } */
return
[
p
vargsn
:
0
];
/* { dg-warning "'vargsn:' is deprecated" } */
}
gcc/testsuite/objc.dg/attributes/method-attribute-3.m
View file @
59f1d0db
...
...
@@ -20,5 +20,5 @@ int foo (void)
{
obj
*
p
=
[
obj
new
];
return
[
p
vargsn
:
0
];
/* { dg-warning "'vargsn:' is deprecated
.declared at
" } */
return
[
p
vargsn
:
0
];
/* { dg-warning "'vargsn:' is deprecated" } */
}
gcc/tree.c
View file @
59f1d0db
...
...
@@ -12034,17 +12034,17 @@ warn_deprecated_use (tree node, tree attr)
else
msg
=
NULL
;
bool
w
;
if
(
DECL_P
(
node
))
{
expanded_location
xloc
=
expand_location
(
DECL_SOURCE_LOCATION
(
node
));
if
(
msg
)
warning
(
OPT_Wdeprecated_declarations
,
"%qD is deprecated (declared at %r%s:%d%R): %s"
,
node
,
"locus"
,
xloc
.
file
,
xloc
.
line
,
msg
);
w
=
warning
(
OPT_Wdeprecated_declarations
,
"%qD is deprecated: %s"
,
node
,
msg
);
else
warning
(
OPT_Wdeprecated_declarations
,
"%qD is deprecated (declared at %r%s:%d%R)"
,
node
,
"locus"
,
xloc
.
file
,
xloc
.
line
);
w
=
warning
(
OPT_Wdeprecated_declarations
,
"%qD is deprecated"
,
node
);
if
(
w
)
inform
(
DECL_SOURCE_LOCATION
(
node
),
"declared here"
);
}
else
if
(
TYPE_P
(
node
))
{
...
...
@@ -12062,30 +12062,26 @@ warn_deprecated_use (tree node, tree attr)
if
(
decl
)
{
expanded_location
xloc
=
expand_location
(
DECL_SOURCE_LOCATION
(
decl
));
if
(
what
)
{
if
(
msg
)
warning
(
OPT_Wdeprecated_declarations
,
"%qE is deprecated (declared at %r%s:%d%R): %s"
,
what
,
"locus"
,
xloc
.
file
,
xloc
.
line
,
msg
);
w
=
warning
(
OPT_Wdeprecated_declarations
,
"%qE is deprecated: %s"
,
what
,
msg
);
else
warning
(
OPT_Wdeprecated_declarations
,
"%qE is deprecated (declared at %r%s:%d%R)"
,
what
,
"locus"
,
xloc
.
file
,
xloc
.
line
);
w
=
warning
(
OPT_Wdeprecated_declarations
,
"%qE is deprecated"
,
what
);
}
else
{
if
(
msg
)
warning
(
OPT_Wdeprecated_declarations
,
"type is deprecated (declared at %r%s:%d%R): %s"
,
"locus"
,
xloc
.
file
,
xloc
.
line
,
msg
);
w
=
warning
(
OPT_Wdeprecated_declarations
,
"type is deprecated: %s"
,
msg
);
else
warning
(
OPT_Wdeprecated_declarations
,
"type is deprecated (declared at %r%s:%d%R)"
,
"locus"
,
xloc
.
file
,
xloc
.
line
);
w
=
warning
(
OPT_Wdeprecated_declarations
,
"type is deprecated"
);
}
if
(
w
)
inform
(
DECL_SOURCE_LOCATION
(
decl
),
"declared here"
);
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment