Subversion Repositories tendra.SVN

Rev

Rev 5 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
6 7u83 2
 * Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>.
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions are met:
7
 *
8
 * 1. Redistributions of source code must retain the above copyright notice,
9
 *    this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
11
 *    this list of conditions and the following disclaimer in the documentation
12
 *    and/or other materials provided with the distribution.
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
14
 *    may be used to endorse or promote products derived from this software
15
 *    without specific, prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
 *
29
 * $Id$
30
 */
31
/*
2 7u83 32
    		 Crown Copyright (c) 1997
6 7u83 33
 
2 7u83 34
    This TenDRA(r) Computer Program is subject to Copyright
35
    owned by the United Kingdom Secretary of State for Defence
36
    acting through the Defence Evaluation and Research Agency
37
    (DERA).  It is made available to Recipients with a
38
    royalty-free licence for its use, reproduction, transfer
39
    to other parties and amendment for any purpose not excluding
40
    product development provided that any such use et cetera
41
    shall be deemed to be acceptance of the following conditions:-
6 7u83 42
 
2 7u83 43
        (1) Its Recipients shall ensure that this Notice is
44
        reproduced upon any copies or amended versions of it;
6 7u83 45
 
2 7u83 46
        (2) Any amended version of it shall be clearly marked to
47
        show both the nature of and the organisation responsible
48
        for the relevant amendment or amendments;
6 7u83 49
 
2 7u83 50
        (3) Its onward transfer from a recipient to another
51
        party shall be deemed to be that party's acceptance of
52
        these conditions;
6 7u83 53
 
2 7u83 54
        (4) DERA gives no warranty or assurance as to its
55
        quality or suitability for any purpose and DERA accepts
56
        no liability whatsoever in relation to any use to which
57
        it may be put.
58
*/
59
 
60
 
61
/* AUTOMATICALLY GENERATED BY make_tdf VERSION 2.0 FROM TDF 4.1 */
62
 
6 7u83 63
#define sub0(X)	((X)->son)
64
#define sub1(X)	((X)->son->bro)
65
#define sub2(X)	((X)->son->bro->bro)
66
#define sub3(X)	((X)->son->bro->bro->bro)
67
#define sub4(X)	((X)->son->bro->bro->bro->bro)
68
#define sub5(X)	((X)->son->bro->bro->bro->bro->bro)
69
#define sub6(X)	((X)->son->bro->bro->bro->bro->bro->bro)
70
#define sub7(X)	((X)->son->bro->bro->bro->bro->bro->bro->bro)
2 7u83 71
 
72
 
73
/*
74
    SET THE SHAPE OF AN EXPRESSION
75
 
76
    The shape of the expression exp is calculated and assigned.  Most of
77
    the work is done by the check routines above, as selected by an
78
    automatically generated switch statement.
79
*/
80
 
6 7u83 81
void
82
check_exp_fn(node *exp)
2 7u83 83
{
6 7u83 84
    long m;
85
    if (exp == null) {
86
	return;
87
    }
88
    m = exp->cons->encoding;
89
    if (m == ENC_labelled) {
90
	node *placelabs_intro = sub0(exp);
91
	node *places = sub2(exp);
92
	if (placelabs_intro->cons->encoding != places->cons->encoding) {
93
	    input_error("Labels don't match exps in labelled");
2 7u83 94
	}
95
    }
6 7u83 96
    if (do_check) {
97
	if (exp->shape) {
98
	    return;
99
	}
100
	checking = exp->cons->name;
101
	switch (m) {
102
	    case ENC_exp_apply_token: {
2 7u83 103
		CHECK_exp_apply_token
6 7u83 104
		break;
2 7u83 105
	    }
6 7u83 106
	    case ENC_exp_cond: {
107
		node *control = sub0(exp);
2 7u83 108
		CHECK_exp_cond
6 7u83 109
		break;
2 7u83 110
	    }
6 7u83 111
	    case ENC_abs: {
112
		node *arg1 = sub1(exp);
2 7u83 113
		CHECK_abs
6 7u83 114
		break;
2 7u83 115
	    }
6 7u83 116
	    case ENC_add_to_ptr: {
117
		node *arg1 = sub0(exp);
118
		node *arg2 = sub1(exp);
2 7u83 119
		CHECK_add_to_ptr
6 7u83 120
		break;
2 7u83 121
	    }
6 7u83 122
	    case ENC_and: {
123
		node *arg1 = sub0(exp);
124
		node *arg2 = sub1(exp);
2 7u83 125
		CHECK_and
6 7u83 126
		break;
2 7u83 127
	    }
6 7u83 128
	    case ENC_apply_proc: {
129
		node *result_shape = sub0(exp);
130
		node *p = sub1(exp);
131
		node *params = sub2(exp);
132
		node *var_param = sub3(exp);
2 7u83 133
		CHECK_apply_proc
6 7u83 134
		break;
2 7u83 135
	    }
6 7u83 136
	    case ENC_apply_general_proc: {
137
		node *result_shape = sub0(exp);
138
		node *p = sub2(exp);
139
		node *postlude = sub5(exp);
2 7u83 140
		CHECK_apply_general_proc
6 7u83 141
		break;
2 7u83 142
	    }
6 7u83 143
	    case ENC_assign: {
144
		node *arg1 = sub0(exp);
145
		node *arg2 = sub1(exp);
2 7u83 146
		CHECK_assign
6 7u83 147
		break;
2 7u83 148
	    }
6 7u83 149
	    case ENC_assign_with_mode: {
150
		node *arg1 = sub1(exp);
151
		node *arg2 = sub2(exp);
2 7u83 152
		CHECK_assign_with_mode
6 7u83 153
		break;
2 7u83 154
	    }
6 7u83 155
	    case ENC_bitfield_assign: {
156
		node *arg1 = sub0(exp);
157
		node *arg2 = sub1(exp);
158
		node *arg3 = sub2(exp);
2 7u83 159
		CHECK_bitfield_assign
6 7u83 160
		break;
2 7u83 161
	    }
6 7u83 162
	    case ENC_bitfield_assign_with_mode: {
163
		node *arg1 = sub1(exp);
164
		node *arg2 = sub2(exp);
165
		node *arg3 = sub3(exp);
2 7u83 166
		CHECK_bitfield_assign_with_mode
6 7u83 167
		break;
2 7u83 168
	    }
6 7u83 169
	    case ENC_bitfield_contents: {
170
		node *v = sub0(exp);
171
		node *arg1 = sub1(exp);
172
		node *arg2 = sub2(exp);
2 7u83 173
		CHECK_bitfield_contents
6 7u83 174
		break;
2 7u83 175
	    }
6 7u83 176
	    case ENC_bitfield_contents_with_mode: {
177
		node *v = sub1(exp);
178
		node *arg1 = sub2(exp);
179
		node *arg2 = sub3(exp);
2 7u83 180
		CHECK_bitfield_contents_with_mo
6 7u83 181
		break;
2 7u83 182
	    }
6 7u83 183
	    case ENC_case: {
184
		node *exhaustive = sub0(exp);
185
		node *control = sub1(exp);
2 7u83 186
		CHECK_case
6 7u83 187
		break;
2 7u83 188
	    }
6 7u83 189
	    case ENC_change_bitfield_to_int: {
190
		node *v = sub0(exp);
191
		node *arg1 = sub1(exp);
2 7u83 192
		CHECK_change_bitfield_to_int
6 7u83 193
		break;
2 7u83 194
	    }
6 7u83 195
	    case ENC_change_floating_variety: {
196
		node *r = sub1(exp);
197
		node *arg1 = sub2(exp);
2 7u83 198
		CHECK_change_floating_variety
6 7u83 199
		break;
2 7u83 200
	    }
6 7u83 201
	    case ENC_change_variety: {
202
		node *r = sub1(exp);
203
		node *arg1 = sub2(exp);
2 7u83 204
		CHECK_change_variety
6 7u83 205
		break;
2 7u83 206
	    }
6 7u83 207
	    case ENC_change_int_to_bitfield: {
208
		node *bv = sub0(exp);
209
		node *arg1 = sub1(exp);
2 7u83 210
		CHECK_change_int_to_bitfield
6 7u83 211
		break;
2 7u83 212
	    }
6 7u83 213
	    case ENC_complex_conjugate: {
214
		node *c = sub0(exp);
2 7u83 215
		CHECK_complex_conjugate
6 7u83 216
		break;
2 7u83 217
	    }
6 7u83 218
	    case ENC_component: {
219
		node *sha = sub0(exp);
220
		node *arg1 = sub1(exp);
221
		node *arg2 = sub2(exp);
2 7u83 222
		CHECK_component
6 7u83 223
		break;
2 7u83 224
	    }
6 7u83 225
	    case ENC_concat_nof: {
226
		node *arg1 = sub0(exp);
227
		node *arg2 = sub1(exp);
2 7u83 228
		CHECK_concat_nof
6 7u83 229
		break;
2 7u83 230
	    }
6 7u83 231
	    case ENC_conditional: {
232
		node *first = sub1(exp);
233
		node *alt = sub2(exp);
2 7u83 234
		CHECK_conditional
6 7u83 235
		break;
2 7u83 236
	    }
6 7u83 237
	    case ENC_contents: {
238
		node *s = sub0(exp);
239
		node *arg1 = sub1(exp);
2 7u83 240
		CHECK_contents
6 7u83 241
		break;
2 7u83 242
	    }
6 7u83 243
	    case ENC_contents_with_mode: {
244
		node *s = sub1(exp);
245
		node *arg1 = sub2(exp);
2 7u83 246
		CHECK_contents_with_mode
6 7u83 247
		break;
2 7u83 248
	    }
6 7u83 249
	    case ENC_current_env: {
2 7u83 250
		CHECK_current_env
6 7u83 251
		break;
2 7u83 252
	    }
6 7u83 253
	    case ENC_div0: {
254
		node *arg1 = sub2(exp);
255
		node *arg2 = sub3(exp);
2 7u83 256
		CHECK_div0
6 7u83 257
		break;
2 7u83 258
	    }
6 7u83 259
	    case ENC_div1: {
260
		node *arg1 = sub2(exp);
261
		node *arg2 = sub3(exp);
2 7u83 262
		CHECK_div1
6 7u83 263
		break;
2 7u83 264
	    }
6 7u83 265
	    case ENC_div2: {
266
		node *arg1 = sub2(exp);
267
		node *arg2 = sub3(exp);
2 7u83 268
		CHECK_div2
6 7u83 269
		break;
2 7u83 270
	    }
6 7u83 271
	    case ENC_env_offset: {
272
		node *fa = sub0(exp);
273
		node *y = sub1(exp);
274
		node *t = sub2(exp);
2 7u83 275
		CHECK_env_offset
6 7u83 276
		break;
2 7u83 277
	    }
6 7u83 278
	    case ENC_env_size: {
279
		node *proctag = sub0(exp);
2 7u83 280
		CHECK_env_size
6 7u83 281
		break;
2 7u83 282
	    }
6 7u83 283
	    case ENC_fail_installer: {
284
		node *message = sub0(exp);
2 7u83 285
		CHECK_fail_installer
6 7u83 286
		break;
2 7u83 287
	    }
6 7u83 288
	    case ENC_float_int: {
289
		node *f = sub1(exp);
290
		node *arg1 = sub2(exp);
2 7u83 291
		CHECK_float_int
6 7u83 292
		break;
2 7u83 293
	    }
6 7u83 294
	    case ENC_floating_abs: {
295
		node *arg1 = sub1(exp);
2 7u83 296
		CHECK_floating_abs
6 7u83 297
		break;
2 7u83 298
	    }
6 7u83 299
	    case ENC_floating_div: {
300
		node *arg1 = sub1(exp);
301
		node *arg2 = sub2(exp);
2 7u83 302
		CHECK_floating_div
6 7u83 303
		break;
2 7u83 304
	    }
6 7u83 305
	    case ENC_floating_minus: {
306
		node *arg1 = sub1(exp);
307
		node *arg2 = sub2(exp);
2 7u83 308
		CHECK_floating_minus
6 7u83 309
		break;
2 7u83 310
	    }
6 7u83 311
	    case ENC_floating_maximum: {
312
		node *arg1 = sub1(exp);
313
		node *arg2 = sub2(exp);
2 7u83 314
		CHECK_floating_maximum
6 7u83 315
		break;
2 7u83 316
	    }
6 7u83 317
	    case ENC_floating_minimum: {
318
		node *arg1 = sub1(exp);
319
		node *arg2 = sub2(exp);
2 7u83 320
		CHECK_floating_minimum
6 7u83 321
		break;
2 7u83 322
	    }
6 7u83 323
	    case ENC_floating_mult: {
324
		node *arg1 = sub1(exp);
2 7u83 325
		CHECK_floating_mult
6 7u83 326
		break;
2 7u83 327
	    }
6 7u83 328
	    case ENC_floating_negate: {
329
		node *arg1 = sub1(exp);
2 7u83 330
		CHECK_floating_negate
6 7u83 331
		break;
2 7u83 332
	    }
6 7u83 333
	    case ENC_floating_plus: {
334
		node *arg1 = sub1(exp);
2 7u83 335
		CHECK_floating_plus
6 7u83 336
		break;
2 7u83 337
	    }
6 7u83 338
	    case ENC_floating_power: {
339
		node *arg1 = sub1(exp);
340
		node *arg2 = sub2(exp);
2 7u83 341
		CHECK_floating_power
6 7u83 342
		break;
2 7u83 343
	    }
6 7u83 344
	    case ENC_floating_test: {
345
		node *arg1 = sub4(exp);
346
		node *arg2 = sub5(exp);
2 7u83 347
		CHECK_floating_test
6 7u83 348
		break;
2 7u83 349
	    }
6 7u83 350
	    case ENC_goto: {
2 7u83 351
		CHECK_goto
6 7u83 352
		break;
2 7u83 353
	    }
6 7u83 354
	    case ENC_goto_local_lv: {
355
		node *arg1 = sub0(exp);
2 7u83 356
		CHECK_goto_local_lv
6 7u83 357
		break;
2 7u83 358
	    }
6 7u83 359
	    case ENC_identify: {
360
		node *name_intro = sub1(exp);
361
		node *definition = sub2(exp);
362
		node *body = sub3(exp);
2 7u83 363
		CHECK_identify
6 7u83 364
		break;
2 7u83 365
	    }
6 7u83 366
	    case ENC_ignorable: {
367
		node *arg1 = sub0(exp);
2 7u83 368
		CHECK_ignorable
6 7u83 369
		break;
2 7u83 370
	    }
6 7u83 371
	    case ENC_imaginary_part: {
372
		node *arg1 = sub0(exp);
2 7u83 373
		CHECK_imaginary_part
6 7u83 374
		break;
2 7u83 375
	    }
6 7u83 376
	    case ENC_initial_value: {
377
		node *init = sub0(exp);
2 7u83 378
		CHECK_initial_value
6 7u83 379
		break;
2 7u83 380
	    }
6 7u83 381
	    case ENC_integer_test: {
382
		node *arg1 = sub3(exp);
383
		node *arg2 = sub4(exp);
2 7u83 384
		CHECK_integer_test
6 7u83 385
		break;
2 7u83 386
	    }
6 7u83 387
	    case ENC_labelled: {
388
		node *starter = sub1(exp);
389
		node *places = sub2(exp);
2 7u83 390
		CHECK_labelled
6 7u83 391
		break;
2 7u83 392
	    }
6 7u83 393
	    case ENC_last_local: {
394
		node *x = sub0(exp);
2 7u83 395
		CHECK_last_local
6 7u83 396
		break;
2 7u83 397
	    }
6 7u83 398
	    case ENC_local_alloc: {
399
		node *arg1 = sub0(exp);
2 7u83 400
		CHECK_local_alloc
6 7u83 401
		break;
2 7u83 402
	    }
6 7u83 403
	    case ENC_local_alloc_check: {
404
		node *arg1 = sub0(exp);
2 7u83 405
		CHECK_local_alloc_check
6 7u83 406
		break;
2 7u83 407
	    }
6 7u83 408
	    case ENC_local_free: {
409
		node *a = sub0(exp);
410
		node *p = sub1(exp);
2 7u83 411
		CHECK_local_free
6 7u83 412
		break;
2 7u83 413
	    }
6 7u83 414
	    case ENC_local_free_all: {
2 7u83 415
		CHECK_local_free_all
6 7u83 416
		break;
2 7u83 417
	    }
6 7u83 418
	    case ENC_long_jump: {
419
		node *arg1 = sub0(exp);
420
		node *arg2 = sub1(exp);
2 7u83 421
		CHECK_long_jump
6 7u83 422
		break;
2 7u83 423
	    }
6 7u83 424
	    case ENC_make_complex: {
425
		node *c = sub0(exp);
426
		node *arg1 = sub1(exp);
427
		node *arg2 = sub2(exp);
2 7u83 428
		CHECK_make_complex
6 7u83 429
		break;
2 7u83 430
	    }
6 7u83 431
	    case ENC_make_compound: {
432
		node *arg1 = sub0(exp);
433
		node *arg2 = sub1(exp);
2 7u83 434
		CHECK_make_compound
6 7u83 435
		break;
2 7u83 436
	    }
6 7u83 437
	    case ENC_make_floating: {
438
		node *f = sub0(exp);
439
		node *negative = sub2(exp);
440
		node *mantissa = sub3(exp);
441
		node *base = sub4(exp);
2 7u83 442
		CHECK_make_floating
6 7u83 443
		break;
2 7u83 444
	    }
6 7u83 445
	    case ENC_make_general_proc: {
446
		node *result_shape = sub0(exp);
447
		node *body = sub4(exp);
2 7u83 448
		CHECK_make_general_proc
6 7u83 449
		break;
2 7u83 450
	    }
6 7u83 451
	    case ENC_make_int: {
452
		node *v = sub0(exp);
2 7u83 453
		CHECK_make_int
6 7u83 454
		break;
2 7u83 455
	    }
6 7u83 456
	    case ENC_make_local_lv: {
2 7u83 457
		CHECK_make_local_lv
6 7u83 458
		break;
2 7u83 459
	    }
6 7u83 460
	    case ENC_make_nof: {
461
		node *arg1 = sub0(exp);
2 7u83 462
		CHECK_make_nof
6 7u83 463
		break;
2 7u83 464
	    }
6 7u83 465
	    case ENC_make_nof_int: {
466
		node *v = sub0(exp);
467
		node *str = sub1(exp);
2 7u83 468
		CHECK_make_nof_int
6 7u83 469
		break;
2 7u83 470
	    }
6 7u83 471
	    case ENC_make_null_local_lv: {
2 7u83 472
		CHECK_make_null_local_lv
6 7u83 473
		break;
2 7u83 474
	    }
6 7u83 475
	    case ENC_make_null_proc: {
2 7u83 476
		CHECK_make_null_proc
6 7u83 477
		break;
2 7u83 478
	    }
6 7u83 479
	    case ENC_make_null_ptr: {
480
		node *a = sub0(exp);
2 7u83 481
		CHECK_make_null_ptr
6 7u83 482
		break;
2 7u83 483
	    }
6 7u83 484
	    case ENC_make_proc: {
485
		node *result_shape = sub0(exp);
486
		node *body = sub3(exp);
2 7u83 487
		CHECK_make_proc
6 7u83 488
		break;
2 7u83 489
	    }
6 7u83 490
	    case ENC_make_stack_limit: {
491
		node *stack_base = sub0(exp);
492
		node *frame_size = sub1(exp);
493
		node *alloc_size = sub2(exp);
2 7u83 494
		CHECK_make_stack_limit
6 7u83 495
		break;
2 7u83 496
	    }
6 7u83 497
	    case ENC_make_top: {
2 7u83 498
		CHECK_make_top
6 7u83 499
		break;
2 7u83 500
	    }
6 7u83 501
	    case ENC_make_value: {
502
		node *s = sub0(exp);
2 7u83 503
		CHECK_make_value
6 7u83 504
		break;
2 7u83 505
	    }
6 7u83 506
	    case ENC_maximum: {
507
		node *arg1 = sub0(exp);
508
		node *arg2 = sub1(exp);
2 7u83 509
		CHECK_maximum
6 7u83 510
		break;
2 7u83 511
	    }
6 7u83 512
	    case ENC_minimum: {
513
		node *arg1 = sub0(exp);
514
		node *arg2 = sub1(exp);
2 7u83 515
		CHECK_minimum
6 7u83 516
		break;
2 7u83 517
	    }
6 7u83 518
	    case ENC_minus: {
519
		node *arg1 = sub1(exp);
520
		node *arg2 = sub2(exp);
2 7u83 521
		CHECK_minus
6 7u83 522
		break;
2 7u83 523
	    }
6 7u83 524
	    case ENC_move_some: {
525
		node *arg1 = sub1(exp);
526
		node *arg2 = sub2(exp);
527
		node *arg3 = sub3(exp);
2 7u83 528
		CHECK_move_some
6 7u83 529
		break;
2 7u83 530
	    }
6 7u83 531
	    case ENC_mult: {
532
		node *arg1 = sub1(exp);
533
		node *arg2 = sub2(exp);
2 7u83 534
		CHECK_mult
6 7u83 535
		break;
2 7u83 536
	    }
6 7u83 537
	    case ENC_n_copies: {
538
		node *n = sub0(exp);
539
		node *arg1 = sub1(exp);
2 7u83 540
		CHECK_n_copies
6 7u83 541
		break;
2 7u83 542
	    }
6 7u83 543
	    case ENC_negate: {
544
		node *arg1 = sub1(exp);
2 7u83 545
		CHECK_negate
6 7u83 546
		break;
2 7u83 547
	    }
6 7u83 548
	    case ENC_not: {
549
		node *arg1 = sub0(exp);
2 7u83 550
		CHECK_not
6 7u83 551
		break;
2 7u83 552
	    }
6 7u83 553
	    case ENC_obtain_tag: {
554
		node *t = sub0(exp);
2 7u83 555
		CHECK_obtain_tag
6 7u83 556
		break;
2 7u83 557
	    }
6 7u83 558
	    case ENC_offset_add: {
559
		node *arg1 = sub0(exp);
560
		node *arg2 = sub1(exp);
2 7u83 561
		CHECK_offset_add
6 7u83 562
		break;
2 7u83 563
	    }
6 7u83 564
	    case ENC_offset_div: {
565
		node *v = sub0(exp);
566
		node *arg1 = sub1(exp);
567
		node *arg2 = sub2(exp);
2 7u83 568
		CHECK_offset_div
6 7u83 569
		break;
2 7u83 570
	    }
6 7u83 571
	    case ENC_offset_div_by_int: {
572
		node *arg1 = sub0(exp);
573
		node *arg2 = sub1(exp);
2 7u83 574
		CHECK_offset_div_by_int
6 7u83 575
		break;
2 7u83 576
	    }
6 7u83 577
	    case ENC_offset_max: {
578
		node *arg1 = sub0(exp);
579
		node *arg2 = sub1(exp);
2 7u83 580
		CHECK_offset_max
6 7u83 581
		break;
2 7u83 582
	    }
6 7u83 583
	    case ENC_offset_mult: {
584
		node *arg1 = sub0(exp);
585
		node *arg2 = sub1(exp);
2 7u83 586
		CHECK_offset_mult
6 7u83 587
		break;
2 7u83 588
	    }
6 7u83 589
	    case ENC_offset_negate: {
590
		node *arg1 = sub0(exp);
2 7u83 591
		CHECK_offset_negate
6 7u83 592
		break;
2 7u83 593
	    }
6 7u83 594
	    case ENC_offset_pad: {
595
		node *a = sub0(exp);
596
		node *arg1 = sub1(exp);
2 7u83 597
		CHECK_offset_pad
6 7u83 598
		break;
2 7u83 599
	    }
6 7u83 600
	    case ENC_offset_subtract: {
601
		node *arg1 = sub0(exp);
602
		node *arg2 = sub1(exp);
2 7u83 603
		CHECK_offset_subtract
6 7u83 604
		break;
2 7u83 605
	    }
6 7u83 606
	    case ENC_offset_test: {
607
		node *arg1 = sub3(exp);
608
		node *arg2 = sub4(exp);
2 7u83 609
		CHECK_offset_test
6 7u83 610
		break;
2 7u83 611
	    }
6 7u83 612
	    case ENC_offset_zero: {
613
		node *a = sub0(exp);
2 7u83 614
		CHECK_offset_zero
6 7u83 615
		break;
2 7u83 616
	    }
6 7u83 617
	    case ENC_or: {
618
		node *arg1 = sub0(exp);
619
		node *arg2 = sub1(exp);
2 7u83 620
		CHECK_or
6 7u83 621
		break;
2 7u83 622
	    }
6 7u83 623
	    case ENC_plus: {
624
		node *arg1 = sub1(exp);
625
		node *arg2 = sub2(exp);
2 7u83 626
		CHECK_plus
6 7u83 627
		break;
2 7u83 628
	    }
6 7u83 629
	    case ENC_pointer_test: {
630
		node *arg1 = sub3(exp);
631
		node *arg2 = sub4(exp);
2 7u83 632
		CHECK_pointer_test
6 7u83 633
		break;
2 7u83 634
	    }
6 7u83 635
	    case ENC_power: {
636
		node *arg1 = sub1(exp);
637
		node *arg2 = sub2(exp);
2 7u83 638
		CHECK_power
6 7u83 639
		break;
2 7u83 640
	    }
6 7u83 641
	    case ENC_proc_test: {
642
		node *arg1 = sub3(exp);
643
		node *arg2 = sub4(exp);
2 7u83 644
		CHECK_proc_test
6 7u83 645
		break;
2 7u83 646
	    }
6 7u83 647
	    case ENC_profile: {
648
		node *uses = sub0(exp);
2 7u83 649
		CHECK_profile
6 7u83 650
		break;
2 7u83 651
	    }
6 7u83 652
	    case ENC_real_part: {
653
		node *arg1 = sub0(exp);
2 7u83 654
		CHECK_real_part
6 7u83 655
		break;
2 7u83 656
	    }
6 7u83 657
	    case ENC_rem0: {
658
		node *arg1 = sub2(exp);
659
		node *arg2 = sub3(exp);
2 7u83 660
		CHECK_rem0
6 7u83 661
		break;
2 7u83 662
	    }
6 7u83 663
	    case ENC_rem1: {
664
		node *arg1 = sub2(exp);
665
		node *arg2 = sub3(exp);
2 7u83 666
		CHECK_rem1
6 7u83 667
		break;
2 7u83 668
	    }
6 7u83 669
	    case ENC_rem2: {
670
		node *arg1 = sub2(exp);
671
		node *arg2 = sub3(exp);
2 7u83 672
		CHECK_rem2
6 7u83 673
		break;
2 7u83 674
	    }
6 7u83 675
	    case ENC_repeat: {
676
		node *start = sub1(exp);
677
		node *body = sub2(exp);
2 7u83 678
		CHECK_repeat
6 7u83 679
		break;
2 7u83 680
	    }
6 7u83 681
	    case ENC_return: {
682
		node *arg1 = sub0(exp);
2 7u83 683
		CHECK_return
6 7u83 684
		break;
2 7u83 685
	    }
6 7u83 686
	    case ENC_return_to_label: {
687
		node *lab_val = sub0(exp);
2 7u83 688
		CHECK_return_to_label
6 7u83 689
		break;
2 7u83 690
	    }
6 7u83 691
	    case ENC_round_with_mode: {
692
		node *r = sub2(exp);
693
		node *arg1 = sub3(exp);
2 7u83 694
		CHECK_round_with_mode
6 7u83 695
		break;
2 7u83 696
	    }
6 7u83 697
	    case ENC_rotate_left: {
698
		node *arg1 = sub0(exp);
699
		node *arg2 = sub1(exp);
2 7u83 700
		CHECK_rotate_left
6 7u83 701
		break;
2 7u83 702
	    }
6 7u83 703
	    case ENC_rotate_right: {
704
		node *arg1 = sub0(exp);
705
		node *arg2 = sub1(exp);
2 7u83 706
		CHECK_rotate_right
6 7u83 707
		break;
2 7u83 708
	    }
6 7u83 709
	    case ENC_sequence: {
710
		node *statements = sub0(exp);
711
		node *result = sub1(exp);
2 7u83 712
		CHECK_sequence
6 7u83 713
		break;
2 7u83 714
	    }
6 7u83 715
	    case ENC_set_stack_limit: {
716
		node *lim = sub0(exp);
2 7u83 717
		CHECK_set_stack_limit
6 7u83 718
		break;
2 7u83 719
	    }
6 7u83 720
	    case ENC_shape_offset: {
721
		node *s = sub0(exp);
2 7u83 722
		CHECK_shape_offset
6 7u83 723
		break;
2 7u83 724
	    }
6 7u83 725
	    case ENC_shift_left: {
726
		node *arg1 = sub1(exp);
727
		node *arg2 = sub2(exp);
2 7u83 728
		CHECK_shift_left
6 7u83 729
		break;
2 7u83 730
	    }
6 7u83 731
	    case ENC_shift_right: {
732
		node *arg1 = sub0(exp);
733
		node *arg2 = sub1(exp);
2 7u83 734
		CHECK_shift_right
6 7u83 735
		break;
2 7u83 736
	    }
6 7u83 737
	    case ENC_subtract_ptrs: {
738
		node *arg1 = sub0(exp);
739
		node *arg2 = sub1(exp);
2 7u83 740
		CHECK_subtract_ptrs
6 7u83 741
		break;
2 7u83 742
	    }
6 7u83 743
	    case ENC_tail_call: {
744
		node *p = sub1(exp);
2 7u83 745
		CHECK_tail_call
6 7u83 746
		break;
2 7u83 747
	    }
6 7u83 748
	    case ENC_untidy_return: {
749
		node *arg1 = sub0(exp);
2 7u83 750
		CHECK_untidy_return
6 7u83 751
		break;
2 7u83 752
	    }
6 7u83 753
	    case ENC_variable: {
754
		node *name_intro = sub1(exp);
755
		node *init = sub2(exp);
756
		node *body = sub3(exp);
2 7u83 757
		CHECK_variable
6 7u83 758
		break;
2 7u83 759
	    }
6 7u83 760
	    case ENC_xor: {
761
		node *arg1 = sub0(exp);
762
		node *arg2 = sub1(exp);
2 7u83 763
		CHECK_xor
6 7u83 764
		break;
2 7u83 765
	    }
766
	}
6 7u83 767
	exp->shape = expand_fully(exp->shape);
2 7u83 768
    }
6 7u83 769
    return;
2 7u83 770
}