diff --git a/regression/ansi-c/asm4/main.c b/regression/ansi-c/asm4/main.c new file mode 100644 index 00000000000..a22fd92ddc7 --- /dev/null +++ b/regression/ansi-c/asm4/main.c @@ -0,0 +1,26 @@ +// from Fedora's glibc +struct dirent +{ + int dummy; +}; + +struct dirent64 +{ + int dummy; +}; + +#ifdef __GNUC__ +extern struct dirent *readdir(void *__dirp) __asm__( + "" + "readdir64"); +extern struct dirent64 *readdir64(void *__dirp); +#endif + +int main() +{ +#ifdef __GNUC__ + int x; + (void)readdir(&x); +#endif + return 0; +} diff --git a/regression/ansi-c/asm4/test.desc b/regression/ansi-c/asm4/test.desc new file mode 100644 index 00000000000..b9903aa3c3d --- /dev/null +++ b/regression/ansi-c/asm4/test.desc @@ -0,0 +1,8 @@ +CORE test-c++-front-end +main.c + +^EXIT=0$ +^SIGNAL=0$ +-- +^warning: ignoring +^CONVERSION ERROR$ diff --git a/src/ansi-c/c_typecheck_base.cpp b/src/ansi-c/c_typecheck_base.cpp index b3889fb343a..4346c6870e7 100644 --- a/src/ansi-c/c_typecheck_base.cpp +++ b/src/ansi-c/c_typecheck_base.cpp @@ -646,6 +646,8 @@ void c_typecheck_baset::apply_asm_label( { symbol.name=asm_label; symbol.base_name=asm_label; + if(symbol.type.id() == ID_code) + symbol.type.set(ID_C_incomplete, true); } if(symbol.name!=orig_name)