\documentclass[preprint]{sigplanconf}

\usepackage{epsfig} 
\usepackage{latexsym} 
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{refs}
\usepackage{xspace}
%\usepackage{times}
\input{macro}
\input{macros}
\usepackage{hyperref}
\usepackage{changebar}
\usepackage{ifpdf}
\usepackage[usenames]{colortbl}
\usepackage{grammar}
%\usepackage[usenames]{color}
%%% For Linux, use the below line
\usepackage[pstricks1-10]{vaucanson-g}
%%% For OS X, use the below line
%\usepackage{vaucanson-g}
\usepackage{multirow}



\newtheorem{definition}{Definition}[section]
\newcommand\comment[1]{}

\def\delt{$\delta$-transformer}
\def\delts{$\delta$-transformers}
\def\trelation{transformer}
\def\trelations{transformers}
%\def\trelation{{\em t}-relation}
%\def\trelations{{\em t}-relations}
\def\Apost{\A_{\poststar}}
\def\Apre{\A_{\prestar}}
\def\conj{\wedge}
\def\disj{\vee}
\def\begxact{\texttt{begin\_transaction}}
\def\endxact{\texttt{end\_transaction}}
\def\atomic{\texttt{atomic}}
\def\Rxp{R_{\text{XP}}}
%\def\Bplus{B^{+}}
%def\Eplus{E^{+}}
\def\Bplus{\tilde{B}}
\def\Eplus{\tilde{E}}
\def\Wmin{w^{-}}
\def\minW{{}^{-}w}
\def\Wplus{w^{+}}
\def\plusW{{}^{+}w}
\def\wexit{\tau_{\text{exit}}}
\def\wcheck{w_{\text{check}}}
\def\tn#1{t_{n#1}}
\def\tid{\delta_{id}}
\def\tB#1{\delta_{\text{B}[#1]}}
\def\tE#1{\delta_{\text{E}[#1]}}
\def\tBE{\delta_{\text{BE}}}
\def\tEB#1{\delta_{\text{EB}[#1]}}
\def\tErr{\delta_{\text{Err}}}
%\def\xJoin{\widetilde{\circ}}
\def\xJoin{;}

\conferenceinfo{PLDI '07}{June 10-13, San Diego.} 
\copyrightyear{2007} 
\copyrightdata{[to be supplied]} 

\titlebanner{Submission}        % These are ignored unless
%\preprintfooter{short description of paper}   % 'preprint' option specified.

\title{Towards the Analysis of Transactional Software}
%\title{XRef}
%\subtitle{A First Step Towards the Analysis of Transactional Software}

\authorinfo{}{}{}
%\authorinfo{Nicholas Kidd \and Kevin Moore \and Thomas Reps \and David Wood}
%           {University of Wisconsin-Madison}
%           {\{kidd,moore,reps,wood\}@cs.wisc.edu}
\begin{document}

\pagestyle{plain}
\pagenumbering{arabic}
\maketitle

\begin{abstract}
The computer-architecture community's recent focus on
multi-core architectures has spurred renewed interest in
concurrent-programming techniques and abstractions. For programmers to
take advantage of the processing power of today's multi-core chips,
they need to write multi-threaded applications. Specifically, the
programming-language community has focused on software transactions. A
software transaction declaratively specifies what
program statements should execute atomically. Our research focuses on the
analysis of programs that make use of software transactions. We present a
novel interprocedural analysis, XRef analysis, that annotates the fields of
each record type in the program with the static transactions in which it is
referenced. We show how the results of XRef analysis can be used to perform
additional analyses. In particular, we present two such analyses, XOrder and
XProtect. XOrder is aimed at software running on a transactional-memory
platform and attempts to find an optimized layout for a record in memory.
XProtect is a safety analysis that warns the programmer if a shared record is
inconsistently protected by a software transaction.
\end{abstract}

% http://www.acm.org/class/1998
\category{D.3.4}{Programming Languages}{Processors}[Optimization]
\category{F.3.2}{Logics and Meanings of Programs}{Semantics of Progamming
Languages}[Program analysis]
%%%%%%%%%%%%%%%%%%%%%%%
% TODO
%\terms
%{\bf MISSING}
%\keywords
%{\bf MISSING}
%%%%%%%%%%%%%%%%%%%%%%%

\input{intro}
\input{model}
\input{static}
\input{xref}
\input{xorder}
\input{xprotect}
\input{related}

%%%%%%%%%%%%%%%%%%%%%%%%%
%TODO
%\acks
%Acknowledgments, if needed.
%%%%%%%%%%%%%%%%%%%%%%%%%

\bibliographystyle{abbrv}
\bibliography{bib}

\end{document}
