http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59363

--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> ---
A testcase:

[hjl@gnu-6 pr59363]$ cat x.h
typedef struct s_mmbuffer {
 char *ptr;
 long size;
} mmbuffer_t;
typedef struct s_mmfile {
 char *ptr;
 long size;
} mmfile_t;
typedef struct s_xpparam {
 unsigned long flags;
} xpparam_t;
typedef long (*find_func_t)(const char *line, long line_len, char *buffer, long
buffer_size, void *priv);
typedef int (*xdl_emit_hunk_consume_func_t)(void);
typedef struct s_xdemitconf {
 long ctxlen;
 long interhunkctxlen;
 unsigned long flags;
 find_func_t find_func;
 void *find_func_priv;
 xdl_emit_hunk_consume_func_t hunk_func;
} xdemitconf_t;
typedef struct s_xdemitcb {
 void *priv;
 int (*outf)(void *, mmbuffer_t *, int);
} xdemitcb_t;
extern int xdi_diff(xpparam_t const *xpp,
            xdemitconf_t const *xecfg, xdemitcb_t *ecb);
extern int diff_hunks(long ctxlen, xdl_emit_hunk_consume_func_t hunk_func,
              void *cb_data);
[hjl@gnu-6 pr59363]$ cat x.c
#include "x.h"

int
xdi_diff(xpparam_t const *xpp,
     xdemitconf_t const *xecfg, xdemitcb_t *ecb)
{
  if (xecfg->hunk_func == 0)
    __builtin_abort ();

  return 0;
}

int hunk_func (void)
{
  return 0;
}

int
main ()
{
  return diff_hunks (1, hunk_func, (void *) 0);
}
[hjl@gnu-6 pr59363]$ cat y.c
#include "x.h"
int diff_hunks(long ctxlen, xdl_emit_hunk_consume_func_t hunk_func,
           void *cb_data)
{
 xpparam_t xpp = {0};
 xdemitconf_t xecfg = {0};
 xdemitcb_t ecb = {((void *)0)};
 xpp.flags = 0;
 xecfg.ctxlen = ctxlen;
 xecfg.hunk_func = hunk_func;
 ecb.priv = cb_data;
 return xdi_diff(&xpp, &xecfg, &ecb);
}
[hjl@gnu-6 pr59363]$ make
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2 -mtune=amdfam10   -c -o x.o
x.c
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2 -mtune=amdfam10   -c -o y.o
y.c
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2 -mtune=amdfam10 -o x x.o
y.o
./x
make: *** [all] Aborted
[hjl@gnu-6 pr59363]$

Reply via email to