public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args
@ 2008-07-16 13:05 aldot at gcc dot gnu dot org
2008-08-11 0:51 ` [Bug c/36849] " pinskia at gcc dot gnu dot org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: aldot at gcc dot gnu dot org @ 2008-07-16 13:05 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1518 bytes --]
$ 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
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/36849] IMA rejects to merge (function)decls with va_args
2008-07-16 13:05 [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args aldot at gcc dot gnu dot org
@ 2008-08-11 0:51 ` pinskia at gcc dot gnu dot org
2008-08-12 9:55 ` aldot at gcc dot gnu dot org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-08-11 0:51 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from pinskia at gcc dot gnu dot org 2008-08-11 00:50 -------
The error message is correct as the function types are not compatible. If in
fact this is invalid C even though we don't currently diagnostic it without
-combine.
Closing as invalid as -combine is doing the correct job of rejecting this.
> Ideally the __VA_ARGS__ would be dealt with as "any or none" param decl, so the
> function(s) above would be considered equal.
No, that is not what the C/C++ standard says about compatible function types.
Yes we could enable this and have -pedantic-error reject it but I don't see why
we should allow this as it is obvious invalid C code.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Component|middle-end |c
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36849
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/36849] IMA rejects to merge (function)decls with va_args
2008-07-16 13:05 [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args aldot at gcc dot gnu dot org
2008-08-11 0:51 ` [Bug c/36849] " pinskia at gcc dot gnu dot org
@ 2008-08-12 9:55 ` aldot at gcc dot gnu dot org
2008-08-12 15:06 ` pinskia at gcc dot gnu dot org
2008-08-12 15:50 ` aldot at gcc dot gnu dot org
3 siblings, 0 replies; 5+ messages in thread
From: aldot at gcc dot gnu dot org @ 2008-08-12 9:55 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from aldot at gcc dot gnu dot org 2008-08-12 09:54 -------
(In reply to comment #1)
> The error message is correct as the function types are not compatible. If in
> fact this is invalid C even though we don't currently diagnostic it without
> -combine.
>
> Closing as invalid as -combine is doing the correct job of rejecting this.
>
> > Ideally the __VA_ARGS__ would be dealt with as "any or none" param decl, so the
> > function(s) above would be considered equal.
>
> No, that is not what the C/C++ standard says about compatible function types.
>
> Yes we could enable this and have -pedantic-error reject it but I don't see why
> we should allow this as it is obvious invalid C code.
Do you have a suggestion on how libc could legally provide an mremap
implementation as per the example in #0 that can be compiled with -combine?
--
aldot at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pinskia at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36849
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/36849] IMA rejects to merge (function)decls with va_args
2008-07-16 13:05 [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args aldot at gcc dot gnu dot org
2008-08-11 0:51 ` [Bug c/36849] " pinskia at gcc dot gnu dot org
2008-08-12 9:55 ` aldot at gcc dot gnu dot org
@ 2008-08-12 15:06 ` pinskia at gcc dot gnu dot org
2008-08-12 15:50 ` aldot at gcc dot gnu dot org
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-08-12 15:06 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pinskia at gcc dot gnu dot org 2008-08-12 15:04 -------
(In reply to comment #2)
> Do you have a suggestion on how libc could legally provide an mremap
> implementation as per the example in #0 that can be compiled with -combine?
You don't. You can try some tricks with __asm__ but I would not recommend it
though.
As far as I can tell mremap only takes 4 arguments anyways.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36849
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/36849] IMA rejects to merge (function)decls with va_args
2008-07-16 13:05 [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args aldot at gcc dot gnu dot org
` (2 preceding siblings ...)
2008-08-12 15:06 ` pinskia at gcc dot gnu dot org
@ 2008-08-12 15:50 ` aldot at gcc dot gnu dot org
3 siblings, 0 replies; 5+ messages in thread
From: aldot at gcc dot gnu dot org @ 2008-08-12 15:50 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from aldot at gcc dot gnu dot org 2008-08-12 15:48 -------
(In reply to comment #3)
> You don't. You can try some tricks with __asm__ but I would not recommend it
> though.
Yes, i dont' want that.
>
> As far as I can tell mremap only takes 4 arguments anyways.
unfortunately it has a very ugly interface and takes a 5th argument, depending
on the flags:
void * mremap(void *old_address, size_t old_size , size_t new_size, int
flags);
[]
The flags bit-mask argument may be 0, or include the following flag:
[]
MREMAP_FIXED (since Linux 2.3.31)
This flag serves a similar purpose to the MAP_FIXED flag of
mmap(2). If this flag is specified, then mremap() accepts a
fifth argument, void *new_address, which specifies a page-
aligned address to which the mapping must be moved. Any previ-
ous mapping at the address range specified by new_address and
new_size is unmapped. If MREMAP_FIXED is specified, then
MREMAP_MAYMOVE must also be specified.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36849
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-08-12 15:50 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-07-16 13:05 [Bug middle-end/36849] New: IMA rejects to merge (function)decls with va_args aldot at gcc dot gnu dot org
2008-08-11 0:51 ` [Bug c/36849] " pinskia at gcc dot gnu dot org
2008-08-12 9:55 ` aldot at gcc dot gnu dot org
2008-08-12 15:06 ` pinskia at gcc dot gnu dot org
2008-08-12 15:50 ` aldot at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).