Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3062341.3062372acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article
Public Access

Alive-Infer: data-driven precondition inference for peephole optimizations in LLVM

Published: 14 June 2017 Publication History

Abstract

Peephole optimizations are a common source of compiler bugs. Compiler developers typically transform an incorrect peephole optimization into a valid one by strengthening the precondition. This process is challenging and tedious. This paper proposes Alive-Infer, a data-driven approach that infers preconditions for peephole optimizations expressed in Alive. Alive-Infer generates positive and negative examples for an optimization, enumerates predicates on-demand, and learns a set of predicates that separate the positive and negative examples. Alive-Infer repeats this process until it finds a precondition that ensures the validity of the optimization. Alive-Infer reports both a weakest precondition and a set of succinct partial preconditions to the developer. Our prototype generates preconditions that are weaker than LLVM’s preconditions for 73 optimizations in the Alive suite. We also demonstrate the applicability of this technique to generalize 54 optimization patterns generated by Souper, an LLVM IR–based superoptimizer.

Supplementary Material

Auxiliary Archive (pldi17-main214-s.zip)
This artifact contains a complete distribution of Alive-Infer (previously known as "PInfer") distributed as a virtual machine compatible with Oracle's Virtual Box software. This environment includes the Z3 solver and Alive-Infer pre-built and configured for use, and several scripts for performing precondition inference, batch timing tests, and analysis of inferred preconditions. This artifact also includes a source distribution of Alive-Infer and Z3, ready to be built and run natively to avoid the performance penalty of running in a virtual environment.

References

[1]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[2]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[3]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[4]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[5]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[6]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[7]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[8]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[9]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[10]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[11]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[12]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[13]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[14]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[15]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[16]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[17]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[18]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[19]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[20]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[21]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[22]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[23]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[24]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[25]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[26]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[27]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[28]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[29]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[30]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[31]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[32]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[33]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[34]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[35]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[36]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[37]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[38]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[39]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[40]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[41]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[42]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[43]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[44]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[45]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[46]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[47]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[48]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[49]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[50]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[51]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[52]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[53]
4 2016/11/2 1 2 1 1 SMT Query for generating positive examples SMT Query for generating negative examples 9 X ( s ) ^ 8 X ( t ^ ( s = ) t ^ ◆ s = ◆ t )) ¬8 X ( t ^ ( s = ) t ^ ◆ s = ◆ t )) References {Patch}InstCombine pattern for ICMP. http://lists.cs.uiuc. edu/pipermail/llvm-commits/Week-of-Mon-20140811/ 230471.html. L. de Moura and N. Bjørner. Z3: An Efficient SMT Solver. In Proceedings of the Theory and Practice of Software, 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 337–340, 2008.
[54]
T. Gehr, D. Dimitrov, and M. T. Vechev. Learning Commutativity Specifications. In 27th International Conference on Computer Aided Verification (CAV), pages 307–323, 2015.
[55]
V. Le, M. Afshari, and Z. Su. Compiler Validation via Equivalence Modulo Inputs. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 216–226, 2014.
[56]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[57]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[58]
S. Sankaranarayanan, S. Chaudhuri, F. Ivanˇci´c, and A. Gupta. Dynamic Inference of Likely Data Preconditions over Predicates by Tree Learning. In Proceedings of the 2008 International Symposium on Software Testing and Analysis, ISSTA ’08, pages 295– 306, 2008.
[59]
R. Sharma, S. Gupta, B. Hariharan, A. Aiken, P. Liang, and A. V. Nori. A Data Driven Approach for Algebraic Loop Invariants. In Proceedings of the 22Nd European Conference on Programming Languages and Systems, ESOP’13, pages 574–592, 2013.
[60]
X. Yang, Y. Chen, E. Eide, and J. Regehr. Finding and Understanding Bugs in C Compilers. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 283–294, 2011.
[61]
9 2016/11/8 9 X ( s ) ^ 8 X ( t ^ ( s = ) t ^ ◆ s = ◆ t )) ¬(8 X ( t ^ ( s = ) t ^ ◆ s = ◆ t ))) References {Patch}InstCombine pattern for ICMP. http://lists.cs.uiuc. edu/pipermail/llvm-commits/Week-of-Mon-20140811/ 230471.html. L. de Moura and N. Bjørner. Z3: An Efficient SMT Solver. In Proceedings of the Theory and Practice of Software, 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 337–340, 2008.
[62]
T. Gehr, D. Dimitrov, and M. T. Vechev. Learning Commutativity Specifications. In 27th International Conference on Computer Aided Verification (CAV), pages 307–323, 2015.
[63]
V. Le, M. Afshari, and Z. Su. Compiler Validation via Equivalence Modulo Inputs. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 216–226, 2014.
[64]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 22–32, 2015.
[65]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[66]
S. Sankaranarayanan, S. Chaudhuri, F. Ivanˇci´c, and A. Gupta. Dynamic Inference of Likely Data Preconditions over Predicates by Tree Learning. In Proceedings of the 2008 International Symposium on Software Testing and Analysis, ISSTA ’08, pages 295– 306, 2008.
[67]
R. Sharma, S. Gupta, B. Hariharan, A. Aiken, P. Liang, and A. V. Nori. A Data Driven Approach for Algebraic Loop Invariants. In Proceedings of the 22Nd European Conference on Programming Languages and Systems, ESOP’13, pages 574–592, 2013.
[68]
X. Yang, Y. Chen, E. Eide, and J. Regehr. Finding and Understanding Bugs in C Compilers. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 283–294, 2011.
[69]
A. Albarghouthi, I. Dillig, and A. Gurfinkel. Maximal Specification Synthesis. In Proceedings of the 43rd Annual Symposium on Principles of Programming Languages, POPL, pages 789–801, Jan. 2016.
[70]
R. Alur, R. Bodik, G. Juniwal, M. M. K. Martin, M. Raghothaman, S. A. Seshia, R. Singh, A. Solar-Lezama, E. Torlak, and A. Udupa. Syntax-Guided Synthesis. In Proceedings of the 13th International Conference on Formal Methods in Computer-Aided Design, FMCAD, pages 1–17, Oct. 2013.
[71]
R. Alur, P. ˇCerný, P. Madhusudan, and W. Nam. Synthesis of Interface Specifications for Java Classes. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL, pages 98–109, Jan. 2005.
[72]
G. Ammons, R. Bodík, and J. R. Larus. Mining Specifications. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL, pages 4–16, 2002.
[73]
S. Bansal and A. Aiken. Automatic Generation of Peephole Superoptimizers. In Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS, pages 394–403, Oct. 2006.
[74]
M. Barnett and K. R. M. Leino. Weakest-precondition of Unstructured Programs. In Proceedings of the 6th ACM SIGPLANSIGSOFT Workshop on Program Analysis for Software Tools and Engineering, PASTE, pages 82–87, Sept. 2005.
[75]
S. Buchwald. Optgen: A Generator for Local Optimizations. In Proceedings of the 24th International Conference on Compiler Construction, CC, pages 171–189, 2015. ISBN 978-3-662- 46663-6.
[76]
E. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-Guided Abstraction Refinement. CAV, 2000.
[77]
P. Cousot, R. Cousot, M. Fähndrich, and F. Logozzo. Automatic Inference of Necessary Preconditions. In Proceedings of the 14th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI, pages 128– 148, Jan. 2013.
[78]
L. de Moura and N. Bjørner. Z3: An Efficient SMT Solver. In Proceedings of the Theory and Practice of Software, 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS, pages 337– 340, 2008.
[79]
I. Dillig, T. Dillig, B. Li, and K. McMillan. Inductive Invariant Generation via Abductive Inference. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA, pages 443–456, Oct. 2013.
[80]
M. D. Ernst, J. H. Perkins, P. J. Guo, S. McCamant, C. Pacheco, M. S. Tschantz, and C. Xiao. The Daikon system for dynamic detection of likely invariants. Science of Computer Programming, 69(1):35–45, Dec. 2007.
[81]
P. Garg, C. Löding, P. Madhusudan, and D. Neider. ICE: A Robust Learning Framework for Synthesizing Invariants. In Proceedings of the 26th International Conference on Computer Aided Verification, CAV, pages 69–87, July 2014.
[82]
P. Garg, D. Neider, P. Madhusudan, and D. Roth. Learning Invariants using Decision Trees and Implication Counterexamples. In Proceedings of the 43rd Annual Symposium on Principles of Programming Languages, POPL, pages 499–512, Jan. 2016.
[83]
T. Gehr, D. Dimitrov, and M. T. Vechev. Learning Commutativity Specifications. In Proceedings of the 27th International Conference on Computer Aided Verification, CAV, pages 307– 323, July 2015.
[84]
R. Giacobazzi. Abductive analysis of modular logic programs. In Proceedings of the 1994 International Symposium on Logic programming, ISPL, pages 377–391, Nov. 1994.
[85]
S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of Loop-free Programs. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, June 2011.
[86]
Y. Jiang. {Patch}InstCombine pattern for ICMP. http://lists.llvm.org/pipermail/llvm-commits/ Week-of-Mon-20140818/231300.html, 2014. Retrieved 2016-11-10.
[87]
A. K. John and S. Chakraborty. Quantifier Elimination for Linear Modular Constraints. In Proceedings of the 4th International Congress on Mathematical Software, ICMS, pages 295–302, Aug. 2014.
[88]
R. Joshi, G. Nelson, and Y. Zhou. Denali: A practical algorithm for generating optimal code. ACM Transactions on Programming Languages and Systems (TOPLAS), 28(6):967–989, Nov. 2006.
[89]
J. Ketema, J. Regehr, J. Taneja, P. Collingbourne, and R. Sasnauskas. A superoptimizer for LLVM IR. https://github. com/google/souper. Retrieved 2016-11-14.
[90]
A. Komuravelli, A. Gurfinkel, and S. Chaki. SMT-Based Model Checking for Recursive Programs. In Proceedings of the 26th International Conference on Computer Aided Verification, CAV, pages 17–34, July 2014.
[91]
S. Kundu, Z. Tatlock, and S. Lerner. Proving optimizations correct using parameterized program equivalence. In Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 327–337, 2009.
[92]
C. Lattner. ComputeMaskedBits and friends should know that multiplying by a power of two leaves low bits clear. https: //bugs.llvm.org//show_bug.cgi?id=19711, 2016. Retrieved 2017-03-14.
[93]
V. Le, M. Afshari, and Z. Su. Compiler Validation via Equivalence Modulo Inputs. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 216–226, 2014.
[94]
S. Lerner, T. Millstein, E. Rice, and C. Chambers. Automated Soundness Proofs for Dataflow Analyses and Transformations via Local Rules. In Proceedings of the 32nd ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, POPL, pages 364–377, 2005.
[95]
X. Leroy. A Formally Verified Compiler Back-end. In Journal of Automated Reasoning, 2009.
[96]
C. Liam. {Patch}Implementing a proposed InstCombine optimization. http://lists.llvm.org/pipermail/ llvm-dev/2016-April/098104.html, 2016.
[97]
Retrieved 2016-11-10.
[98]
N. Lopes. RFC: Killing undef and spreading poison. http://lists.llvm.org/pipermail/llvm-dev/ 2016-October/106182.html, 2016. Retrieved 2016-11-10.
[99]
N. Lopes, D. Menendez, S. Nagarakatte, and J. Regehr. Provably Correct Peephole Optimizations with Alive. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 22–32, 2015.
[100]
N. Lopes and J. Monteiro. Weakest Precondition Synthesis for Compiler Optimizations. In Proceedings of the 15th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI, pages 203–221, 2014.
[101]
H. Massalin. Superoptimizer: A Look at the Smallest Program. In Proceedings of the 2nd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 122–126, 1987.
[102]
D. Menendez and S. Nagarakatte. Alive-NJ. https:// github.com/rutgers-apl/alive-nj. Retrieved 2016-04- 16.
[103]
D. Menendez and S. Nagarakatte. Termination-Checking for LLVM Peephole Optimizations. In Proceedings of the 38th International Conference of Software Engineering, ICSE, pages 191–202, May 2016.
[104]
D. Menendez and S. Nagarakatte. Weaker (more general) precondition for bit-tests in InstructionSimplify. http://lists.llvm.org/pipermail/llvm-dev/ 2017-March/111000.html, 2017.
[105]
Retrieved 2017-03- 14.
[106]
D. Menendez, S. Nagarakatte, and A. Gupta. Alive-FP: Automated Verification of Floating Point Based Peephole Optimizations in LLVM. In Proceedings of the 23rd Static Analysis Symposium, pages 317–337, 2016.
[107]
E. Mullen, D. Zuniga, Z. Tatlock, and D. Grossman. Verified Peephole Optimizations for CompCert. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 448–461, June 2016.
[108]
A. Nötzli and F. Brown. LifeJacket: Verifying precise floatingpoint optimizations in LLVM. http://arxiv.org/pdf/ 1603.09290v1.pdf, 2016. Retrieved 2016-04-04.
[109]
S. Padhi, R. Sharma, and T. Millstein. Data-driven Precondition Inference with Learned Features. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’16, pages 42–56, 2016.
[110]
P. M. Phothilimthana, A. Thakur, R. Bodik, and D. Dhurjati. Scaling Up Superoptimization. In Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS, pages 297–310, Apr. 2016.
[111]
J. Regehr. Early Superoptimizer Results. http://blog. regehr.org/archives/1146. Retrieved 2016-11-14.
[112]
J. Regehr. Signed Division and InstCombine. http://lists.llvm.org/pipermail/llvm-dev/ 2016-June/100375.html, 2016.
[113]
Retrieved 2016-11- 10.
[114]
S. Sankaranarayanan, S. Chaudhuri, F. Ivanˇci´c, and A. Gupta. Dynamic Inference of Likely Data Preconditions over Predicates by Tree Learning. In Proceedings of the 2008 International Symposium on Software Testing and Analysis, ISSTA ’08, pages 295–306, 2008.
[115]
E. R. Scherpelz, S. Lerner, and C. Chambers. Automatic Inference of Optimizer Flow Functions from Semantic Meanings. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 135–145, June 2007.
[116]
E. Schkufza, R. Sharma, and A. Aiken. Stochastic Superoptimization. In Proceedings of the 18th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS, pages 305–316, 2013.
[117]
M. N. Seghir and D. Kroening. Counterexample-Guided Precondition Inference. In Proceedings of the 22nd European Conference on Programming Languages and Systems, ESOP, pages 451–471, Mar. 2013.
[118]
R. Sharma, S. Gupta, B. Hariharan, A. Aiken, P. Liang, and A. V. Nori. A Data Driven Approach for Algebraic Loop Invariants. In Proceedings of the 22Nd European Conference on Programming Languages and Systems, ESOP’13, pages 574–592, 2013.
[119]
A. Solar-Lezama, L. Tancau, R. Bodik, S. Seshia, and V. Saraswat. Combinatorial Sketching for Finite Programs. Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 404–415, Oct. 2006.
[120]
Z. Tatlock and S. Lerner. Bringing extensibility to verified compilers. In PLDI ’10: Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, 2010.
[121]
E. Torlak and R. Bodik. A Lightweight Symbolic Virtual Machine for Solver-aided Host Languages. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 530–541, June 2014.
[122]
X. Yang, Y. Chen, E. Eide, and J. Regehr. Finding and Understanding Bugs in C Compilers. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 283–294. ACM, 2011.
[123]
J. Zhao, S. Nagarakatte, M. M. K. Martin, and S. Zdancewic. Formalizing the LLVM Intermediate Representation for Verified Program Transformations. In Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pages 427–440, 2012.
[124]
J. Zhao, S. Nagarakatte, M. M. K. Martin, and S. Zdancewic. Formal Verification of SSA-Based Optimizations for LLVM. In ACM SIGPLAN 2013 Conference on Programming Language Design and Implementation, 2013.

Cited By

View all
  • (2021)Rewrite rule inference using equality saturationProceedings of the ACM on Programming Languages10.1145/34854965:OOPSLA(1-28)Online publication date: 15-Oct-2021
  • (2021)Synthesizing safe and efficient kernel extensions for packet processingProceedings of the 2021 ACM SIGCOMM 2021 Conference10.1145/3452296.3472929(50-64)Online publication date: 9-Aug-2021
  • (2020)Verifying and improving Halide’s term rewriting system with program synthesisProceedings of the ACM on Programming Languages10.1145/34282344:OOPSLA(1-28)Online publication date: 13-Nov-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI 2017: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2017
708 pages
ISBN:9781450349888
DOI:10.1145/3062341
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 June 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Alive
  2. Compilers
  3. Inference
  4. Learning

Qualifiers

  • Research-article

Funding Sources

Conference

PLDI '17
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)147
  • Downloads (Last 6 weeks)38
Reflects downloads up to 01 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Rewrite rule inference using equality saturationProceedings of the ACM on Programming Languages10.1145/34854965:OOPSLA(1-28)Online publication date: 15-Oct-2021
  • (2021)Synthesizing safe and efficient kernel extensions for packet processingProceedings of the 2021 ACM SIGCOMM 2021 Conference10.1145/3452296.3472929(50-64)Online publication date: 9-Aug-2021
  • (2020)Verifying and improving Halide’s term rewriting system with program synthesisProceedings of the ACM on Programming Languages10.1145/34282344:OOPSLA(1-28)Online publication date: 13-Nov-2020
  • (2019)Automatic equivalence checking for assembly implementations of cryptography librariesProceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization10.5555/3314872.3314880(37-49)Online publication date: 16-Feb-2019
  • (2019)Automatic Equivalence Checking for Assembly Implementations of Cryptography Libraries2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)10.1109/CGO.2019.8661180(37-49)Online publication date: Feb-2019
  • (2018)Crellvm: verified credible compilation for LLVMACM SIGPLAN Notices10.1145/3296979.319237753:4(631-645)Online publication date: 11-Jun-2018
  • (2018)Crellvm: verified credible compilation for LLVMProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192377(631-645)Online publication date: 11-Jun-2018
  • (2018)CAnDL: a domain specific language for compiler analysisProceedings of the 27th International Conference on Compiler Construction10.1145/3178372.3179515(151-162)Online publication date: 24-Feb-2018
  • (2018)Practical verification of peephole optimizations with AliveCommunications of the ACM10.1145/316606461:2(84-91)Online publication date: 23-Jan-2018
  • (2024)Hydra: Generalizing Peephole Optimizations with Program SynthesisProceedings of the ACM on Programming Languages10.1145/36498378:OOPSLA1(725-753)Online publication date: 29-Apr-2024
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media