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).