1import sys234def check_duplicates():5 auto_content = ""6 manual_content = ""78 with open("src/intrinsic/llvm.rs", "r", encoding="utf8") as f:9 manual_content = f.read()10 with open("src/intrinsic/archs.rs", "r", encoding="utf8") as f:11 auto_content = f.read()1213 intrinsics_map = {}14 for line in auto_content.splitlines():15 line = line.strip()16 if not line.startswith('"'):17 continue18 parts = line.split('"')19 if len(parts) != 5:20 continue21 intrinsics_map[parts[1]] = parts[3]2223 if len(intrinsics_map) == 0:24 print("No intrinsics found in auto code... Aborting.")25 return 126 print("Found {} intrinsics in auto code".format(len(intrinsics_map)))27 errors = []28 lines = manual_content.splitlines()29 pos = 030 found = 031 while pos < len(lines):32 line = lines[pos].strip()33 # This is our marker.34 if line == "let gcc_name = match name {":35 while pos < len(lines):36 line = lines[pos].strip()37 pos += 138 if line == "};":39 # We're done!40 if found == 0:41 print("No intrinsics found in manual code even though we found the "42 "marker... Aborting...")43 return 144 for error in errors:45 print("ERROR => {}".format(error))46 return 1 if len(errors) != 0 else 047 parts = line.split('"')48 if len(parts) != 5:49 continue50 found += 151 if parts[1] in intrinsics_map:52 if parts[3] != intrinsics_map[parts[1]]:53 print("Same intrinsics (`{}` at line {}) but different GCC "54 "translations: `{}` != `{}`".format(55 parts[1], pos, intrinsics_map[parts[1]], parts[3]))56 else:57 errors.append("Duplicated intrinsics: `{}` at line {}. Please remove it "58 " from manual code".format(parts[1], pos))59 # Weird but whatever...60 return 1 if len(errors) != 0 else 061 pos += 162 print("No intrinsics found in manual code... Aborting")63 return 1646566if __name__ == "__main__":67 sys.exit(check_duplicates())
Findings
✓ No findings reported for this file.