This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args
- From: "aldot at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Jul 2008 13:04:43 -0000
- Subject: [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
$ cat > m.h <<-EOF
typedef long unsigned int size_t;
#define __THROW
/* Remap pages mapped by the range [ADDR,ADDR+OLD_LEN) to new length
NEW_LEN. If MREMAP_MAYMOVE is set in FLAGS the returned address
may differ from ADDR. If MREMAP_FIXED is set in FLAGS the function
takes another paramter which is a fixed address at which the block
resides after a successful call. */
extern void *mremap (void *__addr, size_t __old_len, size_t __new_len,
int __flags, ...) __THROW;
EOF
$ cat >m.c<<-EOF
#define mremap _hidemremap
#include "m.h"
#undef mremap
/* normally the syscall is here */
void *mremap(void *addr, size_t osz, size_t nsz, int fl, void *ptr){return
(void*)0;}
EOF
$ cat >m_user.c<<-EOF
#include "m.h"
void *user(void)
{
return mremap((char*)0, 0, 0, 0);
}
EOF
$ gcc-4.4-HEAD -c -combine m.c m_user.c
In file included from m_user.c:1:
m.h:9: error: conflicting types for ?mremap?
m.c:5: error: previous definition of ?mremap? was here
Ideally the __VA_ARGS__ would be dealt with as "any or none" param decl, so the
function(s) above would be considered equal.
--
Summary: IMA rejects to merge (function)decls with va_args
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: aldot at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36849