Re: Compiling PowerLoom C++

Cameron Ross <[email protected]> Sun, 14 Feb 2010 11:04:39 -0500
Newsgroups gmane.comp.ai.powerloom
Message-ID <-4227774317050735667@unknownmsgid>
Hi Thomas,

I'll be implementing a cross-development tool-chain and the exact
version of gcc I use will end up being the lowest common denominator
for the various components I'll be integrating... PowerLoom being one
of them.  I can perform some tests to see what the most recent version
of gcc can be used to compile PowerLoom and then see if that is
acceptable for my needs... I suspect it will be.  However, it would be
comforting to know that a more permanent solution is planned.  I'll
let you know how my testing goes.  Please let me know of there is
anything I can do to help out here.

Thanks,
Cameron

Sent from my iPhone

On Feb 14, 2010, at 9:09 AM, Thomas Russ <[email protected]> wrote:

>
> On Feb 14, 2010, at 1:17 PM, Cameron Ross wrote:
>
>> Hi Thomas,
>>
>> Yes.  This is an error that is halting compilation.  What are the
>> options to fix?  Will I have to modify the code manually?
>
> I'd like to see what Hans has to say about this, but that may need
> to wait until the workweek starts.
>
> Some options that come to mind:
>
>  (1)  You could try editing the Makefile to add -fpermissive to the
> compiler switches.  That would involve just changing the value of
> the CFLAGS variable at the top of the file.
>  (2)  Do you absolutely need to use GCC version 4.4?  I know that it
> works with version 4.0.
>  (3)  The translation of the code could be modified.  This requires
> having some version of PowerLoom/Stella that runs, such as the Java
> or Lisp version.
>     (3a)  The simplest way to do this would be to change the Stella
> optimization settings used to translate the system to the
> development settings.  That will disable this optimization (along
> with some others as well).  This will be temporary until we create a
> permanent solution.  You can do this by re-translating the systems
> with the ":development-settings? true" switch set.  For example,
> this could be done with something like
>          %  stella -e '(make-system "stella" :cpp :development-
> settings? true)'
>          %  stella -e '(make-system "logic" :cpp :development-
> settings? true)'
>     (3b)  A more complicated method would be to modify the
> translator code to disable the translation.  This may be what we end
> up doing in order to support GCC 4.4, since it doesn't seem to like
> our current "optimized" translation for the null test.  This takes
> place in the function cpp-translate-DEFINED?-method-call in the file
> sources/stella/cpp-translate.ste around line 2431.
>
>
>> Thanks,
>> Cameron
>>
>> Sent from my iPhone
>>
>> On Feb 14, 2010, at 5:47 AM, Thomas Russ <[email protected]> wrote:
>>
>>>
>>> On Feb 14, 2010, at 4:40 AM, Cameron Ross wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm trying the compile the C++ version of PowerLoom version
>>>> 3.2.52.  Running make from .../native/cpp/stella gives copious
>>>> errors similar to: hierarchy.cc:97: error: cast from =91stella:
>>>> :Obje
>>>> ct*=92 to =91stella::boolean=92 loses precision.  This error refers
>>>> to what seems to be a recurring theme throughout PowerLoom's C++ c
>>>> odebase.  Just wondering why the boolean cast is required.  Also,
>>>> wondering why its not compiling for me, when clearly this idiom mu
>>>> st have worked with gcc at some point.  I'm running 64bit Ubuntu L
>>>> inux 9.10 with g++ version 4.4.1.  Note that the code associated w
>>>> ith this specific error is:
>>>>
>>>>  if (!((boolean)(self))) {
>>>>        stream << "!NULL!";
>>>>  }
>>>
>>>
>>> Looking at this a bit more closely, what it turns out to be is an
>>> "optimization" in the generated C++ code to implement at  test for a
>>> null object.  Now, I'm not completely sure of all of the background,
>>> but I suspect that at one point there was a C compiler that
>>> complained about using a non-boolean in a boolean test, so a cast is
>>> used.  (Or it could be that the cast is just created because of the
>>> casting used in Stella to generate the optimization.
>>>
>>> Is this error actually stopping the generation of code, or is this
>>> more of a warning rather than a hard error?  I don't happen to have
>>> gcc 4.4 installed.  All I have is 4.0 and 4.2 right now.  G++ 4.0
>>> certainly doesn't complain about that construct at all.
>>>
>>>
>>>
>>>
>