Skip to content

Commit

Permalink
Document new StmtSort (#56)
Browse files Browse the repository at this point in the history
The `StmtSort` hierarchy went through a face lift in MSVC, leading to version 0.42
  • Loading branch information
GabrielDosReis committed Aug 15, 2022
1 parent 65a09b1 commit 609d3f8
Show file tree
Hide file tree
Showing 3 changed files with 330 additions and 80 deletions.
67 changes: 35 additions & 32 deletions ltx/exprs.tex
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@
\enumerator{ExpressionList}
\enumerator{SizeofType}
\enumerator{Alignof}
\enumerator{New}
\enumerator{Delete}
\enumerator{Label}
\enumerator{Unused0}
\enumerator{Typeid}
\enumerator{DestructorCall}
\enumerator{SyntaxTree}
Expand All @@ -67,7 +67,7 @@
\enumerator{Nullptr}
\enumerator{This}
\enumerator{TemplateReference}
\enumerator{PushState}
\enumerator{Unused1}
\enumerator{TypeTraitIntrinsic}
\enumerator{DesignatedInitializer}
\enumerator{PackedTemplateArguments}
Expand Down Expand Up @@ -1008,21 +1008,40 @@ \subsection{\valueTag{ExprSort::Alignof}}
\note{This representation is subject to change.}


\subsection{\valueTag{ExprSort::New}}
\label{sec:ifc:ExprSort:New}
\subsection{\valueTag{ExprSort::Label}}
\label{sec:ifc:ExprSort:Label}

This structure is no longer emitted. \grammar{new-expression}s are now emitted as either monadic, dyadic, or triadic trees as appropriate.

\note{This sort value is available for reuse in future releases.}
An \type{ExprIndex} value with tag \valueTag{ExprSort::Label} designates a program point (as in a labeled statement).
The \field{index} field of this abstract reference is a position designating an entry of the partition
of program points. Each such entry is a structure with the following layout
%
\begin{figure}[H]
\centering
\structure{
\DeclareMember{locus}{SourceLocation} \\
\DeclareMember{type}{TypeIndex} \\
\DeclareMember{designator}{ExprIndex} \\
}
\caption{Structure of label expression}
\label{fig:ifc:ExprSort:Label}
\end{figure}
%
The fields have the following meanings:
\begin{itemize}
\item \field{locus} designates the source location of this label expression
\item \field{type} designates the type of the program point expression
\item \field{designator} designates the ``value'' (which could just be an identifier) of the program point
\end{itemize}

\note{This representation is subject to change}

\subsection{\valueTag{ExprSort::Delete}}
\label{sec:ifc:ExprSort:Delete}
\partition{expr.label}

This structure is no longer emitted. \grammar{delete-expression}s are now emitted with appropriate structures.

\note{This sort value is available for reuse in future releases.}
\subsection{\valueTag{ExprSort::Unused0}}
\label{sec:ifc:ExprSort:Unused0}

No structure is associated with this sort value.

\subsection{\valueTag{ExprSort::Typeid}}
\label{sec:ifc:ExprSort:Typeid}
Expand Down Expand Up @@ -1544,27 +1563,10 @@ \subsection{\valueTag{ExprSort::TemplateReference}}

\note{This structure is subject to removal in future releases.}

\subsection{\valueTag{ExprSort::PushState}}
\label{sec:ifc:ExprSort:PushState}
A EH push-state expression (constructor call + matching destructor call)

%
\begin{figure}[H]
\centering
\structure{
\DeclareMember{locus}{SourceLocation} \\
\DeclareMember{type}{TypeIndex} \\
\DeclareMember{ctor\_call}{ExprIndex} \\
\DeclareMember{dtor\_call}{ExprIndex} \\
\DeclareMember{flags}{EHFlags} \\
}
\caption{Structure of a push state expression}
\label{fig:ifc-push-state-expression-structure}
\end{figure}
%
The \field{flags} field is of type \newtype{EHFlags}{16}.
\subsection{\valueTag{ExprSort::Unused1}}
\label{sec:ifc:ExprSort:Unused1}

\partition{expr.push-state}
No structured is associated with this sort value.


\subsection{\valueTag{ExprSort::TypeTraitIntrinsic}}
Expand Down Expand Up @@ -2511,6 +2513,7 @@ \subsection{Triadic operators}
\setcounter{enumi}{4063}
\enumerator{MsvcConfusion}
\enumerator{MsvcConfusedPushState}
\enumerator{MsvcConfusedChoice}
\end{Enumeration}

\ifcSortSection{Unknown}{TriadicOperator}
Expand Down
2 changes: 2 additions & 0 deletions ltx/ifc-format.sty
Original file line number Diff line number Diff line change
Expand Up @@ -229,5 +229,7 @@
\end{tikzpicture}
}

%% Display a diff note from a prior version
\newcommand{\diffNote}[1]{Note: #1}

\endinput

0 comments on commit 609d3f8

Please sign in to comment.