Chuck -
I can reproduce your findings and I too
think Cil does not follow the C-standard here,
though IMHO the relevant part is not 7.15.1.1:2,
but 6.5.2.2:7. Also see: Harbison/Steele
Sec. 6.3.5.
On Thu, May 20, 2010 at 12:10:49PM -0500, Chucky Ellison wrote:
> The work that I am doing relies on promotions being explicit, so this is
> important to me. Is the intention to support these promotions?
I expanded your example a little bit, so
that we can see how Cil behaves in all of the
cases:
(i) foo: Your original function prototype
_with_ ellipses;
(ii) bar: A prototype that matches the
call site of foo w/o ellipses and
matching parameter types;
(iii) baz: A prototype that matches the
call site of foo w/o ellipses and
parameter types as expected for function
argument conversion (i.e. "usual unary
conversions" and, in addition, float ->
double);
int foo(int x, ...);
int bar(int x, char c, short int si, int i, long int li, long long int
lli, float f);
int baz(int x, int c, int si, int i, long int li, long long int lli,
double f);
int main(void)
{
char c = 5;
short int si = 10;
float f = 30.0;
foo(0, c, si, 15, 20L, 25LL, f);
bar(0, c, si, 15, 20L, 25LL, f);
baz(0, c, si, 15, 20L, 25LL, f);
return 0;
}
The invocation
cilly.byte --out variarg.cil.c variarg.c
produces the following code for the three
function calls:
foo(0, c, si, 15, 20L, 25LL, f);
bar(0, c, si, 15, 20L, 25LL, f);
baz(0, (int )c, (int )si, 15, 20L, 25LL, (double )f);
> If so, perhaps I am somehow disabling these inadvertently? Is my
> understanding of the C spec incorrect? I appreciate any
> information/advice you can provide.
I don't think you are "disabling these
inadvertently", but I do think Cil does not
treat the actual parameters correctly in the
call to foo (whereas the calls to foo and baz
are correct). In my opinion -- which is based
on 7.15.1.1:2 -- you have spotted a bug.
/Chris
------------------------------------------------------------------------------
_______________________________________________
CIL-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cil-users