skip to main content
research-article
Open Access

Indexing the extended Dyck-CFL reachability for context-sensitive program analysis

Published:31 October 2022Publication History
Skip Abstract Section

Abstract

Many context-sensitive dataflow analyses can be formulated as an extended Dyck-CFL reachability problem, where function calls and returns are modeled as partially matched parentheses. Unfortunately, despite many works on the standard Dyck-CFL reachability problem, solving the extended version is still of quadratic space complexity and nearly cubic time complexity, significantly limiting the scalability of program analyses. This paper, for the first time to the best of our knowledge, presents a cheap approach to transforming the extended Dyck-CFL reachability problem to conventional graph reachability, a much easier and well-studied problem. This transformation allows us to benefit from recent advances in reachability indexing schemes, making it possible to answer any reachability query in a context-sensitive dataflow analysis within almost constant time plus only a few extra spaces. We have implemented our approach in two common context-sensitive dataflow analyses, one determines pointer alias relations and the other tracks information flows. Experimental results demonstrate that, compared to their original analyses, we can achieve orders of magnitude (102× to 105×) speedup at the cost of only a moderate space overhead. Our implementation is publicly available.

References

  1. Alfred Aho, Michael Garey, and Jeffrey Ullman. 1972. The transitive reduction of a directed graph. SIAM J. Comput., 1, 2 (1972), 131–137. https://doi.org/10.1137/0201008 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Rajeev Alur, Michael Benedikt, Kousha Etessami, Patrice Godefroid, Thomas Reps, and Mihalis Yannakakis. 2005. Analysis of recursive state machines. ACM Transactions on Programming Languages and Systems (TOPLAS), 27, 4 (2005), 786–818. https://doi.org/10.1145/1075382.1075387 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Rajeev Alur and Parthasarathy Madhusudan. 2004. Visibly pushdown languages. In Proceedings of the 36th ACM Symposium on Theory of Computing (STOC ’04). ACM, 202–211. https://doi.org/10.1145/1007352.1007390 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Steven Arzt and Eric Bodden. 2014. Reviser: Efficiently Updating IDE-/IFDS-Based Data-Flow Analyses in Response to Incremental Program Changes. In Proceedings of the 36th International Conference on Software Engineering (ICSE ’14). ACM, 288–298. https://doi.org/10.1145/2568225.2568243 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Steven Arzt, Siegfried Rasthofer, Christian Fritz, Eric Bodden, Alexandre Bartel, Jacques Klein, Yves Le Traon, Damien Octeau, and Patrick McDaniel. 2014. Flowdroid: Precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’14). ACM, 259–269. https://doi.org/10.1145/2594291.2594299 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Panagiotis Bouros, Spiros Skiadopoulos, Theodore Dalamagas, Dimitris Sacharidis, and Timos Sellis. 2009. Evaluating reachability queries over path collections. In Proceedings of the 21st International Conference on Scientific and Statistical Database Management (SSDBM ’09). Springer, 398–416. https://doi.org/10.1007/978-3-642-02279-1_29 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Cheng Cai, Qirun Zhang, Zhiqiang Zuo, Khanh Nguyen, Guoqing Xu, and Zhendong Su. 2018. Calling-to-reference context translation via constraint-guided CFL-reachability. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’18). ACM, 196–210. https://doi.org/10.1145/3192366.3192378 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Krishnendu Chatterjee, Bhavya Choudhary, and Andreas Pavlogiannis. 2017. Optimal Dyck reachability for data-dependence and alias analysis. Proceedings of the ACM on Programming Languages, 2, POPL (2017), 30:1–30:30. https://doi.org/10.1145/3158118 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Swarat Chaudhuri. 2008. Subcubic algorithms for recursive state machines. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’08). ACM, 159–169. https://doi.org/10.1145/1328438.1328460 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Li Chen, Amarnath Gupta, and M. Erdem Kurul. 2005. Stack-based algorithms for pattern matching on dags. In Proceedings of the 31st International Conference on Very Large Data Bases. VLDB Endowment, 493–504. https://doi.org/10.14778/2180912.2180919 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Yangjun Chen and Yibin Chen. 2008. An efficient algorithm for answering graph reachability queries. In Proceedings of the 24nd International Conference on Data Engineering (ICDE ’08). IEEE, 893–902. https://doi.org/10.1109/ICDE.2008.4497498 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. James Cheng, Silu Huang, Huanhuan Wu, and Ada Wai-Chee Fu. 2013. TF-Label: A topological-folding labeling scheme for reachability querying in a large graph. In Proceedings of the 2013 ACM SIGMOD International Conference on Management of Data (SIGMOD ’13). ACM, 193–204. https://doi.org/10.1145/2463676.2465286 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sigmund Cherem, Lonnie Princehouse, and Radu Rugina. 2007. Practical memory leak detection using guarded value-flow analysis. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’07). ACM, 480–491. https://doi.org/10.1145/1250734.1250789 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Edith Cohen, Eran Halperin, Haim Kaplan, and Uri Zwick. 2003. Reachability and distance queries via 2-hop labels. SIAM J. Comput., 32, 5 (2003), 1338–1355. https://doi.org/10.1137/S0097539702403098 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Douglas Comer. 1979. Ubiquitous B-tree. ACM Computing Surveys (CSUR), 11, 2 (1979), 121–137. https://doi.org/10.1145/356770.356776 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jens Dietrich, Nicholas Hollingum, and Bernhard Scholz. 2015. Giga-scale exhaustive points-to analysis for java in under a minute. In Proceedings of the 2015 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ’15). ACM, 535–551. https://doi.org/10.1145/2814270.2814307 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Wenfei Fan, Jianzhong Li, Xin Wang, and Yinghui Wu. 2012. Query preserving graph compression. In Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data (SIGMOD ’12). ACM, 157–168. https://doi.org/10.1145/2213836.2213855 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. 1987. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems (TOPLAS), 9, 3 (1987), 319–349. https://doi.org/10.1145/24039.24041 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Hugh Gauch. 2002. Scientific Method in Practice. Cambridge University Press. https://doi.org/10.1017/CBO9780511815034 Google ScholarGoogle ScholarCross RefCross Ref
  20. Michel Habib, Michel Morvan, and J-X Rampon. 1993. On the calculation of transitive reduction-closure of orders. Discrete Mathematics, 111, 1-3 (1993), 289–303. https://doi.org/10.1016/0012-365X(93)90164-O Google ScholarGoogle ScholarCross RefCross Ref
  21. Wook-Shin Han, Sangyeon Lee, Kyungyeol Park, Jeong-Hoon Lee, Min-Soo Kim, Jinha Kim, and Hwanjo Yu. 2013. TurboGraph: a fast parallel graph engine handling billion-scale graphs in a single PC. In Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD ’13). ACM, 77–85. https://doi.org/10.1145/2487575.2487581 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Mohamed Hassan, Walid Aref, and Ahmed Aly. 2016. Graph indexing for shortest-path finding over dynamic sub-graphs. In Proceedings of the 2016 ACM International Conference on Management of Data (SIGMOD ’16). ACM, 1183–1197. https://doi.org/10.1145/2882903.2882933 Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. John L. Henning. 2000. SPEC CPU2000: Measuring CPU performance in the new millennium. Computer, 33, 7 (2000), 28–35. https://doi.org/10.1109/2.869367 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ruoming Jin, Hui Hong, Haixun Wang, Ning Ruan, and Yang Xiang. 2010. Computing label-constraint reachability in graph databases. In Proceedings of the 2010 ACM SIGMOD International Conference on Management of Data (SIGMOD ’10). ACM, 123–134. https://doi.org/10.1145/1807167.1807183 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Ruoming Jin, Ning Ruan, Yang Xiang, and Haixun Wang. 2011. Path-tree: An efficient reachability indexing scheme for large directed graphs. ACM Transactions on Database Systems (TODS), 36, 1 (2011), 7:1–7:44. https://doi.org/10.1145/1929934.1929941 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Ruoming Jin, Yang Xiang, Ning Ruan, and David Fuhry. 2009. 3-hop: A high-compression indexing scheme for reachability query. In Proceedings of the 2009 ACM SIGMOD International Conference on Management of Data (SIGMOD ’09). ACM, 813–826. https://doi.org/10.1145/1559845.1559930 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. George Kastrinis and Yannis Smaragdakis. 2013. Hybrid Context-Sensitivity for Points-to Analysis. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’13). ACM, 423–434. https://doi.org/10.1145/2491956.2462191 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Adam Husted Kjelstrøm and Andreas Pavlogiannis. 2022. The Decidability and Complexity of Interleaved Bidirected Dyck Reachability. Proceedings of the ACM on Programming Languages, 6, POPL (2022), 12:1–12:26. https://doi.org/10.1145/3498673 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. John Kodumal and Alex Aiken. 2004. The set constraint/CFL reachability connection in practice. In Proceedings of the 25th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’04). ACM, 207–218. https://doi.org/10.1145/996841.996867 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Johannes Lerch, Ben Hermann, Eric Bodden, and Mira Mezini. 2014. FlowTwist: Efficient context-sensitive inside-out taint analysis for large codebases. In Proceedings of the 22nd ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE ’14). ACM, 98–108. https://doi.org/10.1145/2635868.2635878 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Lian Li, Cristina Cifuentes, and Nathan Keynes. 2011. Boosting the performance of flow-sensitive points-to analysis using value flow. In Proceedings of the 13th European Software Engineering Conference Held Jointly with the 19th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (ESEC/FSE ’11). ACM, 343–353. https://doi.org/10.1145/2025113.2025160 Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Lian Li, Cristina Cifuentes, and Nathan Keynes. 2013. Precise and scalable context-sensitive pointer analysis via value flow graph. In Proceedings of the 2013 International Symposium on Memory Management (ISMM ’13). ACM, 85–96. https://doi.org/10.1145/2491894.2466483 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Yuanbo Li, Qirun Zhang, and Thomas Reps. 2020. Fast graph simplification for interleaved Dyck-reachability. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’20). ACM, 780–793. https://doi.org/10.1145/3385412.3386021 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Yuanbo Li, Qirun Zhang, and Thomas Reps. 2021. On the complexity of bidirected interleaved Dyck-reachability. Proceedings of the ACM on Programming Languages, 5, POPL (2021), 59:1–59:28. https://doi.org/10.1145/3434340 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. David Melski and Thomas Reps. 2000. Interconvertibility of a class of set constraints and context-free-language reachability. Theoretical Computer Science, 248, 1-2 (2000), 29–98. https://doi.org/10.1016/S0304-3975(00)00049-9 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Ana Milanova. 2020. FlowCFL: generalized type-based reachability analysis: graph reduction and equivalence of CFL-based and type-based reachability. Proceedings of the ACM on Programming Languages, 4, OOPSLA (2020), 178:1–178:29. https://doi.org/10.1145/3428246 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Neo4j. 2022. Graph data platform. https://neo4j.com/ Google ScholarGoogle Scholar
  38. You Peng, Ying Zhang, Xuemin Lin, Lu Qin, and Wenjie Zhang. 2020. Answering billion-scale label-constrained reachability queries within microsecond. Proceedings of the VLDB Endowment, 13, 6 (2020), 812–825. https://doi.org/10.14778/3380750.3380753 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Polyvios Pratikakis, Jeffrey S. Foster, and Michael Hicks. 2006. Existential label flow inference via CFL reachability. In Proceedings of the 13th International Static Analysis Symposium (SAS ’06). Springer, 88–106. https://doi.org/10.1007/11823230_7 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Jakob Rehof and Manuel Fähndrich. 2001. Type-based flow analysis: From polymorphic subtyping to CFL-reachability. In Proceedings of the 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’01). ACM, 54–66. https://doi.org/10.1145/360204.360208 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Thomas Reps. 1995. Shape analysis as a generalized path problem. In Proceedings of the 1995 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation (PEPM ’95). ACM, 1–11. https://doi.org/10.1145/215465.215466 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Thomas Reps. 1998. Program analysis via graph reachability. Information and Software Technology, 40, 11-12 (1998), 701–726. https://doi.org/10.1016/S0950-5849(98)00093-7 Google ScholarGoogle ScholarCross RefCross Ref
  43. Thomas Reps. 2000. Undecidability of context-sensitive data-dependence analysis. ACM Transactions on Programming Languages and Systems (TOPLAS), 22, 1 (2000), 162–186. https://doi.org/10.1145/345099.345137 Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Thomas Reps, Susan Horwitz, and Mooly Sagiv. 1995. Precise interprocedural dataflow analysis via graph reachability. In Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’95). ACM, 49–61. https://doi.org/10.1145/199448.199462 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Thomas Reps, Susan Horwitz, Mooly Sagiv, and Genevieve Rosay. 1994. Speeding up slicing. In Proceedings of the 2nd ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE ’94). ACM, 11–20. https://doi.org/10.1145/193173.195287 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Michael Rice and Vassilis Tsotras. 2010. Graph indexing of road networks for shortest path queries with label restrictions. Proceedings of the VLDB Endowment, 4, 2 (2010), 69–80. https://doi.org/10.14778/1921071.1921074 Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Liam Roditty and Uri Zwick. 2008. Improved dynamic reachability algorithms for directed graphs. SIAM J. Comput., 37, 5 (2008), 1455–1471. https://doi.org/10.1137/060650271 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Philipp Dominik Schubert, Ben Hermann, and Eric Bodden. 2019. Phasar: An inter-procedural static analysis framework for c/c++. In International Conference on Tools and Algorithms for the Construction and Analysis of Systems. Springer, 393–410. https://doi.org/10.1007/978-3-030-17465-1_22 Google ScholarGoogle ScholarCross RefCross Ref
  49. Stephan Seufert, Avishek Anand, Srikanta Bedathur, and Gerhard Weikum. 2013. Ferrari: Flexible and efficient reachability range assignment for graph indexing. In Proceedings of the 29nd International Conference on Data Engineering (ICDE ’13). IEEE, 1009–1020. https://doi.org/10.1109/ICDE.2013.6544893 Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Lei Shang, Xinwei Xie, and Jingling Xue. 2012. On-demand dynamic summary-based points-to analysis. In Proceedings of the 10th International Symposium on Code Generation and Optimization (CGO ’12). ACM, 264–274. https://doi.org/10.1145/2259016.2259050 Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Qingkai Shi, Xiao Xiao, Rongxin Wu, Jinguo Zhou, Gang Fan, and Charles Zhang. 2018. Pinpoint: Fast and precise sparse value flow analysis for million lines of code. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’18). ACM, 693–706. https://doi.org/10.1145/3192366.3192418 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Klaus Simon. 1988. An improved algorithm for transitive closure on acyclic digraphs. Theoretical Computer Science, 58, 1-3 (1988), 325–346. https://doi.org/10.1007/3-540-16761-7_87 Google ScholarGoogle ScholarCross RefCross Ref
  53. Yannis Smaragdakis, George Kastrinis, and George Balatsouras. 2014. Introspective Analysis: Context-Sensitivity, across the Board. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’14). ACM, 485–495. https://doi.org/10.1145/2594291.2594320 Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Johannes Späth, Karim Ali, and Eric Bodden. 2019. Context-, Flow-, and Field-Sensitive Data-Flow Analysis Using Synchronized Pushdown Systems. Proceedings of the ACM on Programming Languages, 3, POPL (2019), 48:1–48:29. https://doi.org/10.1145/3290361 Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Manu Sridharan, Denis Gopan, Lexin Shan, and Rastislav Bodík. 2005. Demand-driven points-to analysis for Java. In Proceedings of the 20th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ’05). ACM, 59–76. https://doi.org/10.1145/1094811.1094817 Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Yulei Sui and Jingling Xue. 2016. SVF: Interprocedural static value-flow analysis in LLVM. In Proceedings of the 25th International Conference on Compiler Construction (CC ’16). ACM, 265–266. https://doi.org/10.1145/2892208.2892235 Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Yulei Sui and Jingling Xue. 2020. Value-flow-based demand-driven pointer analysis for C and C++. IEEE Transactions on Software Engineering, 46, 8 (2020), 812–835. https://doi.org/10.1109/TSE.2018.2869336 Google ScholarGoogle ScholarCross RefCross Ref
  58. Yulei Sui, Ding Ye, and Jingling Xue. 2014. Detecting memory leaks statically with full-sparse value-flow analysis. IEEE Transactions on Software Engineering, 40, 2 (2014), 107–122. https://doi.org/10.1109/TSE.2014.2302311 Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Hao Tang, Xiaoyin Wang, Lingming Zhang, Bing Xie, Lu Zhang, and Hong Mei. 2015. Summary-based context-sensitive data-dependence analysis in presence of callbacks. In Proceedings of the 42nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). ACM, 83–95. https://doi.org/10.1145/2676726.2676997 Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Robert Tarjan. 1972. Depth-first search and linear graph algorithms. SIAM journal on computing, 1, 2 (1972), 146–160. https://doi.org/10.1137/0201010 Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Raoul-Gabriel Urma and Alan Mycroft. 2015. Source-Code Queries with Graph Databases-with Application to Programming Language Usage and Evolution. Science of Computer Programming, 97, P1 (2015), 127–134. https://doi.org/10.1016/j.scico.2013.11.010 Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Jacobo Valdes, Robert Tarjan, and Eugene Lawler. 1982. The recognition of series parallel digraphs. SIAM J. Comput., 11, 2 (1982), 298–313. https://doi.org/10.1137/0211023 Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Lucien DJ Valstar, George HL Fletcher, and Yuichi Yoshida. 2017. Landmark indexing for evaluation of label-constrained reachability queries. In Proceedings of the 2017 ACM International Conference on Management of Data (SIGMOD ’11). ACM, 345–358. https://doi.org/10.1145/3035918.3035955 Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Haixun Wang, Hao He, Jun Yang, Philip S. Yu, and Jeffrey Xu Yu. 2006. Dual labeling: Answering graph reachability queries in constant time. In Proceedings of the 22nd International Conference on Data Engineering (ICDE ’06). IEEE, 75–75. https://doi.org/10.1109/ICDE.2006.53 Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Kai Wang, Aftab Hussain, Zhiqiang Zuo, Guoqing Xu, and Ardalan Amiri Sani. 2017. Graspan: A single-machine disk-based graph system for interprocedural static analyses of large-scale systems code. In Proceedings of the 22nd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’17). ACM, 389–404. https://doi.org/10.1145/3037697.3037744 Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Hao Wei, Jeffrey Xu Yu, Can Lu, and Ruoming Jin. 2014. Reachability querying: An independent permutation labeling approach. Proceedings of the VLDB Endowment, 7, 12 (2014), 1191–1202. https://doi.org/10.14778/2732977.2732992 Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Cathrin Weiss, Panagiotis Karras, and Abraham Bernstein. 2008. Hexastore: Sextuple Indexing for Semantic Web Data Management. Proceedings of the VLDB Endowment, 1, 1 (2008), 1008–1019. https://doi.org/10.14778/1453856.1453965 Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Cathrin Weiss, Cindy Rubio-González, and Ben Liblit. 2015. Database-backed program analysis for scalable error propagation. In Proceedings of the 37th International Conference on Software Engineering (ICSE ’15). IEEE, 586–597. https://doi.org/10.1109/ICSE.2015.75 Google ScholarGoogle ScholarCross RefCross Ref
  69. Virginia Vassilevska Williams. 2012. Multiplying matrices faster than Coppersmith-Winograd. In Proceedings of the 44th ACM Symposium on Theory of Computing (STOC ’12). ACM, 887–898. https://doi.org/10.1145/2213977.2214056 Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Guoqing Xu, Atanas Rountev, and Manu Sridharan. 2009. Scaling CFL-reachability-based points-to analysis using context-sensitive must-not-alias analysis. In Proceedings of the 23rd European Conference on Object-Oriented Programming (ECOOP ’09). Springer, 98–122. https://doi.org/10.1007/978-3-642-03013-0_6 Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Fabian Yamaguchi, Nico Golde, Daniel Arp, and Konrad Rieck. 2014. Modeling and discovering vulnerabilities with code property graphs. In Proceedings of the 35th IEEE Symposium on Security and Privacy (S&P ’14). IEEE, 590–604. https://doi.org/10.1109/SP.2014.44 Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Dacong Yan, Guoqing Xu, and Atanas Rountev. 2011. Demand-driven context-sensitive alias analysis for Java. In Proceedings of the 20th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA ’11). ACM, 155–165. https://doi.org/10.1145/2001420.2001440 Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Mihalis Yannakakis. 1990. Graph-theoretic methods in database theory. In Proceedings of the 9th ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems (PODS ’90). ACM, 230–242. https://doi.org/10.1145/298514.298576 Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Hilmi Yildirim, Vineet Chaoji, and Mohammed J. Zaki. 2010. Grail: Scalable reachability index for large graphs. Proceedings of the VLDB Endowment, 3, 1-2 (2010), 276–284. https://doi.org/10.14778/1920841.1920879 Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Daniel H. Younger. 1967. Recognition and parsing of context-free languages in time n3. Information and Control, 10, 2 (1967), 189–208. https://doi.org/10.1016/S0019-9958(67)80007-X Google ScholarGoogle ScholarCross RefCross Ref
  76. Hao Yuan and Patrick Eugster. 2009. An efficient algorithm for solving the dyck-cfl reachability problem on trees. In Proceedings of the 18th European Symposium on Programming (ESOP ’09). Springer, 175–189. https://doi.org/10.1007/978-3-642-00590-9_13 Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Qirun Zhang, Michael R. Lyu, Hao Yuan, and Zhendong Su. 2013. Fast algorithms for Dyck-CFL-reachability with applications to alias analysis. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’13). ACM, 435–446. https://doi.org/10.1145/2499370.2462159 Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Qirun Zhang and Zhendong Su. 2017. Context-sensitive data-dependence analysis via linear conjunctive language reachability. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL ’17). ACM, 344–358. https://doi.org/10.1145/3009837.3009848 Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Qirun Zhang, Xiao Xiao, Charles Zhang, Hao Yuan, and Zhendong Su. 2014. Efficient subcubic alias analysis for C. In Proceedings of the 2014 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ’14). ACM, 829–845. https://doi.org/10.1145/2660193.2660213 Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Xin Zheng and Radu Rugina. 2008. Demand-driven alias analysis for C. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’08). ACM, 197–208. https://doi.org/10.1145/1328438.1328464 Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Junfeng Zhou, Shijie Zhou, Jeffrey Xu Yu, Hao Wei, Ziyang Chen, and Xian Tang. 2017. DAG reduction: Fast answering reachability queries. In Proceedings of the 2017 ACM International Conference on Management of Data (SIGMOD ’17). ACM, 375–390. https://doi.org/10.1145/3035918.3035927 Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. Li Zhou, Ren Chen, Yinglong Xia, and Radu Teodorescu. 2018. C-Graph: A highly efficient concurrent graph reachability query framework. In Proceedings of the 47th International Conference on Parallel Processing (ICPP ’18). ACM, 79:1–79:10. https://doi.org/10.1145/3225058.3225136 Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. Andy Diwen Zhu, Wenqing Lin, Sibo Wang, and Xiaokui Xiao. 2014. Reachability queries on large dynamic graphs: A total order approach. In Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data (SIGMOD ’14). ACM, 1323–1334. https://doi.org/10.1145/2588555.2612181 Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Lei Zou, Kun Xu, Jeffrey Xu Yu, Lei Chen, Yanghua Xiao, and Dongyan Zhao. 2014. Efficient processing of label-constraint reachability queries in large graphs. Information Systems, 40, MAR (2014), 47–66. https://doi.org/10.1016/j.is.2013.10.003 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Indexing the extended Dyck-CFL reachability for context-sensitive program analysis

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Article Metrics

          • Downloads (Last 12 months)160
          • Downloads (Last 6 weeks)21

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!