From: Foivos Z. <za...@ic...> - 2011-01-19 08:10:30
|
Hello, my subject may not be that clear and because i might not be able to explain it as well i'll give an example that gcc successfully compiles but CIL fails to parse. void foo(int DIM, int *A[DIM][DIM]) { } as you can see DIM is an argument of function foo and is not defined by #define (so it's not a constant) also notice that int *A[DIM][DIM] is different from int ***A it is actualy equal to int**A Is there a reason why CIL doesn't support this syntax or just got away? Could this be added in a later release please? Thank you Zakkak Foivos |
From: Foivos Z. <za...@ic...> - 2011-01-19 13:32:13
|
Hello again, I also noticed that neither the following example is supported. float (**myA)[DIM] = (float (**)[])A; it throughs "Error: Length of array is not a constant: DIM" but the same declaration is fine with gcc. Thank you Zakkak Foivos On 01/19/2011 09:52 AM, Foivos Zakkak wrote: > Hello, > > my subject may not be that clear and because i might not be able to > explain it as well i'll give an example that gcc successfully compiles > but CIL fails to parse. > > void foo(int DIM, int *A[DIM][DIM]) > { > } > > as you can see DIM is an argument of function foo and is not defined by > #define (so it's not a constant) > also notice that int *A[DIM][DIM] is different from int ***A it is > actualy equal to int**A > Is there a reason why CIL doesn't support this syntax or just got away? > Could this be added in a later release please? > > Thank you > Zakkak Foivos > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > CIL-users mailing list > CIL...@li... > https://lists.sourceforge.net/lists/listinfo/cil-users > |
From: Gabriel K. <ke...@pp...> - 2011-02-11 16:44:52
|
Dear Foivos, On Wed, Jan 19, 2011 at 09:52:36AM +0200, Foivos Zakkak wrote: > Subject: [CIL users] Arrays with no constant dimensions as arguments It's called variable-sized array in C99, and should be supported by CIL (ie. compiled away as a regular array using alloca). But you are absolutely correct that there is a bug in CIL. Thank you very much for spotting it. I haven't nailed down the root of the cause yet. It would help me a lot if you could try the following (temporary) fix: In ocamlutil/util.ml, replace the line: let list_map f l = count_map f l 0 by: let list_map = List.map Does this fix your issue? Thanks in advance, -- Gabriel Kerneis |
From: Gabriel K. <ke...@pp...> - 2011-02-11 20:48:47
|
On Fri, Feb 11, 2011 at 05:44:23PM +0100, Gabriel Kerneis wrote: > But you are absolutely correct that there is a bug in CIL. Thank you > very much for spotting it. Should be fixed in svn (r12128). Could you confirm that it works for you, please? Best, -- Gabriel Kerneis |
From: Zakkak F. <za...@ic...> - 2011-02-12 04:11:53
|
On 02/11/2011 10:48 PM, Gabriel Kerneis wrote: > On Fri, Feb 11, 2011 at 05:44:23PM +0100, Gabriel Kerneis wrote: >> But you are absolutely correct that there is a bug in CIL. Thank you >> very much for spotting it. > > Should be fixed in svn (r12128). Could you confirm that it works for > you, please? > > Best, I will inform you, as soon as i try it! Thank you very much Zakkak Foivos |
From: Zakkak F. <za...@ic...> - 2011-02-12 04:54:07
|
unfortunately it didn't work for a function with this signature: void foo(int DIM, float *A[DIM][DIM]) it gives the following Bug: Invalid length in array type: DIM Context : 2cil: init Error: Cabs2cil had some errors Fatal error: exception Errormsg.Error Raised at file "ocamlutil/errormsg.ml", line 49, characters 23-28 Called from file "src/main.ml", line 257, characters 6-24 Called from file "src/main.ml", line 290, characters 4-15 Thank you, Zakkak Foivos On 02/11/2011 06:44 PM, Gabriel Kerneis wrote: > Dear Foivos, > > On Wed, Jan 19, 2011 at 09:52:36AM +0200, Foivos Zakkak wrote: >> Subject: [CIL users] Arrays with no constant dimensions as arguments > > It's called variable-sized array in C99, and should be supported by CIL > (ie. compiled away as a regular array using alloca). > > But you are absolutely correct that there is a bug in CIL. Thank you > very much for spotting it. > > I haven't nailed down the root of the cause yet. It would help me a lot > if you could try the following (temporary) fix: > > In ocamlutil/util.ml, replace the line: > let list_map f l = count_map f l 0 > by: > let list_map = List.map > > Does this fix your issue? > > Thanks in advance, |
From: Gabriel K. <ke...@pp...> - 2011-02-12 09:03:40
|
On Sat, Feb 12, 2011 at 06:54:05AM +0200, Zakkak Foivos wrote: > for a function with this signature: > void foo(int DIM, float *A[DIM][DIM]) > > it gives the following > > Bug: Invalid length in array type: DIM Hmmm. Obviously, CIL only handles one-dimensional variable-length arrays. I'll try to fix that, but will probably not have time to do it in a near future. Sorry, -- Gabriel |