#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %constrecord(*)%name null == (0)
const struct I *NULL = 0;
// 2 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 3 %recordformat fm1(%integer i)
struct FM1 {
union {
struct {
int I;
};
};
};
// 4 %recordformat fm2(%real i)
struct FM2 {
union {
struct {
float I;
};
};
};
// 5 %record (fm1) r1
struct FM1 R1;
// 6 %record (fm2) r2
struct FM2 R2;
// 7 %record (fm1) %name rp1
struct FM1 *RP1;
// 8 %record (fm2) %name rp2
struct FM2 *RP2;
// 9 rp1 == r1
RP1 = (struct FM1 *)/*?*/ &R1;
// 10 rp2 == r2
RP2 = (struct FM2 *)/*?*/ &R2;
// 11 %stop %if rp1 == null
if (_imp_ADDR((void *)(RP1)) != _imp_ADDR((void *)(NULL))) goto L_0001;
_imp_stop(0);
L_0001:;
// 12 %stop %if rp2 == null
if (_imp_ADDR((void *)(RP2)) != _imp_ADDR((void *)(NULL))) goto L_0002;
_imp_stop(0);
L_0002:;
// 13 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}