mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-27 15:11:14 +08:00
re PR c/67730 (No warning when returning NULL in void function)
PR c/67730 * c-typeck.c (convert_for_assignment): Use the expansion point location throughout. * gcc.dg/pr67730-1.c: New test. * gcc.dg/pr67730-2.c: New test. * gcc.dg/pr67730.h: New test. From-SVN: r228408
This commit is contained in:
parent
12651878c6
commit
1c7485afda
@ -1,3 +1,9 @@
|
||||
2015-10-02 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/67730
|
||||
* c-typeck.c (convert_for_assignment): Use the expansion point
|
||||
location throughout.
|
||||
|
||||
2015-10-02 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/64249
|
||||
|
@ -5718,6 +5718,10 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
|
||||
tree rname = NULL_TREE;
|
||||
bool objc_ok = false;
|
||||
|
||||
/* Use the expansion point location to handle cases such as user's
|
||||
function returning a wrong-type macro defined in a system header. */
|
||||
location = expansion_point_location_if_in_system_header (location);
|
||||
|
||||
if (errtype == ic_argpass)
|
||||
{
|
||||
tree selector;
|
||||
|
@ -1,3 +1,10 @@
|
||||
2015-10-02 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/67730
|
||||
* gcc.dg/pr67730-1.c: New test.
|
||||
* gcc.dg/pr67730-2.c: New test.
|
||||
* gcc.dg/pr67730.h: New test.
|
||||
|
||||
2015-10-02 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* c-c++-common/Wduplicated-cond-2.c: Skip until PR67819 is resolved.
|
||||
|
16
gcc/testsuite/gcc.dg/pr67730-1.c
Normal file
16
gcc/testsuite/gcc.dg/pr67730-1.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* PR c/67730 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wc++-compat" } */
|
||||
|
||||
#include "pr67730.h"
|
||||
|
||||
extern void bar (unsigned char *);
|
||||
|
||||
unsigned char *
|
||||
f (void *p)
|
||||
{
|
||||
unsigned char *uc = ONEP; /* { dg-warning "request for implicit conversion" } */
|
||||
uc = ONEP; /* { dg-warning "request for implicit conversion" } */
|
||||
bar (ONEP); /* { dg-warning "request for implicit conversion" } */
|
||||
return ONEP; /* { dg-warning "request for implicit conversion" } */
|
||||
}
|
22
gcc/testsuite/gcc.dg/pr67730-2.c
Normal file
22
gcc/testsuite/gcc.dg/pr67730-2.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* PR c/67730 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
#include "pr67730.h"
|
||||
|
||||
extern void bar (int);
|
||||
|
||||
int
|
||||
fn1 (void)
|
||||
{
|
||||
int a = NULL; /* { dg-warning "initialization makes integer from pointer" } */
|
||||
a = NULL; /* { dg-warning "assignment makes integer from pointer" } */
|
||||
bar (NULL); /* { dg-warning "passing argument 1" } */
|
||||
return NULL; /* { dg-warning "return makes integer from pointer" } */
|
||||
}
|
||||
|
||||
int
|
||||
fn2 (void)
|
||||
{
|
||||
RETURN; /* { dg-warning "return makes integer from pointer" } */
|
||||
}
|
32
gcc/testsuite/gcc.dg/pr67730.h
Normal file
32
gcc/testsuite/gcc.dg/pr67730.h
Normal file
@ -0,0 +1,32 @@
|
||||
#pragma GCC system_header
|
||||
#define NULL (void *) 0
|
||||
#define ONEP (void *) 1
|
||||
#define RETURN return NULL
|
||||
|
||||
extern void sysbar (unsigned char *);
|
||||
|
||||
unsigned char *
|
||||
sysfn1 (void *p)
|
||||
{
|
||||
unsigned char *uc = ONEP;
|
||||
uc = ONEP;
|
||||
sysbar (ONEP);
|
||||
return ONEP;
|
||||
}
|
||||
|
||||
extern void sysbar2 (int);
|
||||
|
||||
int
|
||||
sysfn2 (void)
|
||||
{
|
||||
int a = NULL;
|
||||
a = NULL;
|
||||
sysbar2 (NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
sysfn3 (void)
|
||||
{
|
||||
RETURN;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user