OLD | NEW |
1 //===- RemoveAsmMemory.cpp - Remove ``asm("":::"memory")`` ----------------===// | 1 //===- RemoveAsmMemory.cpp - Remove ``asm("":::"memory")`` ----------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This pass removes all instances of ``asm("":::"memory")``. | 10 // This pass removes all instances of ``asm("":::"memory")``. |
(...skipping 27 matching lines...) Expand all Loading... |
38 AsmDirectivesVisitor() : ModifiedFunction(false) {} | 38 AsmDirectivesVisitor() : ModifiedFunction(false) {} |
39 ~AsmDirectivesVisitor() {} | 39 ~AsmDirectivesVisitor() {} |
40 bool modifiedFunction() const { return ModifiedFunction; } | 40 bool modifiedFunction() const { return ModifiedFunction; } |
41 | 41 |
42 /// Only Call Instructions are ever inline assembly directives. | 42 /// Only Call Instructions are ever inline assembly directives. |
43 void visitCallInst(CallInst &CI); | 43 void visitCallInst(CallInst &CI); |
44 | 44 |
45 private: | 45 private: |
46 bool ModifiedFunction; | 46 bool ModifiedFunction; |
47 | 47 |
48 AsmDirectivesVisitor(const AsmDirectivesVisitor &) LLVM_DELETED_FUNCTION; | 48 AsmDirectivesVisitor(const AsmDirectivesVisitor &) = delete; |
49 AsmDirectivesVisitor &operator=( | 49 AsmDirectivesVisitor &operator=(const AsmDirectivesVisitor &) = delete; |
50 const AsmDirectivesVisitor &) LLVM_DELETED_FUNCTION; | |
51 }; | 50 }; |
52 } | 51 } |
53 | 52 |
54 char RemoveAsmMemory::ID = 0; | 53 char RemoveAsmMemory::ID = 0; |
55 INITIALIZE_PASS(RemoveAsmMemory, "remove-asm-memory", | 54 INITIALIZE_PASS(RemoveAsmMemory, "remove-asm-memory", |
56 "remove all instances of ``asm(\"\":::\"memory\")``", false, | 55 "remove all instances of ``asm(\"\":::\"memory\")``", false, |
57 false) | 56 false) |
58 | 57 |
59 bool RemoveAsmMemory::runOnFunction(Function &F) { | 58 bool RemoveAsmMemory::runOnFunction(Function &F) { |
60 AsmDirectivesVisitor AV; | 59 AsmDirectivesVisitor AV; |
(...skipping 10 matching lines...) Expand all Loading... |
71 // sequentially consistent fence. Other passes rewrite this fence to | 70 // sequentially consistent fence. Other passes rewrite this fence to |
72 // an equivalent stable NaCl intrinsic, meaning that this assembly can | 71 // an equivalent stable NaCl intrinsic, meaning that this assembly can |
73 // be removed. | 72 // be removed. |
74 CI.eraseFromParent(); | 73 CI.eraseFromParent(); |
75 ModifiedFunction = true; | 74 ModifiedFunction = true; |
76 } | 75 } |
77 | 76 |
78 namespace llvm { | 77 namespace llvm { |
79 FunctionPass *createRemoveAsmMemoryPass() { return new RemoveAsmMemory(); } | 78 FunctionPass *createRemoveAsmMemoryPass() { return new RemoveAsmMemory(); } |
80 } | 79 } |
OLD | NEW |