diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py index 4a933a4e585..4e11b8d3f6f 100644 --- a/src/freedreno/registers/gen_header.py +++ b/src/freedreno/registers/gen_header.py @@ -221,10 +221,10 @@ class Bitset(object): skip = "" if reg.array: - print("#define %s(__i, ...) pack_%s(__i, (struct %s) { __VA_ARGS__ })%s\n" % + print("#define %s(__i, ...) pack_%s(__i, __struct_cast(%s) { __VA_ARGS__ })%s\n" % (prefix, prefix, prefix, skip)) else: - print("#define %s(...) pack_%s((struct %s) { __VA_ARGS__ })%s\n" % + print("#define %s(...) pack_%s(__struct_cast(%s) { __VA_ARGS__ })%s\n" % (prefix, prefix, prefix, skip)) @@ -649,6 +649,12 @@ def main(): print("#include ") print() + print("#ifdef __cplusplus"); + print("#define __struct_cast(X)") + print("#else") + print("#define __struct_cast(X) (struct X)") + print("#endif") + try: p.parse(rnn_path, xml_file) except Error as e: