zig/test/cases/translate_c/void_pointer_subtraction.c
mlugg 93cb44c805 translate-c: support GCC/Clang pointer subtraction extension
Pointer subtraction on `void *` or function pointers is UB by the C
spec, but is permitted by GCC and Clang as an extension. So, avoid
crashing translate-c in such cases, and follow the extension behavior --
there's nothing else that could really be intended.
2024-08-27 06:43:40 +01:00

16 lines
367 B
C

#include <stddef.h>
ptrdiff_t sub_ptr(void *a, void *b) {
return a - b;
}
// translate-c
// c_frontend=clang
// target=x86_64-linux
//
// pub export fn sub_ptr(arg_a: ?*anyopaque, arg_b: ?*anyopaque) ptrdiff_t {
// var a = arg_a;
// _ = &a;
// var b = arg_b;
// _ = &b;
// return @as(c_long, @bitCast(@intFromPtr(a) -% @intFromPtr(b)));
// }