Thread (24 messages) 24 messages, 6 authors, 2016-06-15

Re: [PATCH v2 3/8] diff-delta.c: "delta.h" is not a required include

flat view

From: Brandon Casey <hidden>
Date: 2016-06-15 22:46:54

On Fri, Jun 5, 2009 at 10:10 PM, Nicolas Pitre[off-list ref] wrote:
On Fri, 5 Jun 2009, Brandon Casey wrote:
quoted
Nicolas Pitre wrote:
quoted
On Fri, 5 Jun 2009, Brandon Casey wrote:
quoted
From: Brandon Casey <redacted>

When compiling diff-delta.c with the SUNWspro C99 compiler, it complains

    "diff-delta.c", line 314: identifier redeclared: create_delta

There is nothing in "delta.h" that is required by diff-delta.c, so don't
include it.

Signed-off-by: Brandon Casey <redacted>
NAK.

This is common practice to include the header file declaring function
prototypes into the file defining the actual function so to make sure
the declaration matches with the definition.  Deleting that include is
actively ignoring a problem instead of fixing the cause of it.

It doesn't seem to like the structure being redeclared with a flex array
member and being passed as a const argument.


# cat > test.c <<EOF

struct a_struct;

extern void *test_func(const struct a_struct *f);

struct a_struct {
        int a;
        int b;
        char* c[];
};

void *test_func(const struct a_struct *f)
{
        return 0;
}
EOF

# /opt/SUNWspro/bin/c99 -c test.c
"test.c", line 13: identifier redeclared: test_func
        current : function(pointer to const struct a_struct {int a, int b, array[-1] of pointer to char c}) returning pointer to void
        previous: function(pointer to const struct a_struct {int a, int b, array[-1] of pointer to char c}) returning pointer to void : "test.c", line 4
c99: acomp failed for test.c


If either the flex array is removed from the structure, or const is removed from
test_func argument, test.c will compile.  Compiling with -O0 doesn't help.
What if you define FLEX_ARRAY to 1, or even 0?
I tried that with my test.c example and '1' works, but not '0'.  I'll
try setting FLEX_ARRAY to 1 and running git's test suite on Monday.
If neither of those work then I'd simply remove the const.  Generated
code should be exactly the same with gcc.  There is no const with
sizeof_delta_index() which is already inconsistent.

Kind of weird nevertheless.
Yes.

-brandon
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help