DEC cxx success

From: Todd Veldhuizen (tveldhui@oonumerics.org)
Date: Mon Jun 15 1998 - 11:41:29 EST


Forwarded message:
>From matthias@serval.ica1.uni-stuttgart.de Tue Apr 14 13:17:49 1998
Date: Tue, 14 Apr 1998 18:57:05 +0200 (MET DST)
Message-Id: <199804141657.SAA25530@serval.ica1.uni-stuttgart.de>
From: Matthias Mueller <matthias@ica1.uni-stuttgart.de>
To: tveldhui@oonumerics.org
Subject: BLITZ: New release: Blitz++ 0.2-alpha-06
In-Reply-To: <199804130116.VAA18224@oonumerics.org>
References: <199804130116.VAA18224@oonumerics.org>

Hi Todd,

I just had a look at the new Blitz++ release. A few weeks ago we got a
new compiler for our DEC alpha workstations (DEC cxx 6.10). It is
really a major step ahead (compared to cxx 5.x). Because it worked
fine with blitz-0.2-alpha-04-dev-971216 I tried to make a contribution
to your project.

The output of bzconfig looks quite convincing (see below) but there
are lot of error messages building the library and the checks.

However they seem to be mainly two problems:
1. A missing <cmath> ( I don't consider this a real problem)
2. Error messages concerning enums like this:
cxx -I./.. -c ./globals.cpp
cxx: Error: ./../blitz/vecexprwrap.h, line 75: expression must have arithmetic or enum type
    enum { _bz_staticLengthCount = (int)P_expr::_bz_staticLengthCount,
----------------------------------------^

Do you think we should try to make cxx work again with blitz
0.2-alpha-06?

Matthias

P.S.:
> - unfortunately, Cray C++ support broken by requiring <string>; this can
> be fixed if anyone really wants it.
Well, although I have access to KAI C++ on a Cray it would be nice to
have a second compiler available. Even KCC has bugs. Maybe I can
convince Cray people here to organize a newer Cray compiler ( they
seem to buy EDG and Modena stuff so they should get closer to the
standard).

O.K. here the output of bzconfig. Note that we can switch on the
standard IO library with a define:

 
 
 
Does your compiler implement namespaces?
cxx ./namespac.cpp
Success: BZ_NAMESPACES
 
 
 
What about exceptions?
cxx ./except.cpp
Success: BZ_EXCEPTIONS
 
 
 
Run-Time Type Identification?
cxx ./rtti.cpp
Success: BZ_RTTI
 
 
 
Member constants?
cxx ./membcnst.cpp
Success: BZ_MEMBER_CONSTANTS
 
 
 
Does your compiler cling to the old 'for' scoping rules?
cxx ./oldfor.cpp
cxx: Error: bzjunk.cpp, line 12: identifier "i" is undefined
    z = i;
--------^
1 error detected in the compilation of "bzjunk.cpp".
Failed: BZ_OLD_FOR_SCOPING
 
 
 
How about the 'explicit' keyword?
cxx ./explicit.cpp
Success: BZ_EXPLICIT
 
 
 
What about the 'mutable' keyword?
cxx ./mutable.cpp
Success: BZ_MUTABLE
 
 
 
Does your compiler recognize 'typename'?
cxx ./typename.cpp
Success: BZ_TYPENAME
 
 
 
Just on the off chance... the NCEG 'restrict' keyword?
cxx ./restrict.cpp
cxx: Error: bzjunk.cpp, line 6: expected a ")"
void add(int length, double * restrict a, const double * restrict b,
---------------------------------------^
cxx: Error: bzjunk.cpp, line 10: identifier "a" is undefined
        a[i] = b[i] + c[i];
--------^
cxx: Error: bzjunk.cpp, line 10: identifier "b" is undefined
        a[i] = b[i] + c[i];
---------------^
cxx: Error: bzjunk.cpp, line 10: identifier "c" is undefined
        a[i] = b[i] + c[i];
----------------------^
cxx: Error: bzjunk.cpp, line 23: too many arguments in function call
    add(10,a,b,c);
-------------^
5 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_NCEG_RESTRICT
 
 
 
Does it recognize bool as a built-in type?
cxx ./bool.cpp
Success: BZ_BOOL
 
 
 
What about const_cast<>?
cxx ./constcst.cpp
Success: BZ_CONST_CAST
 
 
 
static_cast<>?
cxx ./statcast.cpp
Success: BZ_STATIC_CAST
 
 
 
reinterpret_cast<>?
cxx ./reinterp.cpp
Success: BZ_REINTERPRET_CAST
 
 
 
dynamic_cast<>?
cxx ./dynamic.cpp
Success: BZ_DYNAMIC_CAST
 
 
 
Will it handle basic templates? (If not, just give up now.)
cxx ./template.cpp
Success: BZ_TEMPLATES
 
 
 
Partial specialization?
cxx ./partial.cpp
Success: BZ_PARTIAL_SPECIALIZATION
 
 
 
Partial ordering?
cxx ./porder.cpp
Success: BZ_PARTIAL_ORDERING
 
 
 
Default template parameters?
cxx ./default.cpp
Success: BZ_DEFAULT_TEMPLATE_PARAMETERS
 
 
 
Member templates?
cxx ./membtmpl.cpp
Success: BZ_MEMBER_TEMPLATES
 
 
 
Member templates outside the class declaration?
cxx ./membtmp2.cpp
Success: BZ_MEMBER_TEMPLATES_OUTSIDE_CLASS
 
 
 
Does it recognize the full specialization syntax?
cxx ./fullspec.cpp
Success: BZ_FULL_SPECIALIZATION_SYNTAX
 
 
 
Function templates with non-type parameters?
cxx ./nontype.cpp
Success: BZ_FUNCTION_NONTYPE_PARAMETERS
 
 
 
Template-qualified base class specifiers?
cxx ./elabbase.cpp
Success: BZ_TEMPLATE_QUALIFIED_BASE_CLASS
 
 
 
Template-qualified return types (necessary for vector type promotion)?
cxx ./elabret.cpp
Success: BZ_TEMPLATE_QUALIFIED_RETURN_TYPE
 
 
 
Explicit template function qualification?
cxx ./tempqual.cpp
cxx: Error: bzjunk.cpp, line 11: template parameter "X" is not used in declaring the parameter types of function template "to"
template<class X, class Y>
---------------^
cxx: Error: bzjunk.cpp, line 20: explicit function template argument lists are not supported yet in expression
          contexts
    Vector<double> y = to<double>(x);
-----------------------^
2 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_EXPLICIT_TEMPLATE_FUNCTION_QUALIFICATION
 
 
 
Templates as template arguments?
cxx ./temptemp.cpp
cxx: Error: bzjunk.cpp, line 10: "template" is not allowed
template<class X, template<class Y> class T_alloc>
------------------^
cxx: Error: bzjunk.cpp, line 16: T_alloc is not a template
   T_alloc<X> alloc_;
---^
cxx: Error: bzjunk.cpp, line 21: argument list for class template "allocator" is missing
    foo<double, allocator> x;
----------------^
cxx: Error: bzjunk.cpp, line 16: T_alloc is not a template
          detected during instantiation of class "foo<double, <error-type>>" at line 21
   T_alloc<X> alloc_;
---^
4 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_TEMPLATES_AS_TEMPLATE_ARGUMENTS
 
 
 
Use of the template keyword as a qualifier?
cxx ./tempkey.cpp
cxx: Error: bzjunk.cpp, line 7: template parameter "T" is not used in declaring the parameter types of function template "Foo::convert"
    template<class T> static T convert() { return T(); }
-------------------^
cxx: Error: bzjunk.cpp, line 12: expected an identifier
    double z = Foo::template convert<double>();
--------------------^
cxx: Error: bzjunk.cpp, line 12: expected a ";"
    double z = Foo::template convert<double>();
--------------------^
3 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_TEMPLATE_KEYWORD_QUALIFIER
 
 
 
Function matching with argument types which are template scope-qualified?
cxx ./tempqmt.cpp
cxx: Error: bzjunk.cpp, line 25: no operator "+" matches these operands
            operand types are: B<A<float>> + float
    z + 0.5f; // match +(B<A<float>>, A<float>::W)
------^
1 error detected in the compilation of "bzjunk.cpp".
Failed: BZ_TEMPLATE_SCOPED_ARGUMENT_MATCHING
 
 
 
Will it support the vector type promotion mechanism?
cxx ./promote.cpp
Success: BZ_TYPE_PROMOTION
 
 
 
Numeric traits promotions (sum type, etc.)?
cxx ./numtrait.cpp
Success: BZ_USE_NUMTRAIT
 
 
 
Does it have complex<T>?
cxx ./complex.cpp
Success: BZ_HAVE_COMPLEX
 
 
 
Does it have numeric_limits<T>?
cxx ./numlimit.cpp
Success: BZ_HAVE_NUMERIC_LIMITS
 
 
 
Does it have valarray<T>?
cxx ./valarray.cpp
Success: BZ_HAVE_VALARRAY
 
 
 
Complex math functions?
cxx ./compmath.cpp
cxx: Error: bzjunk.cpp, line 13: no suitable conversion function from "std::complex<double>" to "double" exists
    acos(x);
---------^
cxx: Error: bzjunk.cpp, line 14: no suitable conversion function from "std::complex<double>" to "double" exists
    asin(x);
---------^
cxx: Error: bzjunk.cpp, line 15: no suitable conversion function from "std::complex<double>" to "double" exists
    atan(x);
---------^
cxx: Error: bzjunk.cpp, line 16: no suitable conversion function from "std::complex<double>" to "double" exists
    atan2(x,y);
----------^
cxx: Error: bzjunk.cpp, line 16: no suitable conversion function from "std::complex<double>" to "double" exists
    atan2(x,y);
------------^
cxx: Error: bzjunk.cpp, line 17: no suitable conversion function from "std::complex<double>" to "double" exists
    atan2(x, double(3.0));
----------^
cxx: Error: bzjunk.cpp, line 18: no suitable conversion function from "std::complex<double>" to "double" exists
    atan2(double(3.0), x);
-----------------------^
7 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_COMPLEX_MATH
 
 
 
IEEE Math library?
cxx ./ieeemath.cpp
cxx: Error: bzjunk.cpp, line 26: identifier "finite" is undefined
    finite(x);
----^
cxx: Error: bzjunk.cpp, line 34: identifier "trunc" is undefined
    trunc(x);
----^
2 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_IEEE_MATH
 
 
 
System V Math library?
cxx ./sysvmath.cpp
cxx: Error: bzjunk.cpp, line 20: identifier "_class" is undefined
    _class(x);
----^
cxx: Error: bzjunk.cpp, line 22: identifier "itrunc" is undefined
    itrunc(x);
----^
cxx: Error: bzjunk.cpp, line 23: identifier "nearest" is undefined
    nearest(x);
----^
cxx: Error: bzjunk.cpp, line 24: identifier "rsqrt" is undefined
    rsqrt(x);
----^
cxx: Error: bzjunk.cpp, line 25: identifier "uitrunc" is undefined
    uitrunc(x);
----^
5 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_SYSTEM_V_MATH
 
 
 
ISO C++ Standard library?
cxx ./std.cpp
cxx: Error: /usr/include/cxx/iostream, line 62: #error directive: "cannot include iostream -- use -D__USE_STD_IOSTREAM to override default"
#error "cannot include iostream -- use -D__USE_STD_IOSTREAM to override default"
-^
cxx: Error: /usr/include/cxx/iomanip, line 62: #error directive: "cannot include iomanip -- use -D__USE_STD_IOSTREAM to override default"
#error "cannot include iomanip -- use -D__USE_STD_IOSTREAM to override default"
-^
2 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_STD
 
 
 
What about getrusage()?
cxx ./getruse.cpp
Success: BZ_HAVE_RUSAGE
 
 
 
Can your compiler handle computations inside an enum?
cxx ./enumcomp.cpp
Success: BZ_ENUM_COMPUTATIONS

+-----------------------------------------------------------------------+
| Matthias Mueller matthias@ica1.uni-stuttgart.de |
| http://www.ica1.uni-stuttgart.de/~matthias |
+-----------------------------------------------------------------------+
| ICA 1, Pfaffenwaldring 27, D-70569 Stuttgart (Germany) |
| Tel. 49-(0)711/685-7606, Fax. 49-(0)711/685-3658 |
+-----------------------------------------------------------------------+



This archive was generated by hypermail 2b29 : Wed Feb 20 2002 - 04:30:04 EST