Changes in / [73bf8cf2:8a443f4]


Ignore:
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • doc/LaTeXmacros/common.tex

    r73bf8cf2 r8a443f4  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Tue Aug  2 17:02:02 2016
    14 %% Update Count     : 228
     13%% Last Modified On : Mon Aug  1 09:11:20 2016
     14%% Update Count     : 225
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    4040\newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    4141\newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
    42 \newcommand{\Celeven}{C11\xspace}               % C11 symbolic name
     42\def\c11{ISO/IEC C}                                             % C11 name (cannot have numbers in latex command name)
    4343
    4444%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  • doc/user/user.tex

    r73bf8cf2 r8a443f4  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Tue Aug  2 17:39:02 2016
    14 %% Update Count     : 1286
     13%% Last Modified On : Mon Aug  1 09:11:24 2016
     14%% Update Count     : 1271
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    226226
    227227\section{Interoperability}
    228 \label{s:Interoperability}
    229228
    230229\CFA is designed to integrate well with existing C programs and libraries.
     
    315314The \CFA compilation message is printed at the beginning of a compilation.
    316315\textbf{This option is the default.}
    317 
    318 \item
    319 \Indexc{-no-include-std}\index{compilation option!-no-include-std@©-no-include-std©}
    320 Do not supply ©extern "C"© wrappers for \Celeven standard include files (see~\VRef{s:StandardHeaders}).
    321 \textbf{This option is \emph{not} the default.}
    322316\end{description}
    323317
     
    43694363
    43704364
    4371 \section{New Keywords}
    4372 \label{s:NewKeywords}
    4373 
    4374 \begin{quote2}
    4375 \begin{tabular}{ll}
    4376 ©catch©                 & ©lvalue©              \\
    4377 ©catchResume©   &                               \\
    4378 ©choose©                & ©otype©               \\
    4379                                 &                               \\
    4380 ©disable©               & ©throw©               \\
    4381 ©dtype©                 & ©throwResume© \\
    4382                                 & ©trait©               \\
    4383 ©enable©                & ©try©                 \\
    4384                                 &                               \\
    4385 ©fallthrough©                                   \\
    4386 ©fallthru©                                              \\
    4387 ©finally©                                               \\
    4388 ©forall©                                                \\
    4389 ©ftype©                                                 \\
    4390 \end{tabular}
    4391 \end{quote2}
    4392 
    4393 
    4394 \section{Standard Headers}
    4395 \label{s:StandardHeaders}
    4396 
    4397 C prescribes the following standard header-files:
    4398 \begin{quote2}
    4399 \begin{minipage}{\linewidth}
    4400 \begin{tabular}{lll}
    4401 assert.h        & math.h                & stdlib.h              \\
    4402 complex.h       & setjmp.h              & stdnoreturn.h \\
    4403 ctype.h         & signal.h              & string.h              \\
    4404 errno.h         & stdalign.h    & tgmath.h              \\
    4405 fenv.h          & stdarg.h              & threads.h             \\
    4406 float.h         & stdatomic.h   & time.h                \\
    4407 inttypes.h      & stdbool.h             & uchar.h               \\
    4408 iso646.h        & stddef.h              & wchar.h               \\
    4409 limits.h        & stdint.h              & wctype.h              \\
    4410 locale.h        & stdio.h               & unistd.h\footnote{\CFA extension}
    4411 \end{tabular}
    4412 \end{minipage}
    4413 \end{quote2}
    4414 For the prescribed head-files, \CFA implicit wraps their includes in an ©extern "C"©;
    4415 hence, names in these include files are not mangled\index{mangling!name} (see~\VRef{s:Interoperability}).
    4416 All other C header files must be explicitly wrapped in ©extern "C"© to prevent name mangling.
     4365\section{New Keywowrds}
     4366
     4367©catch©, ©catchResume©, ©choose©, \quad ©disable©, ©dtype©, \quad ©enable©, \quad ©fallthrough©, ©fallthru©, ©finally©, ©forall©, ©ftype©, \quad ©lvalue©, \quad ©otype©, \quad ©throw©, ©throwResume©, ©trait©, ©try©
    44174368
    44184369
     
    44244375\item
    44254376\begin{description}
    4426 \item[Change:] add new keywords (see~\VRef{s:NewKeywords}) \\
     4377\item[Change:] add new keywords \\
    44274378New keywords are added to \CFA.
    44284379\item[Rationale:] keywords added to implement new semantics of \CFA.
     
    45224473\begin{description}
    45234474\item[Change:] have ©struct© introduce a scope for nested types
    4524 In C, the name of the nested types belongs to the same scope as the name of the outermost enclosing
     4475In C, the name of the nested types belongs to the same scope as the name of the outermost enclosing 
    45254476Example:
    45264477\begin{lstlisting}
     
    46454596%$
    46464597\begin{lstlisting}[mathescape=off]
    4647 sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7
    4648          | "x ¿" | 8 | "x «" | 9 | endl;
     4598sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7 | "x ¿" | 8 | "x «" | 9 | endl;
    46494599\end{lstlisting}
    46504600%$
     
    46564606A seperator does not appear after a C string ending with the (extended) \Index{ASCII}\index{ASCII!extended} characters: ©,.:;!?)]}%¢»©
    46574607\begin{lstlisting}[belowskip=0pt]
    4658 sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7
    4659          | ") x" | 8 | "] x" | 9 | "} x" | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
     4608sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7 | ") x" | 8 | "] x" | 9 | "} x"
     4609         | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
    46604610\end{lstlisting}
    46614611\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46734623The following \CC-style \Index{manipulator}s allow further control over implicit seperation.
    46744624\begin{lstlisting}[mathescape=off,belowskip=0pt]
    4675 sout | sepOn | 1 | 2 | 3 | sepOn | endl;        §\C{// separator at start of line}§
     4625sout | sepOn | 1 | 2 | 3 | sepOn | endl;        // separator at start of line
    46764626\end{lstlisting}
    46774627\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46794629\end{lstlisting}
    46804630\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4681 sout | 1 | sepOff | 2 | 3 | endl;                       §\C{// turn off implicit separator temporarily}§
     4631sout | 1 | sepOff | 2 | 3 | endl;                       // turn off implicit separator temporarily
    46824632\end{lstlisting}
    46834633\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46854635\end{lstlisting}
    46864636\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4687 sout | sepDisable | 1 | 2 | 3 | endl;           §\C{// turn off implicit separation, affects all subsequent prints}§
     4637sout | sepDisable | 1 | 2 | 3 | endl;           // turn off implicit separation, affects all subsequent prints
    46884638\end{lstlisting}
    46894639\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46914641\end{lstlisting}
    46924642\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4693 sout | 1 | sepOn | 2 | 3 | endl;                        §\C{// turn on implicit separator temporarily}§
     4643sout | 1 | sepOn | 2 | 3 | endl;                        // turn on implicit separator temporarily
    46944644\end{lstlisting}
    46954645\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46974647\end{lstlisting}
    46984648\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4699 sout | sepEnable | 1 | 2 | 3 | endl;            §\C{// turn on implicit separation, affects all subsequent prints}§
     4649sout | sepEnable | 1 | 2 | 3 | endl;            // turn on implicit separation, affects all subsequent prints
    47004650\end{lstlisting}
    47014651\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    47034653\end{lstlisting}
    47044654\begin{lstlisting}[mathescape=off,aboveskip=0pt,aboveskip=0pt,belowskip=0pt]
    4705 sepSet( sout, ", $" );                                          §\C{// change separator from " " to ", \$"}§
     4655sepSet( sout, ", $" );                                          // change separator from " " to ", $"
    47064656sout | 1 | 2 | 3 | endl;
    47074657\end{lstlisting}
  • src/GenPoly/Box.cc

    r73bf8cf2 r8a443f4  
    619619                        return 0;
    620620                }
    621 
     621               
    622622                /// Returns T if the given declaration is a function with parameters (T*, T) for some TypeInstType T, NULL otherwise
    623623                TypeInstType *isTypeInstPtrValFn( DeclarationWithType *decl ) {
     
    637637                        return 0;
    638638                }
    639 
     639               
    640640                /// Returns T if the given declaration is (*?=?)(T *, T) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
    641641                TypeInstType *isTypeInstAssignment( DeclarationWithType *decl ) {
     
    677677                        return 0;
    678678                }
    679 
     679               
    680680                /// Returns T if the given declaration is a function with parameters (T*, T) for some type T, where neither parameter is cv-qualified,
    681681                /// NULL otherwise
     
    772772                                copyOps.beginScope();
    773773                                dtorOps.beginScope();
    774 
     774                               
    775775                                DeclarationWithType *oldRetval = retval;
    776776                                bool oldUseRetval = useRetval;
     
    14711471                VariableExpr *wrapFunctionDecl( DeclarationWithType *functionDecl ) {
    14721472                        // line below cloned from FixFunction.cc
    1473                         // xxx - functionObj is never added to a list of declarations...
    14741473                        ObjectDecl *functionObj = new ObjectDecl( functionDecl->get_name(), functionDecl->get_storageClass(), functionDecl->get_linkage(), 0,
    14751474                                                                  new PointerType( Type::Qualifiers(), functionDecl->get_type()->clone() ), 0 );
    14761475                        functionObj->set_mangleName( functionDecl->get_mangleName() );
    1477                         functionObj->set_scopeLevel( functionDecl->get_scopeLevel() );
    14781476                        return new VariableExpr( functionObj );
    14791477                }
     
    14941492                                        = ParamEntry( assertOp->get_uniqueId(), assertOp->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertOp ) );
    14951493                }
    1496 
     1494               
    14971495                Statement * Pass1::mutate( ReturnStmt *returnStmt ) {
    14981496                        if ( retval && returnStmt->get_expr() ) {
     
    15561554                                                DeclarationWithType *assertDtor = findOpForType( formalType, dtorOps, scopedDtorOps );
    15571555                                                if ( ! assertDtor ) throw SemanticError( "No destructor found for ", formalType );
    1558 
     1556                                               
    15591557                                                // add inferred parameters for otype operators to assignment expression
    15601558                                                // NOTE: Code here assumes that first four assertions are assign op, ctor, copy ctor, dtor, in that order
     
    15701568                                                ++actualIt;
    15711569                                                addAssertionFor( assignExpr, *actualIt, assertDtor );
    1572 
     1570                                               
     1571                                                //DeclarationWithType *actualDecl = asserts.front();
     1572                                                //assignExpr->get_inferParams()[ actualDecl->get_uniqueId() ]
     1573                                                //      = ParamEntry( assertAssign->get_uniqueId(), assertAssign->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertAssign ) );
    15731574                                        }
    15741575                                }
     
    21802181                bool PolyGenericCalculator::findGeneric( Type *ty ) {
    21812182                        ty = replaceTypeInst( ty, env );
    2182 
     2183                       
    21832184                        if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( ty ) ) {
    21842185                                if ( scopeTyVars.find( typeInst->get_name() ) != scopeTyVars.end() ) {
  • src/driver/cfa.cc

    r73bf8cf2 r8a443f4  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug  2 12:23:11 2016
    13 // Update Count     : 147
     12// Last Modified On : Thu Jul  7 08:56:01 2016
     13// Update Count     : 144
    1414//
    1515
     
    8787        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    8888        bool std_flag = false;                                                          // -std= flag
    89         bool noincstd_flag = false;                                                     // -no-include-std= flag
    9089        bool debugging __attribute(( unused )) = false;         // -g flag
    9190
     
    145144                        } else if ( arg == "-nohelp" ) {
    146145                                help = false;                                                   // strip the nohelp flag
    147                         } else if ( arg == "-no-include-std" ) {
    148                                 noincstd_flag = true;                                   // strip the no-include-std flag
    149146                        } else if ( arg == "-compiler" ) {
    150147                                // use the user specified compiler
     
    251248        args[nargs] = "-I" CFA_INCDIR;
    252249        nargs += 1;
    253         if ( ! noincstd_flag ) {                                                        // do not use during build
    254                 args[nargs] = "-I" CFA_INCDIR "/stdhdr";
    255                 nargs += 1;
    256         } // if
     250        args[nargs] = "-I" CFA_INCDIR "/stdhdr";
     251        nargs += 1;
    257252        args[nargs] = "-I" CFA_INCDIR "/containers";
    258253        nargs += 1;
  • src/libcfa/Makefile.am

    r73bf8cf2 r8a443f4  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Tue Aug  2 12:17:23 2016
    14 ## Update Count     : 196
     13## Last Modified On : Fri Jul  8 23:05:11 2016
     14## Update Count     : 192
    1515###############################################################################
    1616
     
    2626# create extra forward types/declarations to reduce inclusion of library files
    2727extras.cf : extras.regx extras.c
    28         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     28        $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    2929
    3030# create forward declarations for gcc builtins
    3131builtins.cf : builtins.c
    32         ${AM_V_GEN}if [ -e $< ] ; then \
     32        $(AM_V_GEN)if [ -e $< ] ; then \
    3333                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    3434        fi
    3535
    3636builtins.c : builtins.def prototypes.awk
    37         ${AM_V_GEN}if [ -e $< ] ; then \
     37        $(AM_V_GEN)if [ -e $< ] ; then \
    3838                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    3939        fi
     
    4848
    4949libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    50         ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     50        $(AM_V_GEN)${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    5151
    5252libcfa-prelude.o : libcfa-prelude.c
    53          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     53         $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    5454
    55 CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     55CFLAGS = -quiet -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    5656CC = ${abs_top_srcdir}/src/driver/cfa
    5757
     
    6363        @true
    6464
    65 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     65${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA}        # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    6666
    6767libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
  • src/libcfa/Makefile.in

    r73bf8cf2 r8a443f4  
    136136CFA_LIBDIR = @CFA_LIBDIR@
    137137CFA_PREFIX = @CFA_PREFIX@
    138 CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     138CFLAGS = -quiet -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    139139CPP = @CPP@
    140140CPPFLAGS = @CPPFLAGS@
     
    603603# create extra forward types/declarations to reduce inclusion of library files
    604604extras.cf : extras.regx extras.c
    605         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     605        $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    606606
    607607# create forward declarations for gcc builtins
    608608builtins.cf : builtins.c
    609         ${AM_V_GEN}if [ -e $< ] ; then \
     609        $(AM_V_GEN)if [ -e $< ] ; then \
    610610                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    611611        fi
    612612
    613613builtins.c : builtins.def prototypes.awk
    614         ${AM_V_GEN}if [ -e $< ] ; then \
     614        $(AM_V_GEN)if [ -e $< ] ; then \
    615615                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    616616        fi
     
    623623
    624624libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    625         ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     625        $(AM_V_GEN)${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    626626
    627627libcfa-prelude.o : libcfa-prelude.c
    628          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     628         $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    629629
    630630# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     
    632632        @true
    633633
    634 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     634${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA}        # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    635635
    636636maintainer-clean-local:
Note: See TracChangeset for help on using the changeset viewer.