CLooG 0.18.4
[cloog.git] / test / reports / fabrice_baray_29-10-2004
blobc561402101cd7a3634d69bd5b2575cab5ae6b8f7
1 salut,
3 je testais ta librairie cloog et je suis tombé sur un point qui m'a fait
4 perdre un peu de temps, je pense que si ce n'est pas le cas, ça serait pas
5 mal de le préciser dans la doc pour éviter des déboires. je te passe les
6 détails du pourquoi, en fait je suis tombé sur un core dont voici la trace
7 d'appels :
10 #0  0x1b907460 in _vgi__soname$3Alibc$2Eso$2E6$3Afree (p=0x0) at vg_replace_malloc.c:153
11 #1  0x1bb1e2f2 in cloog_statement_free (statement=0x1bb58d30) at source/statement.c:118
12 #2  0x1bb19390 in cloog_loop_free_parts (loop=0x1bb66280, domain=1, statement=1, inner=0, next=0) at source/loop.c:170
13 #3  0x1bb1aba5 in cloog_loop_simplify (loop=0x1bb66280, context=0x1bb662c8, level=3, nb_par=0) at source/loop.c:1096
14 #4  0x1bb1a9c7 in cloog_loop_simplify (loop=0x1bb66530, context=0x1bb68820, level=2, nb_par=0) at source/loop.c:1040
15 #5  0x1bb1a9c7 in cloog_loop_simplify (loop=0x1bb68a60, context=0x1bb58b98, level=1, nb_par=0) at source/loop.c:1040
16 #6  0x1bb18e32 in cloog_program_generate (program=0x1bb57cc8, options=0x1bb57c68) at source/program.c:712
19 en fait il s'agit du ``nom'' des statements : le champ loop->statement->body.
20 et bien pour que ta librairie marche, il faut qu'il soit initialisé et
21 désallouable par un free. ce ne peut être un champ statique style
22 "statement" comme je l'avais mis au début. c'est un détail mais qui peut
23 être piégeur.
25 point différent : le champ 'name' des options, il semble important de le
26 définir avant de faire un print, mais celui là pas forcément avec un malloc
27 car il n'est pas désalloué par un quelconque free de cloog_options_free.
29 ces petits détails pris en compte, ça à l'air de mieux marcher.
31 ,fb
34 ----------------------------------------------------------------------------
35 >Salut Fabrice,
36 >> il faut que tu arrêtes d'allonger ma pile de choses à m'occuper 
37 >> 'rapidement' sinon j'en ai pour jusqu'en 2006 !
40 allez, une dernière, pareil c'est pas urgent, stocke, j'ai pas besoin de
41 réponse pour l'instant. en fait lorsque tu as pas de paramètres à ton
42 problème, tu passes le polyhèdre :
44 1 2
45 1 1
47 comme dans l'exemple ci-dessous :
49 # ----------------------------------------------------------------------
50 # language: C
53 # parameters {m, n | 4<=m<=n}
54 1 2
55 1 1
58 1 # Number of statements
61 # {i, j | 1<=i<=n 1<=j<=m}
62 4 4
63 #  i  j  m  n  1
64 1 1  0   5 
65 1 -1  0   5 
66 1 0  1   5 
67 1 0 -1   5 
68 0 0 0
71 0 # Scattering functions
72 # ----------------------------------------------------------------------
74 qui donne parfaitement : 
76 /* Generated from a.cloog by CLooG v0.12.2 64 bits in 0.00s. */
77 for (i=-5;i<=5;i++) {
78   for (j=-5;j<=5;j++) {
79     S1 ;
80   }
85 par contre, si je décide de lui passer à la place :
87 1 2
88 0 1
90 là il ne m'afficher plus de solution. c'est bizarre ou c'est normal ? 
92 en fait le polyhèdre ci dessus est intéressant, car il correspond au
93 polyhèdre retourné par la fonction Empty_Polyhedron de la polylib.
95 cprog->context=Empty_Polyhedron(0);
97 ,fb