Implementing Andersen Alias Analysis in LLVM
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Expression Rematerialization for VLIW DSP Processors with Distributed Register Files ?
Expression Rematerialization for VLIW DSP Processors with Distributed Register Files ? Chung-Ju Wu, Chia-Han Lu, and Jenq-Kuen Lee Department of Computer Science, National Tsing-Hua University, Hsinchu 30013, Taiwan {jasonwu,chlu}@pllab.cs.nthu.edu.tw,[email protected] Abstract. Spill code is the overhead of memory load/store behavior if the available registers are not sufficient to map live ranges during the process of register allocation. Previously, works have been proposed to reduce spill code for the unified register file. For reducing power and cost in design of VLIW DSP processors, distributed register files and multi- bank register architectures are being adopted to eliminate the amount of read/write ports between functional units and registers. This presents new challenges for devising compiler optimization schemes for such ar- chitectures. This paper aims at addressing the issues of reducing spill code via rematerialization for a VLIW DSP processor with distributed register files. Rematerialization is a strategy for register allocator to de- termine if it is cheaper to recompute the value than to use memory load/store. In the paper, we propose a solution to exploit the character- istics of distributed register files where there is the chance to balance or split live ranges. By heuristically estimating register pressure for each register file, we are going to treat them as optional spilled locations rather than spilling to memory. The choice of spilled location might pre- serve an expression result and keep the value alive in different register file. It increases the possibility to do expression rematerialization which is effectively able to reduce spill code. -
Alias Manager 4
CHAPTER 4 Alias Manager 4 This chapter describes how your application can use the Alias Manager to establish and resolve alias records, which are data structures that describe file system objects (that is, files, directories, and volumes). You create an alias record to take a “fingerprint” of a file system object, usually a file, that you might need to locate again later. You can store the alias record, instead of a file system specification, and then let the Alias Manager find the file again when it’s needed. The Alias Manager contains algorithms for locating files that have been moved, renamed, copied, or restored from backup. Note The Alias Manager lets you manage alias records. It does not directly manipulate Finder aliases, which the user creates and manages through the Finder. The chapter “Finder Interface” in Inside Macintosh: Macintosh Toolbox Essentials describes Finder aliases and ways to accommodate them in your application. ◆ The Alias Manager is available only in system software version 7.0 or later. Use the Gestalt function, described in the chapter “Gestalt Manager” of Inside Macintosh: Operating System Utilities, to determine whether the Alias Manager is present. Read this chapter if you want your application to create and resolve alias records. You might store an alias record, for example, to identify a customized dictionary from within a word-processing document. When the user runs a spelling checker on the document, your application can ask the Alias Manager to resolve the record to find the correct dictionary. 4 To use this chapter, you should be familiar with the File Manager’s conventions for Alias Manager identifying files, directories, and volumes, as described in the chapter “Introduction to File Management” in this book. -
Equality Saturation: a New Approach to Optimization
Logical Methods in Computer Science Vol. 7 (1:10) 2011, pp. 1–37 Submitted Oct. 12, 2009 www.lmcs-online.org Published Mar. 28, 2011 EQUALITY SATURATION: A NEW APPROACH TO OPTIMIZATION ROSS TATE, MICHAEL STEPP, ZACHARY TATLOCK, AND SORIN LERNER Department of Computer Science and Engineering, University of California, San Diego e-mail address: {rtate,mstepp,ztatlock,lerner}@cs.ucsd.edu Abstract. Optimizations in a traditional compiler are applied sequentially, with each optimization destructively modifying the program to produce a transformed program that is then passed to the next optimization. We present a new approach for structuring the optimization phase of a compiler. In our approach, optimizations take the form of equality analyses that add equality information to a common intermediate representation. The op- timizer works by repeatedly applying these analyses to infer equivalences between program fragments, thus saturating the intermediate representation with equalities. Once saturated, the intermediate representation encodes multiple optimized versions of the input program. At this point, a profitability heuristic picks the final optimized program from the various programs represented in the saturated representation. Our proposed way of structuring optimizers has a variety of benefits over previous approaches: our approach obviates the need to worry about optimization ordering, enables the use of a global optimization heuris- tic that selects among fully optimized programs, and can be used to perform translation validation, even on compilers other than our own. We present our approach, formalize it, and describe our choice of intermediate representation. We also present experimental results showing that our approach is practical in terms of time and space overhead, is effective at discovering intricate optimization opportunities, and is effective at performing translation validation for a realistic optimizer. -
Television Shows
Libraries TELEVISION SHOWS The Media and Reserve Library, located on the lower level west wing, has over 9,000 videotapes, DVDs and audiobooks covering a multitude of subjects. For more information on these titles, consult the Libraries' online catalog. 1950s TV's Greatest Shows DVD-6687 Age and Attitudes VHS-4872 24 Season 1 (Discs 1-3) DVD-2780 Discs Age of AIDS DVD-1721 24 Season 1 (Discs 1-3) c.2 DVD-2780 Discs Age of Kings, Volume 1 (Discs 1-3) DVD-6678 Discs 24 Season 1 (Discs 4-6) DVD-2780 Discs Age of Kings, Volume 2 (Discs 4-5) DVD-6679 Discs 24 Season 1 (Discs 4-6) c.2 DVD-2780 Discs Alfred Hitchcock Presents Season 1 DVD-7782 24 Season 2 (Discs 1-4) DVD-2282 Discs Alias Season 1 (Discs 1-3) DVD-6165 Discs 24 Season 2 (Discs 5-7) DVD-2282 Discs Alias Season 1 (Discs 4-6) DVD-6165 Discs 30 Days Season 1 DVD-4981 Alias Season 2 (Discs 1-3) DVD-6171 Discs 30 Days Season 2 DVD-4982 Alias Season 2 (Discs 4-6) DVD-6171 Discs 30 Days Season 3 DVD-3708 Alias Season 3 (Discs 1-4) DVD-7355 Discs 30 Rock Season 1 DVD-7976 Alias Season 3 (Discs 5-6) DVD-7355 Discs 90210 Season 1 (Discs 1-3) c.1 DVD-5583 Discs Alias Season 4 (Discs 1-3) DVD-6177 Discs 90210 Season 1 (Discs 1-3) c.2 DVD-5583 Discs Alias Season 4 (Discs 4-6) DVD-6177 Discs 90210 Season 1 (Discs 4-5) c.1 DVD-5583 Discs Alias Season 5 DVD-6183 90210 Season 1 (Discs 4-6) c.2 DVD-5583 Discs All American Girl DVD-3363 Abnormal and Clinical Psychology VHS-3068 All in the Family Season One DVD-2382 Abolitionists DVD-7362 Alternative Fix DVD-0793 Abraham and Mary Lincoln: A House -
Precise Null Pointer Analysis Through Global Value Numbering
Precise Null Pointer Analysis Through Global Value Numbering Ankush Das1 and Akash Lal2 1 Carnegie Mellon University, Pittsburgh, PA, USA 2 Microsoft Research, Bangalore, India Abstract. Precise analysis of pointer information plays an important role in many static analysis tools. The precision, however, must be bal- anced against the scalability of the analysis. This paper focusses on improving the precision of standard context and flow insensitive alias analysis algorithms at a low scalability cost. In particular, we present a semantics-preserving program transformation that drastically improves the precision of existing analyses when deciding if a pointer can alias Null. Our program transformation is based on Global Value Number- ing, a scheme inspired from compiler optimization literature. It allows even a flow-insensitive analysis to make use of branch conditions such as checking if a pointer is Null and gain precision. We perform experiments on real-world code and show that the transformation improves precision (in terms of the number of dereferences proved safe) from 86.56% to 98.05%, while incurring a small overhead in the running time. Keywords: Alias Analysis, Global Value Numbering, Static Single As- signment, Null Pointer Analysis 1 Introduction Detecting and eliminating null-pointer exceptions is an important step towards developing reliable systems. Static analysis tools that look for null-pointer ex- ceptions typically employ techniques based on alias analysis to detect possible aliasing between pointers. Two pointer-valued variables are said to alias if they hold the same memory location during runtime. Statically, aliasing can be de- cided in two ways: (a) may-alias [1], where two pointers are said to may-alias if they can point to the same memory location under some possible execution, and (b) must-alias [27], where two pointers are said to must-alias if they always point to the same memory location under all possible executions. -
A Formally-Verified Alias Analysis
A Formally-Verified Alias Analysis Valentin Robert1;2 and Xavier Leroy1 1 INRIA Paris-Rocquencourt 2 University of California, San Diego [email protected], [email protected] Abstract. This paper reports on the formalization and proof of sound- ness, using the Coq proof assistant, of an alias analysis: a static analysis that approximates the flow of pointer values. The alias analysis con- sidered is of the points-to kind and is intraprocedural, flow-sensitive, field-sensitive, and untyped. Its soundness proof follows the general style of abstract interpretation. The analysis is designed to fit in the Comp- Cert C verified compiler, supporting future aggressive optimizations over memory accesses. 1 Introduction Alias analysis. Most imperative programming languages feature pointers, or object references, as first-class values. With pointers and object references comes the possibility of aliasing: two syntactically-distinct program variables, or two semantically-distinct object fields can contain identical pointers referencing the same shared piece of data. The possibility of aliasing increases the expressiveness of the language, en- abling programmers to implement mutable data structures with sharing; how- ever, it also complicates tremendously formal reasoning about programs, as well as optimizing compilation. In this paper, we focus on optimizing compilation in the presence of pointers and aliasing. Consider, for example, the following C program fragment: ... *p = 1; *q = 2; x = *p + 3; ... Performance would be increased if the compiler propagates the constant 1 stored in p to its use in *p + 3, obtaining ... *p = 1; *q = 2; x = 4; ... This optimization, however, is unsound if p and q can alias. -
Practical and Accurate Low-Level Pointer Analysis
Practical and Accurate Low-Level Pointer Analysis Bolei Guo Matthew J. Bridges Spyridon Triantafyllis Guilherme Ottoni Easwaran Raman David I. August Department of Computer Science, Princeton University {bguo, mbridges, strianta, ottoni, eraman, august}@princeton.edu Abstract High−Level IR Low−Level IR Pointer SuperBlock .... Inlining Opti Scheduling .... Analysis Formation Pointer analysis is traditionally performed once, early Source Machine Code Code in the compilation process, upon an intermediate repre- Lowering sentation (IR) with source-code semantics. However, per- forming pointer analysis only once at this level imposes a Figure 1. Traditional compiler organization phase-ordering constraint, causing alias information to be- char A[10],B[10],C[10]; . come stale after subsequent code transformations. More- foo() { int i; over, high-level pointer analysis cannot be used at link time char *p; or run time, where the source code is unavailable. for (i=0;i<10;i++) { if (...) 1: p = A 2: p = B 1: p = A 2: p = B This paper advocates performing pointer analysis on a 1: p = A; 3': C[i] = p[i] 3: C[i] = p[i] else low-level intermediate representation. We present the first 2: p = B; 4': A[i] = ... 4: A[i] = ... 3: C[i] = p[i]; context-sensitive and partially flow-sensitive points-to anal- 4: A[i] = ...; 3: C[i] = p[i] } 4: A[i] = ... ysis designed to operate at the assembly level. As we will } demonstrate, low-level pointer analysis can be as accurate (a) Source code (b) Source code CFG (c) Transformed code CFG as high-level analysis. Additionally, our low-level pointer analysis also enables a quantitative comparison of prop- agating high-level pointer analysis results through subse- Figure 2. -
Aliases, Intro. to Optimization
Aliasing Two variables are aliased if they can refer to the same storage location. Possible Sources:pointers, parameter passing, storage overlap... Ex. address of a passed x and y are aliased! Pointer Analysis, Alias Analysis to get less conservative info Needed for correct, aggressive optimization Procedures: terminology a, e global b,c formal arguments d local call site with actual arguments At procedure call, formals bound to actuals, may be aliased Ex. (b,a) , (c, d) Globals, actuals may be modified, used Ex. a, b Call Graphs Determines possible flow of control, interprocedurally G = (N, LE, s) N set of nodes LE set of labelled edges n m s start node Qu: Why need call site labels? Why list? Example Call Graph 1,2 3 4 5 6 7 Interprocedural Dataflow Analysis Based on call graph: forward, backward Gen, Kill: Need to summarize procedures per call Flow sensitive: take procedure's control flow into account Flow insensitive: ignore procedure's control flow Difficulties: Hard, complex Flow sensitive alias analysis intractable Separate compilation? Scale compiler can do both flow sensitive and insensitive Most compilers ultraconservative, or flow insensitive Scalar Replacement of Aggregates Use scalar temporary instead of aggregate variable Compiler may limit optimization to such scalars Can do better register allocation, constant propagation,... Particulary useful when small number of constant values Can use constant propagation, dead code elimination to specialize code Value Numbering of Basic Blocks Eliminates computations whose values are already computed in BB value needn't be constant Method: Value Number Hash Table Global Copy Propagation Given A:=B, replace later uses of A by B, as long as A,B not redefined (with dead code elim) Global Copy Propagation Ex. -
Telomerase Activity in Cell Lines of Pediatric Soft Tissue Sarcomas
0031-3998/03/5405-0718 PEDIATRIC RESEARCH Vol. 54, No. 5, 2003 Copyright © 2003 International Pediatric Research Foundation, Inc. Printed in U.S.A. Telomerase Activity in Cell Lines of Pediatric Soft Tissue Sarcomas ELKE KLEIDEITER, MATTHIAS SCHWAB, ULRIKE FRIEDRICH, EWA KOSCIELNIAK, BEAT W. SCHÄFER, AND ULRICH KLOTZ Dr. Margarete Fischer-Bosch Institute of Clinical Pharmacology, D-70376 Stuttgart, Germany [E.K., M.S., U.F., U.K.], Department of Pediatric Oncology/Hematology, Olga Hospital, D-70176 Stuttgart, Germany [E.K.], and Division of Clinical Chemistry and Biochemistry, Department of Pediatrics, University Hospital, CH-8032 Zürich, Switzerland [B.W.S.] ABSTRACT Telomeres and their maintenance by telomerase have been expression of hTERT mRNA. Thus, we suggest that the signif- implicated to play an important role in carcinogenesis. As almost icant difference (p Ͻ 0.01) in the less aggressive clinical behav- all malignant tumors express telomerase (in contrast to normal ior of embryonal rhabdomyosarcomas in comparison to other somatic cells), assessment of its activity has been proposed as a subtypes may be due to differences in telomerase expression. diagnostic and prognostic tool. To test the prognostic value of Taken together, our cell line experiments imply that telomerase telomerase in pediatric soft tissue sarcoma (STS), we analyzed activity might be a biologic marker for stratification between telomere length (by telomere restriction fragment analysis), te- STS with different clinical prognosis. (Pediatr Res 54: 718–723, lomerase activity (by modified telomerase repeat amplification 2003) protocol assay), and expression of human telomerase reverse transcriptase (hTERT) mRNA (by TaqMan technique) in cell Abbreviations lines of different types of STS from 12 children and adolescents. -
Alias Grace by Margaret Atwood Adapted for the Stage by Jennifer Blackmer Directed by RTE Co-Founder Karen Kessler
Contact: Cathy Taylor / Kelsey Moorhouse Cathy Taylor Public Relations, Inc. For Immediate Release [email protected] June 28, 2017 773-564-9564 Rivendell Theatre Ensemble in association with Brian Nitzkin announces cast for the World Premiere of Alias Grace By Margaret Atwood Adapted for the Stage by Jennifer Blackmer Directed by RTE Co-Founder Karen Kessler Cast features RTE members Ashley Neal and Jane Baxter Miller with Steve Haggard, Maura Kidwell, Ayssette Muñoz, David Raymond, Amro Salama and Drew Vidal September 1 – October 14, 2017 Chicago, IL—Rivendell Theatre Ensemble (RTE), Chicago’s only Equity theatre dedicated to producing new work with women at the core, in association with Brian Nitzkin, announces casting for the world premiere of Alias Grace by Margaret Atwood, adapted for the stage by Jennifer Blackmer, and directed by RTE Co-Founder Karen Kessler. Alias Grace runs September 1 – October 14, 2017, at Rivendell Theatre Ensemble, 5779 N. Ridge Avenue in Chicago. The press opening is Wednesday, September 13 at 7:00pm. This production of Alias Grace replaces the previously announced Cal in Camo, which will now be presented in January 2018. The cast includes RTE members Ashley Neal (Grace Marks) and Jane Baxter Miller (Mrs. Humphrey), with Steve Haggard (Simon Jordan), Maura Kidwell (Nancy Montgomery), Ayssette Muñoz (Mary Whitney), David Raymond (James McDermott), Amro Salama (Jerimiah /Jerome Dupont) and Drew Vidal (Thomas Kinnear). The designers include RTE member Elvia Moreno (scenic), RTE member Janice Pytel (costumes) and Michael Mahlum (lighting). A world premiere adaptation of Margaret Atwood's acclaimed novel Alias Grace takes a look at one of Canada's most notorious murderers. -
Spot the Alias
Spot the alias DIRECTIONS: STEP 1: CUT ALONG DOTTED LINE. STEP 2: FOLD IN HALF VERTICALLY. STEP 3: FOLD INTO ACCORDIAN. STEP 4: PLACE IN WALLET! CORN EGGS FISH MILK corn sugar, corn syrup, albumin, conalbumin, (includes crustaceans ammonium caseinate, corn syrup solids, egg substitutes, globulin, and shellfi sh) calcium caseinate, cornstarch, crystalline lecithin (from egg), anchovy, bass, bluefi sh, magnesium caseinate, fructose, crystalline livetin,lysozyme, meringue, calamari, carp, catfi sh, potassium caseinate, glucose, dextrose, ovalbumin, char, clam, cod, cockle, sodium caseinate, glucose, glucose syrup, ovomacroglobulin, conch, crab, crayfi sh, eel, casein, caseinate, * NOTE: SPOT high fructose corn syrup ovomucin, ovomucoid, escargot, halibut, herring, curds, dry milk, hydrolyzed This guide should not (HFCS), lecithin (from corn), ovotransferrin, ovovitellin, lobster, mackerel, casein, hydrolyzed milk be considered the fi nal THE word on your allergen maltodextrin silico-albuminate, mahi-mahi, marlin, protein, lactalbumin, ® and its “aliases” – Simplesse , vitellin mussels, octopus, orange lactate, lactoferrin, ALIAS lactoglobulin, lactose, speak to your doctor roughy, pickerel, pike, about obtaining a An egg by any modifi ed milk ingredients, pollock, prawns, rockfi sh, complete list. other name… salmon, sardine, shark, Opta™, can be confusing! shrimp, scallops, sea sour cream, sour milk Watch for these urchin, smelt, snails, solids, whey, possible aliases snapper, swordfi sh, squid, whey protein concentrate, rennet of common tilapia, -
Dead Code Elimination Based Pointer Analysis for Multithreaded Programs
Journal of the Egyptian Mathematical Society (2012) 20, 28–37 Egyptian Mathematical Society Journal of the Egyptian Mathematical Society www.etms-eg.org www.elsevier.com/locate/joems ORIGINAL ARTICLE Dead code elimination based pointer analysis for multithreaded programs Mohamed A. El-Zawawy Department of Mathematics, Faculty of Science, Cairo University, Giza 12316, Egypt Available online 2 February 2012 Abstract This paper presents a new approach for optimizing multitheaded programs with pointer constructs. The approach has applications in the area of certified code (proof-carrying code) where a justification or a proof for the correctness of each optimization is required. The optimization meant here is that of dead code elimination. Towards optimizing multithreaded programs the paper presents a new operational semantics for parallel constructs like join-fork constructs, parallel loops, and conditionally spawned threads. The paper also presents a novel type system for flow-sensitive pointer analysis of multithreaded pro- grams. This type system is extended to obtain a new type system for live-variables analysis of mul- tithreaded programs. The live-variables type system is extended to build the third novel type system, proposed in this paper, which carries the optimization of dead code elimination. The justification mentioned above takes the form of type derivation in our approach. ª 2011 Egyptian Mathematical Society. Production and hosting by Elsevier B.V. All rights reserved. 1. Introduction (a) concealing suspension caused by some commands, (b) mak- ing it easier to build huge software systems, (c) improving exe- One of the mainstream programming approaches today is mul- cution of programs specially those that are executed on tithreading.