OLD | NEW |
---|---|
1 //===-- PNaClABISimplify.cpp - Lists PNaCl ABI simplification passes ------===// | 1 //===-- PNaClABISimplify.cpp - Lists PNaCl ABI simplification passes ------===// |
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 file implements the meta-passes "-pnacl-abi-simplify-preopt" | 10 // This file implements the meta-passes "-pnacl-abi-simplify-preopt" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
75 | 75 |
76 // We should not place arbitrary passes after ExpandConstantExpr | 76 // We should not place arbitrary passes after ExpandConstantExpr |
77 // because they might reintroduce ConstantExprs. | 77 // because they might reintroduce ConstantExprs. |
78 PM.add(createExpandConstantExprPass()); | 78 PM.add(createExpandConstantExprPass()); |
79 // PromoteIntegersPass does not handle constexprs and creates GEPs, | 79 // PromoteIntegersPass does not handle constexprs and creates GEPs, |
80 // so it goes between those passes. | 80 // so it goes between those passes. |
81 PM.add(createPromoteIntegersPass()); | 81 PM.add(createPromoteIntegersPass()); |
82 // ExpandGetElementPtr must follow ExpandConstantExpr to expand the | 82 // ExpandGetElementPtr must follow ExpandConstantExpr to expand the |
83 // getelementptr instructions it creates. | 83 // getelementptr instructions it creates. |
84 PM.add(createExpandGetElementPtrPass()); | 84 PM.add(createExpandGetElementPtrPass()); |
85 // Rewrite atomic and volatile instructions with intrinsic calls. | |
86 PM.add(createRewriteAtomicsPass()); | |
Mark Seaborn
2013/07/02 19:16:02
It would be better to place this before ExpandCons
| |
85 // ReplacePtrsWithInts assumes that getelementptr instructions and | 87 // ReplacePtrsWithInts assumes that getelementptr instructions and |
86 // ConstantExprs have already been expanded out. | 88 // ConstantExprs have already been expanded out. |
87 PM.add(createReplacePtrsWithIntsPass()); | 89 PM.add(createReplacePtrsWithIntsPass()); |
88 | 90 |
89 // We place StripAttributes after optimization passes because many | 91 // We place StripAttributes after optimization passes because many |
90 // analyses add attributes to reflect their results. | 92 // analyses add attributes to reflect their results. |
91 // StripAttributes must come after ExpandByVal and | 93 // StripAttributes must come after ExpandByVal and |
92 // ExpandSmallArguments. | 94 // ExpandSmallArguments. |
93 PM.add(createStripAttributesPass()); | 95 PM.add(createStripAttributesPass()); |
94 | 96 |
95 // Strip dead prototytes to appease the intrinsic ABI checks. | 97 // Strip dead prototytes to appease the intrinsic ABI checks. |
96 // ExpandVarArgs leaves around vararg intrinsics, and | 98 // ExpandVarArgs leaves around vararg intrinsics, and |
97 // ReplacePtrsWithInts leaves the lifetime.start/end intrinsics. | 99 // ReplacePtrsWithInts leaves the lifetime.start/end intrinsics. |
98 PM.add(createStripDeadPrototypesPass()); | 100 PM.add(createStripDeadPrototypesPass()); |
99 } | 101 } |
OLD | NEW |