1# Copyright 1998, 1999 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17# Please email any bugs, comments, and/or additions to this file to:
18# bug-gdb@prep.ai.mit.edu
19
20# This file was written by Elena Zannoni (ezannoni@cygnus.com)
21
22# This file is part of the gdb testsuite
23
24#
25# tests to cover evaluate_subexp_standard with the EVAL_SKIP flag set.
26# this happens for instance when there is short circuit evaluation in the && and ||
27# operators, or in the non returned part of a (x ? y: z) expression.
28# the part that is not evaluated is parsed and evaluated anyway, but with
29# the EVAL_SKIP flag set
30#
31# source file "int-type.c"
32#
33
34
35if $tracelevel then {
36        strace $tracelevel
37}
38
39# Check to see if we have an executable to test.  If not, then either we
40# haven't tried to compile one, or the compilation failed for some reason.
41# In either case, just notify the user and skip the tests in this file.
42
43set testfile "int-type"
44set srcfile ${testfile}.c
45set binfile ${objdir}/${subdir}/${testfile}
46
47if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
48     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
49    }
50
51if [get_compiler_info $binfile] {
52    return -1
53}
54
55gdb_exit
56gdb_start
57gdb_reinitialize_dir $srcdir/$subdir
58gdb_load ${binfile}
59
60
61if ![runto_main] then {
62    perror "couldn't run to breakpoint"
63    continue
64}
65
66gdb_test "set variable x=14" "" "set variable x=14"
67gdb_test "set variable y=2" "" "set variable y=2"
68gdb_test "set variable z=2" "" "set variable z=2"
69gdb_test "set variable w=3" "" "set variable w=3"
70
71send_gdb "print (0 && (x+y))\n"
72gdb_expect {
73    -re ".$decimal = $false\r\n$gdb_prompt $" {
74        pass "print value of (0 && (x+y))"
75      }
76    -re ".*$gdb_prompt $" { fail "print value of (0 && (x+y))" }
77    timeout           { fail "(timeout) print value of (0 && (x+y))" }
78  }
79
80
81send_gdb "print (0 && (x-y))\n"
82gdb_expect {
83    -re ".$decimal = $false\r\n$gdb_prompt $" {
84        pass "print value of (0 && (x-y))"
85      }
86    -re ".*$gdb_prompt $" { fail "print value of (0 && (x-y))" }
87    timeout           { fail "(timeout) print value of (0 && (x-y))" }
88  }
89
90
91send_gdb "print (0 && (x*y))\n"
92gdb_expect {
93    -re ".$decimal = $false\r\n$gdb_prompt $" {
94        pass "print value of (0 && (x*y))"
95      }
96    -re ".*$gdb_prompt $" { fail "print value of (0 && (x*y))" }
97    timeout           { fail "(timeout) print value of (0 && (x*y))" }
98  }
99
100
101
102send_gdb "print (0 && (x/y))\n"
103gdb_expect {
104    -re ".$decimal = $false\r\n$gdb_prompt $" {
105        pass "print value of (0 && (x/y))"
106      }
107    -re ".*$gdb_prompt $" { fail "print value of (0 && (x/y))" }
108    timeout           { fail "(timeout) print value of (0 && (x/y))" }
109  }
110
111
112send_gdb "print (0 && (x%y))\n"
113gdb_expect {
114    -re ".$decimal = $false\r\n$gdb_prompt $" {
115        pass "print value of (0 && (x%y))"
116      }
117    -re ".*$gdb_prompt $" { fail "print value of (0 && (x%y))" }
118    timeout           { fail "(timeout) print value of (0 && (x%y))" }
119  }
120
121
122send_gdb "print (0 && (x&&y))\n"
123gdb_expect {
124    -re ".$decimal = $false\r\n$gdb_prompt $" {
125        pass "print value of (0 && (x&&y))"
126      }
127    -re ".*$gdb_prompt $" { fail "print value of (0 && (x&&y))" }
128    timeout           { fail "(timeout) print value of (0 && (x&&y))" }
129  }
130
131
132
133send_gdb "print (0 && (x||y))\n"
134gdb_expect {
135    -re ".$decimal = $false\r\n$gdb_prompt $" {
136        pass "print value of (0 && (x||y))"
137      }
138    -re ".*$gdb_prompt $" { fail "print value of (0 && (x||y))" }
139    timeout           { fail "(timeout) print value of (0 && (x||y))" }
140  }
141
142
143
144send_gdb "print (0 && (x&y))\n"
145gdb_expect {
146    -re ".$decimal = $false\r\n$gdb_prompt $" {
147        pass "print value of (0 && (x&y))"
148      }
149    -re ".*$gdb_prompt $" { fail "print value of (0 && (x&y))" }
150    timeout           { fail "(timeout) print value of (0 && (x&y))" }
151  }
152
153
154send_gdb "print (0 && (x|y))\n"
155gdb_expect {
156    -re ".$decimal = $false\r\n$gdb_prompt $" {
157        pass "print value of (0 && (x|y))"
158      }
159    -re ".*$gdb_prompt $" { fail "print value of (0 && (x|y))" }
160    timeout           { fail "(timeout) print value of (0 && (x|y))" }
161  }
162
163
164send_gdb "print (0 && (x^y))\n"
165gdb_expect {
166    -re ".$decimal = $false\r\n$gdb_prompt $" {
167        pass "print value of (0 && (x^y))"
168      }
169    -re ".*$gdb_prompt $" { fail "print value of (0 && (x^y))" }
170    timeout           { fail "(timeout) print value of (0 && (x^y))" }
171  }
172
173
174
175send_gdb "print (0 && (x < y))\n"
176gdb_expect {
177    -re ".$decimal = $false\r\n$gdb_prompt $" {
178        pass "print value of (0 && (x < y))"
179      }
180    -re ".*$gdb_prompt $" { fail "print value of (0 && (x < y))" }
181    timeout           { fail "(timeout) print value of (0 && (x < y))" }
182  }
183
184
185send_gdb "print (0 && (x <= y))\n"
186gdb_expect {
187    -re ".$decimal = $false\r\n$gdb_prompt $" {
188        pass "print value of (0 && (x <= y))"
189      }
190    -re ".*$gdb_prompt $" { fail "print value of (0 && (x <= y))" }
191    timeout           { fail "(timeout) print value of (0 && (x <= y))" }
192  }
193
194
195
196send_gdb "print (0 && (x>y))\n"
197gdb_expect {
198    -re ".$decimal = $false\r\n$gdb_prompt $" {
199        pass "print value of (0 && (x>y))"
200      }
201    -re ".*$gdb_prompt $" { fail "print value of (0 && (x>y))" }
202    timeout           { fail "(timeout) print value of (0 && (x>y))" }
203  }
204
205
206send_gdb "print (0 && (x>=y))\n"
207gdb_expect {
208    -re ".$decimal = $false\r\n$gdb_prompt $" {
209        pass "print value of (0 && (x>=y))"
210      }
211    -re ".*$gdb_prompt $" { fail "print value of (0 && (x>=y))" }
212    timeout           { fail "(timeout) print value of (0 && (x>=y))" }
213  }
214
215
216
217send_gdb "print (0 && (x==y))\n"
218gdb_expect {
219    -re ".$decimal = $false\r\n$gdb_prompt $" {
220        pass "print value of (0 && (x==y))"
221      }
222    -re ".*$gdb_prompt $" { fail "print value of (0 && (x==y))" }
223    timeout           { fail "(timeout) print value of (0 && (x==y))" }
224  }
225
226
227send_gdb "print (0 && (x!=y))\n"
228gdb_expect {
229    -re ".$decimal = $false\r\n$gdb_prompt $" {
230        pass "print value of (0 && (x!=y))"
231      }
232    -re ".*$gdb_prompt $" { fail "print value of (0 && (x!=y))" }
233    timeout           { fail "(timeout) print value of (0 && (x!=y))" }
234  }
235
236
237send_gdb "print (0 && (x<<31))\n"
238gdb_expect {
239    -re ".$decimal = $false\r\n$gdb_prompt $" {
240        pass "print value of (0 && (x<<31))"
241      }
242    -re ".*$gdb_prompt $" { fail "print value of (0 && (x<<31))" }
243    timeout           { fail "(timeout) print value of (0 && (x<<31))" }
244  }
245
246
247send_gdb "print (0 && (x>>31))\n"
248gdb_expect {
249    -re ".$decimal = $false\r\n$gdb_prompt $" {
250        pass "print value of (0 && (x>>31))"
251      }
252    -re ".*$gdb_prompt $" { fail "print value of (0 && (x>>31))" }
253    timeout           { fail "(timeout) print value of (0 && (x>>31))" }
254  }
255
256
257
258send_gdb "print (0 && (!x))\n"
259gdb_expect {
260    -re ".$decimal = $false\r\n$gdb_prompt $" {
261        pass "print value of (0 && (!x))"
262      }
263    -re ".*$gdb_prompt $" { fail "print value of (0 && (!x))" }
264    timeout           { fail "(timeout) print value of (0 && (!x))" }
265  }
266
267
268send_gdb "print (0 && (~x))\n"
269gdb_expect {
270    -re ".$decimal = $false\r\n$gdb_prompt $" {
271        pass "print value of (0 && (~x))"
272      }
273    -re ".*$gdb_prompt $" { fail "print value of (0 && (~x))" }
274    timeout           { fail "(timeout) print value of (0 && (~x))" }
275  }
276
277send_gdb "print (0 && (-x))\n"
278gdb_expect {
279    -re ".$decimal = $false\r\n$gdb_prompt $" {
280        pass "print value of (0 && (-x))"
281      }
282    -re ".*$gdb_prompt $" { fail "print value of (0 && (-x))" }
283    timeout           { fail "(timeout) print value of (0 && (-x))" }
284  }
285
286
287send_gdb "print (0 && (x++))\n"
288gdb_expect {
289    -re ".$decimal = $false\r\n$gdb_prompt $" {
290        pass "print value of (0 && (x++))"
291      }
292    -re ".*$gdb_prompt $" { fail "print value of (0 && (x++))" }
293    timeout           { fail "(timeout) print value of (0 && (x++))" }
294  }
295
296
297send_gdb "print (0 && (++x))\n"
298gdb_expect {
299    -re ".$decimal = $false\r\n$gdb_prompt $" {
300        pass "print value of (0 && (++x))"
301      }
302    -re ".*$gdb_prompt $" { fail "print value of (0 && (++x))" }
303    timeout           { fail "(timeout) print value of (0 && (++x))" }
304  }
305
306
307send_gdb "print (0 && (x--))\n"
308gdb_expect {
309    -re ".$decimal = $false\r\n$gdb_prompt $" {
310        pass "print value of (0 && (x--))"
311      }
312    -re ".*$gdb_prompt $" { fail "print value of (0 && (x--))" }
313    timeout           { fail "(timeout) print value of (0 && (x--))" }
314  }
315
316
317send_gdb "print (0 && (--x))\n"
318gdb_expect {
319    -re ".$decimal = $false\r\n$gdb_prompt $" {
320        pass "print value of (0 && (--x))"
321      }
322    -re ".*$gdb_prompt $" { fail "print value of (0 && (--x))" }
323    timeout           { fail "(timeout) print value of (0 && (--x))" }
324  }
325
326send_gdb "print (0 && (x+=7))\n"
327gdb_expect {
328    -re ".$decimal = $false\r\n$gdb_prompt $" {
329        pass "print value of (0 && (x+=7))"
330      }
331    -re ".*$gdb_prompt $" { fail "print value of (0 && (x+=7))" }
332    timeout           { fail "(timeout) print value of (0 && (x+=7))" }
333  }
334
335send_gdb "print (0 && (x=y))\n"
336gdb_expect {
337    -re ".$decimal = $false\r\n$gdb_prompt $" {
338        pass "print value of (0 && (x=y))"
339      }
340    -re ".*$gdb_prompt $" { fail "print value of (0 && (x=y))" }
341    timeout           { fail "(timeout) print value of (0 && (x=y))" }
342  }
343
344gdb_exit
345return 0
346
347
348
349
350
351
352
353