{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,10,27]],"date-time":"2023-10-27T05:10:39Z","timestamp":1698383439064},"reference-count":16,"publisher":"Wiley","issue":"3","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4200,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Softw. Maint: Res. Pract."],"published-print":{"date-parts":[[1995,5]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Interprocedural dataflow analysis is useful in compiler optimization, automatic vectorization and parallelization, dataflow anomaly detection, and software maintenance applications such as program revalidation, and software tools that make a program more understandable by showing data dependencies. These applications require the solution of dataflow problems such as reaching definitions, live variables, available expressions, and definition\u2010use chains. When solving these problems interprocedurally, the context of each call must be taken into account. In this paper, a method to solve this kind of dataflow problem is presented. This method consists of special dataflow equations that are solved for a program flowgraph. In deference to calling context, separate sets, called <jats:italic>entry<\/jats:italic> and <jats:italic>body<\/jats:italic> sets, are maintained at each node in the flowgraph. The entry set contains calling\u2010context effects that enter a procedure. The body set contains effects that result from statements in the procedure. By isolating calling\u2010context effects in the entry set, a call's nonkilled calling context is preserved by means of a simple intersection operation done at the return node for that call. The main advantages of this method are its precision and low complexity, and the fact that the presence of recursion does not affect the accuracy of the result.<\/jats:p>","DOI":"10.1002\/smr.4360070304","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T14:11:17Z","timestamp":1163772677000},"page":"177-202","source":"Crossref","is-referenced-by-count":2,"title":["Context\u2010dependent flow\u2010sensitive interprocedural dataflow analysis"],"prefix":"10.1002","volume":"7","author":[{"given":"Kurt R.","family":"Johmann","sequence":"first","affiliation":[]},{"given":"Sying\u2010Syang","family":"Liu","sequence":"additional","affiliation":[]},{"given":"Stephen S.","family":"Yau","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_1","volume-title":"Compilers, Principles, Techniques and Tools","author":"Aho A.","year":"1986"},{"key":"e_1_2_1_3_1","first-page":"398","volume-title":"Proceedings of the IFIP Congress 1974","author":"Allen F.","year":"1974"},{"key":"e_1_2_1_4_1","doi-asserted-by":"crossref","unstructured":"Banning J. (1979) \u2018An efficient way to find the side effects of procedure calls and the aliases of variables\u2019 Conference Record of the 6th ACM Symposium on Principles of Programming Languages ACM New York pp.29\u201341.","DOI":"10.1145\/567752.567756"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/960116.53995"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/960116.53996"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/24039.24041"},{"key":"e_1_2_1_8_1","unstructured":"Harrold M.andSoffa M.(1990) \u2018Computation of interprocedural definition and use dependencies\u2019 inProceedings of the IEEE Computer Society 1990 International Conference on Computer Languages New Orleans LA IEEE Computer Society Press Los Alamitos CA pp.79\u201384."},{"key":"e_1_2_1_9_1","volume-title":"Flow Analysis of Computer Programs","author":"Hecht M.","year":"1977"},{"issue":"1","key":"e_1_2_1_10_1","doi-asserted-by":"crossref","first-page":"26","DOI":"10.1145\/77606.77608","article-title":"Interprocedural slicing using dependence graphs","volume":"12","author":"Horwitz S.","year":"1990","journal-title":"ACM Transactions on Programming Languages and Systems"},{"key":"e_1_2_1_11_1","doi-asserted-by":"crossref","unstructured":"Landi W.andRyder B.(1991) \u2018Pointer\u2010induced aliasing: a problem classification\u2019 inConference Record of the 18th ACM Symposium on Principles of Programming Languages ACM New York pp.93\u2013103.","DOI":"10.1145\/99583.99599"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/143103.143137"},{"key":"e_1_2_1_13_1","doi-asserted-by":"crossref","unstructured":"Marlowe T.andRyder B.(1990) \u2018An efficient hybrid algorithm for incremental data flow analysis\u2019 inConference Record of the 17th ACM Symposium on Principles of Programming Languages ACM New York pp.184\u2013196.","DOI":"10.1145\/96709.96728"},{"key":"e_1_2_1_14_1","doi-asserted-by":"crossref","unstructured":"Myers E. (1981) \u2018A precise interprocedural data flow analysis algorithm\u2019 inConference Record of the 8th ACM Symposium on Principles of Programming Languages ACM New York pp.219\u2013230.","DOI":"10.1145\/567532.567556"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380190205"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/322123.322135"},{"key":"e_1_2_1_17_1","first-page":"189","volume-title":"Program Flow Analysis: Theory and Applications","author":"Sharir M.","year":"1981"}],"container-title":["Journal of Software Maintenance: Research and Practice"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fsmr.4360070304","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/smr.4360070304","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,26]],"date-time":"2023-10-26T06:05:45Z","timestamp":1698300345000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/smr.4360070304"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1995,5]]},"references-count":16,"journal-issue":{"issue":"3","published-print":{"date-parts":[[1995,5]]}},"alternative-id":["10.1002\/smr.4360070304"],"URL":"https:\/\/doi.org\/10.1002\/smr.4360070304","archive":["Portico"],"relation":{},"ISSN":["1040-550X","1096-908X"],"issn-type":[{"value":"1040-550X","type":"print"},{"value":"1096-908X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1995,5]]}}}