[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compiler crashes when taking address of function pointer
- Subject: Re: Compiler crashes when taking address of function pointer
- From: Ori Bernstein <ori@xxxxxxxxxxxxxx>
- Date: Fri, 16 Jan 2015 22:55:48 -0800
- To: Ryan <rymg19@xxxxxxxxx>
- Cc: myrddin-dev@xxxxxxxxxxxxxx
Sure; for a simple fix, I can allow casting from functions to pointers
and back. I'm just trying to sort out what it would mean to, eg, deref
a function pointer.
And what happens to that code if/when I figure out environment capture
for closures.
On Fri, 16 Jan 2015 23:38:04 -0600
Ryan <rymg19@xxxxxxxxx> wrote:
>
>
> Ori Bernstein <ori@xxxxxxxxxxxxxx> wrote:
> >Interesting. That shouldn't happen. It's crashing because the backend
> >puts
> >function addresses into registers as rvalues if they're not being
> >called.
> >
> >I haven't hit it because I haven't needed pointer to a function yet;
> >functions already can be passed around without taking their address:
> >
> > const each = {sl : int[:], f : (int -> void)
> > ...
> > }
> >
> > each([1,2,3][:], somefunc)
>
> Well, it has to do with the kernel writing. I need to split a function's address into the higher and lower bits.
>
> I think there's a way I can get around it, though. Just though I should report this anyway.
>
> >
> >should work just fine.
> >
> >On Fri, 16 Jan 2015 14:52:29 -0600
> >Ryan Gonzalez <rymg19@xxxxxxxxx> wrote:
> >
> >> Example:
> >>
> >> const g = {; ->}
> >> const f = {; var addr = &g}
> >>
> >> I get this:
> >>
> >> ryan@DevPC-LX:~/langtest/myr$ 6m bug.myr
> >> 6m: gengas.c:128: locprint: Assertion `(spec == 'r' &&
> >isintmode(l->mode))
> >> || (spec == 'f' && isfloatmode(l->mode)) || spec == 'v' || spec ==
> >'x' ||
> >> spec == 'u'' failed.
> >> Aborted (core dumped)
> >> ryan@DevPC-LX:~/langtest/myr$
> >>
> >> --
> >> Ryan
> >> If anybody ever asks me why I prefer C++ to C, my answer will be
> >simple:
> >> "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think that
> >was
> >> nul-terminated."
> >> Personal reality distortion fields are immune to contradictory
> >evidence. -
> >> srean
> >> Check out my website: http://kirbyfan64.github.io/
>
> --
> Sent from my Android phone with K-9 Mail. Please excuse my brevity.
> Check out my website: http://kirbyfan64.github.io/
>
--
Ori Bernstein <ori@xxxxxxxxxxxxxx>