Commit 52eec6b9a6

Andrew Kelley <superjoe30@gmail.com>
2017-02-05 19:12:06
`%=` in inline assembly survives optimization
1 parent 6f316d8
Changed files (2)
src/all_types.hpp
@@ -1292,8 +1292,6 @@ struct CodeGen {
 
     IrInstruction *invalid_instruction;
     ConstExprValue const_void_val;
-
-    uint32_t unique_asm_id;
 };
 
 enum VarLinkage {
src/codegen.cpp
@@ -1487,9 +1487,6 @@ static LLVMValueRef ir_render_asm(CodeGen *g, IrExecutable *executable, IrInstru
     Buf llvm_template = BUF_INIT;
     buf_resize(&llvm_template, 0);
 
-    uint32_t unique_id = g->unique_asm_id;
-    g->unique_asm_id += 1;
-
     for (size_t token_i = 0; token_i < asm_expr->token_list.length; token_i += 1) {
         AsmToken *asm_token = &asm_expr->token_list.at(token_i);
         switch (asm_token->id) {
@@ -1514,7 +1511,7 @@ static LLVMValueRef ir_render_asm(CodeGen *g, IrExecutable *executable, IrInstru
                     break;
                 }
             case AsmTokenIdUniqueId:
-                buf_appendf(&llvm_template, "%" PRIu32, unique_id);
+                buf_append_str(&llvm_template, "${:uid}");
                 break;
         }
     }