1 |
commit: 533ac92a825257fd5995738ccab5683abc85e52e |
2 |
Author: Jonathan-Christofer Demay <jcdemay <AT> gmail <DOT> com> |
3 |
AuthorDate: Wed Feb 23 16:19:06 2011 +0000 |
4 |
Commit: Jonathan-Christofer Demay <jcdemay <AT> gmail <DOT> com> |
5 |
CommitDate: Wed Feb 23 16:19:06 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=533ac92a |
7 |
|
8 |
sci-mathematics/frama-c: temporary retro-compatibility patch |
9 |
|
10 |
--- |
11 |
.../files/frama-c-20101202_beta2-local_tmps.patch | 125 ++++++++++++++++++++ |
12 |
.../frama-c/frama-c-20101202_beta2.ebuild | 2 + |
13 |
2 files changed, 127 insertions(+), 0 deletions(-) |
14 |
|
15 |
diff --git a/sci-mathematics/frama-c/files/frama-c-20101202_beta2-local_tmps.patch b/sci-mathematics/frama-c/files/frama-c-20101202_beta2-local_tmps.patch |
16 |
new file mode 100644 |
17 |
index 0000000..bd131a0 |
18 |
--- /dev/null |
19 |
+++ b/sci-mathematics/frama-c/files/frama-c-20101202_beta2-local_tmps.patch |
20 |
@@ -0,0 +1,125 @@ |
21 |
+diff -Naurp frama-c-Carbon-20101202-beta2-orig/cil/src/frontc/cabs2cil.ml frama-c-Carbon-20101202-beta2/cil/src/frontc/cabs2cil.ml |
22 |
+--- frama-c-Carbon-20101202-beta2-orig/cil/src/frontc/cabs2cil.ml 2010-12-17 13:17:07.000000000 +0000 |
23 |
++++ frama-c-Carbon-20101202-beta2/cil/src/frontc/cabs2cil.ml 2011-02-23 15:20:36.000000000 +0000 |
24 |
+@@ -671,13 +671,11 @@ let newTempVar descr (descrpure:bool) ty |
25 |
+ vi.vdescrpure <- descrpure; |
26 |
+ (* Rename if clash, but do not add to the environment *) |
27 |
+ let vi = alphaConvertVarAndAddToEnv false vi in |
28 |
+- (* |
29 |
+ (* the temporary is local to the function: the normalization can use it |
30 |
+ wherever it wants. |
31 |
+ *) |
32 |
+ !currentFunctionFDEC.sbody.blocals <- |
33 |
+ vi :: !currentFunctionFDEC.sbody.blocals; |
34 |
+- *) |
35 |
+ vi |
36 |
+ |
37 |
+ let mkAddrOfAndMark loc ((b, off) as lval) : exp = |
38 |
+@@ -4715,7 +4713,7 @@ and doExp local_env |
39 |
+ (if uop = A.POSINCR then "++" else "--") in |
40 |
+ let tmp = newTempVar (Some descr) true t in |
41 |
+ ([var tmp], |
42 |
+- local_var_chunk se' tmp +++ |
43 |
++ se' +++ |
44 |
+ (mkStmtOneInstr ~ghost:local_env.is_ghost |
45 |
+ (Set(var tmp, e', CurrentLoc.get ())),[],[],[]), |
46 |
+ (* the tmp variable should not be investigated for |
47 |
+@@ -4811,13 +4809,11 @@ and doExp local_env |
48 |
+ if needsTemp then |
49 |
+ let descr = Some (Pretty_utils.sfprintf "%a" dd_lval lv) in |
50 |
+ let tmp = newTempVar descr true lvt in |
51 |
+- let chunk = |
52 |
+- i2c |
53 |
+- (mkStmtOneInstr ~ghost:local_env.is_ghost |
54 |
+- (Set(lv, new_exp (Lval(var tmp)), loc)), |
55 |
+- [lv],[lv],var tmp :: r1') |
56 |
+- in |
57 |
+- ([],var tmp, local_var_chunk chunk tmp) |
58 |
++ ([],var tmp, |
59 |
++ i2c |
60 |
++ (mkStmtOneInstr ~ghost:local_env.is_ghost |
61 |
++ (Set(lv, new_exp (Lval(var tmp)), loc)), |
62 |
++ [lv],[lv],var tmp :: r1')) |
63 |
+ else r1',lv, empty |
64 |
+ in |
65 |
+ let (r2,se2, _, _) = |
66 |
+@@ -4939,17 +4935,14 @@ and doExp local_env |
67 |
+ let tmp = |
68 |
+ newTempVar (Some "<boolean expression>") true intType |
69 |
+ in |
70 |
+- let condChunk = |
71 |
+- compileCondExp false ce |
72 |
++ finishExp [] |
73 |
++ (compileCondExp false ce |
74 |
+ (empty +++ |
75 |
+ (mkStmtOneInstr ~ghost:local_env.is_ghost |
76 |
+ (Set(var tmp, integer 1,loc)),[],[],[])) |
77 |
+ (empty +++ |
78 |
+ (mkStmtOneInstr ~ghost:local_env.is_ghost |
79 |
+- (Set(var tmp, integer 0,loc)),[],[],[])) |
80 |
+- in |
81 |
+- finishExp [] |
82 |
+- (local_var_chunk condChunk tmp) |
83 |
++ (Set(var tmp, integer 0,loc)),[],[],[]))) |
84 |
+ (new_exp ~loc (Lval (var tmp))) |
85 |
+ intType |
86 |
+ end |
87 |
+@@ -5046,7 +5039,6 @@ and doExp local_env |
88 |
+ newTempVar |
89 |
+ (Some (Pretty_utils.sfprintf "%a" dd_exp e)) true t |
90 |
+ in |
91 |
+- let c = local_var_chunk c tmp in |
92 |
+ (* create an instruction to give the e to the temporary *) |
93 |
+ let i = mkStmtOneInstr ~ghost:local_env.is_ghost |
94 |
+ (Set(var tmp, e, loc)) in |
95 |
+@@ -5145,7 +5137,6 @@ and doExp local_env |
96 |
+ ASet (is_real,lv, r, lvt) -> is_real, lv, r, lvt |
97 |
+ | _ -> |
98 |
+ let v = newTempVar None true resTyp in |
99 |
+- prechunk:= local_var_chunk !prechunk v; |
100 |
+ false, var v, [], resTyp |
101 |
+ in |
102 |
+ pwhat := (ASet (is_real, destlv, r, destlvtyp)); |
103 |
+@@ -5275,7 +5266,6 @@ and doExp local_env |
104 |
+ (Pretty_utils.pp_list ~sep:", " dd_exp) !pargs |
105 |
+ in |
106 |
+ let tmp = newTempVar (Some descr) false restype'' in |
107 |
+- prechunk:=local_var_chunk !prechunk tmp; |
108 |
+ (* Remember that this variable has been created for this |
109 |
+ * specific call. We will use this in collapseCallCast. *) |
110 |
+ IH.add callTempVars tmp.vid (); |
111 |
+@@ -5371,7 +5361,6 @@ and doExp local_env |
112 |
+ let (r1,se1, _, _) = |
113 |
+ doExp local_env asconst e1 (ASet(false, tmp_var, [], tresult)) |
114 |
+ in |
115 |
+- let se1 = local_var_chunk se1 tmp in |
116 |
+ let r3,se3,_,_ = |
117 |
+ finishExp |
118 |
+ ~newWhat:(ASet(false,tmp_var, [], tresult)) r3 se3 e3' t3 |
119 |
+@@ -5388,7 +5377,7 @@ and doExp local_env |
120 |
+ | ASet (is_real, lv, r, lvt) -> is_real, lv, r, lvt, empty |
121 |
+ | _ -> |
122 |
+ let tmp = newTempVar None true tresult in |
123 |
+- false, var tmp, [], tresult, local_var_chunk empty tmp |
124 |
++ false, var tmp, [], tresult, empty |
125 |
+ in |
126 |
+ (* Now do e2 and e3 for real *) |
127 |
+ let (r2,se2, _, _) = |
128 |
+@@ -5461,7 +5450,7 @@ and doExp local_env |
129 |
+ b.bstmts @ |
130 |
+ [Cil.mkStmtOneInstr ~ghost:local_env.is_ghost |
131 |
+ (Set (Cil.var vi, e,loc))]; |
132 |
+- (local_var_chunk se vi,Cil.new_exp ~loc (Lval (Cil.var vi))) |
133 |
++ (se,Cil.new_exp ~loc (Lval (Cil.var vi))) |
134 |
+ | _ -> se,e |
135 |
+ in |
136 |
+ finishExp [] se e t |
137 |
+@@ -6583,7 +6572,7 @@ and createLocal ghost ((_, sto, _, _) as |
138 |
+ (Some (Pretty_utils.sfprintf "alloca(%a)" d_exp sizeof)) |
139 |
+ false rt |
140 |
+ in |
141 |
+- (local_var_chunk setlen tmp) |
142 |
++ setlen |
143 |
+ +++ (mkStmtOneInstr ~ghost |
144 |
+ (Call(Some(var tmp), new_exp ~loc (Lval(var alloca)), |
145 |
+ [ sizeof ], CurrentLoc.get ())),[],[],[]) |
146 |
|
147 |
diff --git a/sci-mathematics/frama-c/frama-c-20101202_beta2.ebuild b/sci-mathematics/frama-c/frama-c-20101202_beta2.ebuild |
148 |
index 05e24cf..1bf1977 100644 |
149 |
--- a/sci-mathematics/frama-c/frama-c-20101202_beta2.ebuild |
150 |
+++ b/sci-mathematics/frama-c/frama-c-20101202_beta2.ebuild |
151 |
@@ -32,6 +32,8 @@ S="${WORKDIR}/${PN/-c/-c-$NAME}-${PV/_/-}" |
152 |
src_prepare(){ |
153 |
rm share/libc/test.c |
154 |
rm -Rf src/wp |
155 |
+ |
156 |
+ epatch "${FILESDIR}/${P}-local_tmps.patch" |
157 |
|
158 |
touch config_file |
159 |
sed -i configure.in \ |