diff options
| author | gingerBill <bill@gingerbill.org> | 2018-12-02 16:02:00 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2018-12-02 16:02:00 +0000 |
| commit | 04a853c6fe098e49ceb359380cb7ba45d4bb3030 (patch) | |
| tree | e078f0a79f46b2ad8d1528f96b99e150181f396a /src/ir_print.cpp | |
| parent | 84f0c975b5096168659e1e2461215cfce4ca0418 (diff) | |
Fix double declarations of `bswap`s in LLVM IR
Diffstat (limited to 'src/ir_print.cpp')
| -rw-r--r-- | src/ir_print.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/ir_print.cpp b/src/ir_print.cpp index 4f7935f81..298e722e2 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -2128,9 +2128,16 @@ void print_llvm_ir(irGen *ir) { ir_write_str_lit(f, "} ; Basic_any\n"); ir_write_str_lit(f, "declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 \n"); - ir_write_str_lit(f, "declare i16 @llvm.bswap.i16(i16) #3 \n"); - ir_write_str_lit(f, "declare i32 @llvm.bswap.i32(i32) #3 \n"); - ir_write_str_lit(f, "declare i64 @llvm.bswap.i64(i64) #3 \n"); + + if (map_get(&m->members, hash_string(str_lit("llvm.bswap.i16"))) == nullptr) { + ir_write_str_lit(f, "declare i16 @llvm.bswap.i16(i16) \n"); + } + if (map_get(&m->members, hash_string(str_lit("llvm.bswap.i32"))) == nullptr) { + ir_write_str_lit(f, "declare i32 @llvm.bswap.i32(i32) \n"); + } + if (map_get(&m->members, hash_string(str_lit("llvm.bswap.i64"))) == nullptr) { + ir_write_str_lit(f, "declare i64 @llvm.bswap.i64(i64) \n"); + } ir_write_byte(f, '\n'); |