[Bug c/36849] IMA rejects to merge (function)decls with va_args

2008-08-12 Thread aldot at gcc dot gnu dot org


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



[Bug c/36849] IMA rejects to merge (function)decls with va_args

2008-08-12 Thread pinskia at gcc dot gnu dot org


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



[Bug c/36849] IMA rejects to merge (function)decls with va_args

2008-08-12 Thread aldot at gcc dot gnu dot org


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



[Bug c/36849] IMA rejects to merge (function)decls with va_args

2008-08-10 Thread pinskia at gcc dot gnu dot org


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