aboutsummaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
authorPatrick Eibl <paeibl@microsoft.com>2019-11-21 14:10:34 -0500
committerPatrick Eibl <paeibl@microsoft.com>2019-11-21 14:10:34 -0500
commit1e92e2d1de8c3fc4a04666e0b8db2225026598e9 (patch)
treec3deb2acf78337ea51e03014f7d5ca49b6131f36 /misc
parent0ac330bb81946081a3ab9ae45ef5aa7122dcb786 (diff)
downloadyosys-1e92e2d1de8c3fc4a04666e0b8db2225026598e9.tar.gz
yosys-1e92e2d1de8c3fc4a04666e0b8db2225026598e9.tar.bz2
yosys-1e92e2d1de8c3fc4a04666e0b8db2225026598e9.zip
handle anonymous unions to fix #1080
Diffstat (limited to 'misc')
-rw-r--r--misc/py_wrap_generator.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/misc/py_wrap_generator.py b/misc/py_wrap_generator.py
index c58c3f66a..9b4e644c0 100644
--- a/misc/py_wrap_generator.py
+++ b/misc/py_wrap_generator.py
@@ -1935,6 +1935,19 @@ def parse_header(source):
line = source_text[i].replace("YOSYS_NAMESPACE_BEGIN", " namespace YOSYS_NAMESPACE{").replace("YOSYS_NAMESPACE_END"," }")
ugly_line = unpretty_string(line)
+ # for anonymous unions, ignore union enclosure by skipping start line and replacing end line with new line
+ if 'union {' in line:
+ j = i+1
+ while j < len(source_text):
+ union_line = source_text[j]
+ if '};' in union_line:
+ source_text[j] = '\n'
+ break
+ j += 1
+ if j != len(source_text):
+ i += 1
+ continue
+
if str.startswith(ugly_line, "namespace "):# and ugly_line.find("std") == -1 and ugly_line.find("__") == -1:
namespace_name = ugly_line[10:].replace("{","").strip()
namespaces.append((namespace_name, ugly_line.count("{")))