Oliver
In C99, isnan etc. should be macros returning ints.
To "examine" the return code, you can e.g. output sizeof(isnan(1.0)), which
gives you a hint.
A better way would be something like
#include <iostream>
#include <typeinfo>
cout << typeid(isnan(1.0)).name() << "\n";
which outputs a "unique, implementation-defined string" for each type,
probably b for bool, i for int, etc.
-erik
On Sun, Jul 7, 2013 at 4:43 AM, O. Hartmann <[email protected]>wrote:
> On Fri, 5 Jul 2013 08:36:34 -0400
> Erik Schnetter <[email protected]> wrote:
>
> > On Fri, Jul 5, 2013 at 5:47 AM, O. Hartmann
> > <[email protected]>wrote:
> >
> > > On Thu, 4 Jul 2013 15:30:35 -0400
> > > Erik Schnetter <[email protected]> wrote:
> > >
> > > > I have, once again, uploaded a new release candidate tarball. This
> > > > mainly addresses build problems caused by inconsistencies/errors
> > > > in the kernel library.
> > > >
> > > > The 0.8 release branch now uses a simplified logic for letting
> > > > Vecmathlib override kernel functions. Also, Vecmathlib has been
> > > > updated, and some minor errors have been corrected.
> > > >
> > > > -erik
> > > >
> > >
> > > I receive the error message below on FreeBSD 10.0-CURRENT (CLANG 3.3
> > > compiler):
> > >
> > > [...]
> > >
> > > /usr/bin/clang++ -Xclang -ffake-address-space-map -std=c++11
> > > -fno-exceptions -emit-llvm -ffp-contract=off -stdlib=libc++ -c
> > > -target amd64-portbld-freebsd10.0 -o
> > > acosh.cc.bc ../vecmathlib/pocl/acosh.cc
> > > -include ../../../include/x86_64/types.h In file included
> > > from ../vecmathlib/pocl/acos.cc:3: In file included
> > > from ../vecmathlib/pocl/pocl-compat.h:8: In file included
> > > from ../vecmathlib/pocl/../vecmathlib.h:89:
> ../vecmathlib/pocl/../vec_sse_double1.h:451:38:
> > > error: conversion from 'int' to 'boolvec_t' (aka 'boolvec<real_t,
> > > size>') is ambiguous
> >
> >
> > std::isnan() is supposed to return bool in C++11. Apparently it
> > returns int on your platform? This is strange. Can you check whether
> > this is indeed the case, given the options -std=c++11 and
> > -stdlib=libc++ you are using?
> >
> > -erik
> >
>
> As far as I can examine from the sources, isnan() returns bool:
>
> (header cmath of libc++ sources):
>
> [...]
> // C99
>
> bool signbit(arithmetic x);
>
> int fpclassify(arithmetic x);
>
> bool isfinite(arithmetic x);
> bool isinf(arithmetic x);
> bool isnan(arithmetic x);
> bool isnormal(arithmetic x);
>
> bool isgreater(arithmetic x, arithmetic y);
> bool isgreaterequal(arithmetic x, arithmetic y);
> bool isless(arithmetic x, arithmetic y);
> bool islessequal(arithmetic x, arithmetic y);
> bool islessgreater(arithmetic x, arithmetic y);
> bool isunordered(arithmetic x, arithmetic y);
> [...]
>
> So, there must be something different triggering the error using CLANG
> with -std=libc++ as provided by FreeBSD.
>
> I'm no developer, so excuse my possibly naive view on things. Is there
> a way to examine the behaviour of the compiler's return value
> using -std=c++11 others than examining the sources? It might be
> possible that I made a mistake ...
>
> Oliver
>
--
Erik Schnetter <[email protected]>
http://www.perimeterinstitute.ca/personal/eschnetter/
AIM: eschnett247, Skype: eschnett, Google Talk: [email protected]
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
pocl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pocl-devel