* Intel icc finds too many errors in guile 1.8.8 to compile
@ 2009-08-28 9:22 I.Gutheil
2009-10-02 21:21 ` Neil Jerram
0 siblings, 1 reply; 6+ messages in thread
From: I.Gutheil @ 2009-08-28 9:22 UTC (permalink / raw)
To: bug-guile
Hello all,
did anyone try to compile the guile codes with another compiler but the gcc?
When I tried to use the icc, I got
gen-scmconfig.c(257): error #279: controlling expression is constant
if (SCM_I_GSC_C_INLINE)
^
gen-scmconfig.c(321): error #279: controlling expression is constant
if (SCM_I_GSC_T_INT64)
^
gen-scmconfig.c(333): error #279: controlling expression is constant
if (SCM_I_GSC_T_UINT64)
So I had to change the
if (SCM_I_GSC_T_UINT64)
to
#ifdef (SCM_I_GSC_T_UINT64)
#else
#endif
because these directives had nun-numerical values.
The next problem occured with
debug.c(62): error #188: enumerated type mixed with another type
scm_dynwind_begin (0);
This could be "corrected" by declaring
in dynwind.h
SCM_API void scm_dynwind_begin (int) instead of the derived datatype
which could only be 1
and in dynwind.c
void
scm_dynwind_begin (int flags)
...
I get a lot of remarks that
operands are evaluated in unspecified order
and
remark #193: zero used for undefined preprocessing identifier
"HAVE_SYS_STDTYPES_H"
(for example)
but finally I came to a compiler error which I could not correct:
eval.c(4114): error #589: transfer of control bypasses initialization of:
variable "orig_sym" (declared at line 4038)
goto handle_a_macro;
^
And just for eval.c I get about 700 remarks like
eval.c(6021): remark #981: operands are evaluated in unspecified order
return SCM_I_XEVAL (x, env);
^
(which is the last one)
So I think I have to switch to gcc and just accept what gcc is making of
that code??
Any better idea?
P.S. I do not use the guile package myself but I want to install it for
someone who wants to use meep on a Nehalem Cluster here in Juelich.
Sincerely
Inge Gutheil
--
Inge Gutheil
Juelich Supercomputing Centre
Institute for Advanced Simulation
Forschungszentrum Juelich GmbH
52425 Juelich, Germany
Phone: +49-2461-61-3135
Fax: +49-2461-61-6656
E-mail: i.gutheil@fz-juelich.de
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Intel icc finds too many errors in guile 1.8.8 to compile
2009-08-28 9:22 Intel icc finds too many errors in guile 1.8.8 to compile I.Gutheil
@ 2009-10-02 21:21 ` Neil Jerram
2009-10-03 9:43 ` Ludovic Courtès
0 siblings, 1 reply; 6+ messages in thread
From: Neil Jerram @ 2009-10-02 21:21 UTC (permalink / raw)
To: I.Gutheil; +Cc: bug-guile
"I.Gutheil" <i.gutheil@fz-juelich.de> writes:
> Hello all,
> did anyone try to compile the guile codes with another compiler but the gcc?
> When I tried to use the icc, I got
> gen-scmconfig.c(257): error #279: controlling expression is constant
> if (SCM_I_GSC_C_INLINE)
> ^
>
> gen-scmconfig.c(321): error #279: controlling expression is constant
> if (SCM_I_GSC_T_INT64)
> ^
>
> gen-scmconfig.c(333): error #279: controlling expression is constant
> if (SCM_I_GSC_T_UINT64)
Presumably that only happens with an option like -Werror?
If so, the solution is not to use that option.
> debug.c(62): error #188: enumerated type mixed with another type
> scm_dynwind_begin (0);
>
> This could be "corrected" by declaring
> in dynwind.h
> SCM_API void scm_dynwind_begin (int) instead of the derived datatype
> which could only be 1
> and in dynwind.c
>
> void
> scm_dynwind_begin (int flags)
> ...
Agreed; using enums here is just asking for trouble. I've changed it to
#defines.
> I get a lot of remarks that
>
> operands are evaluated in unspecified order
>
> and
> remark #193: zero used for undefined preprocessing identifier
> "HAVE_SYS_STDTYPES_H"
> (for example)
In general I would say that those remarks don't matter. Are there any
that you think indicate actual problems?
> but finally I came to a compiler error which I could not correct:
>
> eval.c(4114): error #589: transfer of control bypasses initialization of:
> variable "orig_sym" (declared at line 4038)
> goto handle_a_macro;
Do you still see this? Looking at the code now, there are no labels
between where orig_sym is declared and initialized, and where it's used;
so I can't see a problem.
> And just for eval.c I get about 700 remarks like
> eval.c(6021): remark #981: operands are evaluated in unspecified order
> return SCM_I_XEVAL (x, env);
> ^
> (which is the last one)
As above, I doubt that any of these are real problems. If you want to
clean up your icc build, can you disable those remarks?
Regards,
Neil
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Intel icc finds too many errors in guile 1.8.8 to compile
2009-10-02 21:21 ` Neil Jerram
@ 2009-10-03 9:43 ` Ludovic Courtès
[not found] ` <8763avzfh9.fsf@ossau.uklinux.net>
0 siblings, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2009-10-03 9:43 UTC (permalink / raw)
To: bug-guile
Hi,
Neil Jerram <neil@ossau.uklinux.net> writes:
> "I.Gutheil" <i.gutheil@fz-juelich.de> writes:
[...]
>> debug.c(62): error #188: enumerated type mixed with another type
>> scm_dynwind_begin (0);
>>
>> This could be "corrected" by declaring
>> in dynwind.h
>> SCM_API void scm_dynwind_begin (int) instead of the derived datatype
>> which could only be 1
>> and in dynwind.c
>>
>> void
>> scm_dynwind_begin (int flags)
>> ...
>
> Agreed; using enums here is just asking for trouble. I've changed it to
> #defines.
Per C99 Section 6.4.4.3, “an identifier declared as an enumeration
constant has type int”, so ICC is pedantic.
I think having disjoint ‘scm_t_wind_flags’ and ‘scm_t_dynwind_flags’
types was helpful to indicate which flags are valid for which function.
Thus, I’d rather have fixed it by adding a named enumeration constant
for 0 in each of these types.
At any rate, I think we should probably keep “typedef int
scm_t_wind_flags;” and “typedef int scm_t_dynwind_flags”.
What do you think?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-10-07 21:09 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-28 9:22 Intel icc finds too many errors in guile 1.8.8 to compile I.Gutheil
2009-10-02 21:21 ` Neil Jerram
2009-10-03 9:43 ` Ludovic Courtès
[not found] ` <8763avzfh9.fsf@ossau.uklinux.net>
[not found] ` <87r5tjbb0h.fsf@gnu.org>
2009-10-06 21:06 ` Neil Jerram
2009-10-06 22:50 ` Ludovic Courtès
2009-10-07 21:09 ` Neil Jerram
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).