This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[UTIL] Perl system does not default to $_
[metaconfig.git] / dist / U / registers.U
1 ?RCS: $Id: registers.U 1 2006-08-24 12:32:52Z rmanfredi $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
4 ?RCS: 
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 4.0.
10 ?RCS:
11 ?RCS: $Log: registers.U,v $
12 ?RCS: Revision 3.0.1.2  1997/02/28  16:19:41  ram
13 ?RCS: patch61: removed empty ?LINT lines
14 ?RCS:
15 ?RCS: Revision 3.0.1.1  1994/10/29  16:28:33  ram
16 ?RCS: patch36: call ./Cppsym explicitly instead of relying on PATH
17 ?RCS:
18 ?RCS: Revision 3.0  1993/08/18  12:09:41  ram
19 ?RCS: Baseline for dist 3.0 netwide release.
20 ?RCS:
21 ?MAKE:registers reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 \
22         reg12 reg13 reg14 reg15 reg16: awk rm Cppsym Myread Oldconfig
23 ?MAKE:  -pick add $@ %<
24 ?S:registers:
25 ?S:     This variable contains the number of register declarations paid
26 ?S:     attention to by the C compiler.
27 ?S:.
28 ?S:reg1:
29 ?S:     This variable, along with reg2, reg3, etc. contains the eventual
30 ?S:     value for the symbols register1, register2, register3, etc.  It has
31 ?S:     either the value "register" or is null.
32 ?S:.
33 ?C:register1:
34 ?C:     This symbol, along with register2, register3, etc. is either the word
35 ?C:     "register" or null, depending on whether the C compiler pays attention
36 ?C:     to this many register declarations.  The intent is that you don't have
37 ?C:     to order your register declarations in the order of importance, so you
38 ?C:     can freely declare register variables in sub-blocks of code and as
39 ?C:     function parameters.  Do not use register<n> more than once per routine.
40 ?C:.
41 ?LINT:describe reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11
42 ?LINT:describe reg12 reg13 reg14 reg15 reg16
43 ?LINT:known register2 register3 register4 register5 register6 register7
44 ?LINT:known register8 register9 register10 register11 register12 register13
45 ?LINT:known register14 register15 register16
46 ?H:#define register1 $reg1              /**/
47 ?H:#define register2 $reg2              /**/
48 ?H:#define register3 $reg3              /**/
49 ?H:#define register4 $reg4              /**/
50 ?H:#define register5 $reg5              /**/
51 ?H:#define register6 $reg6              /**/
52 ?H:#define register7 $reg7              /**/
53 ?H:#define register8 $reg8              /**/
54 ?H:#define register9 $reg9              /**/
55 ?H:#define register10 $reg10    /**/
56 ?H:#define register11 $reg11    /**/
57 ?H:#define register12 $reg12    /**/
58 ?H:#define register13 $reg13    /**/
59 ?H:#define register14 $reg14    /**/
60 ?H:#define register15 $reg15    /**/
61 ?H:#define register16 $reg16    /**/
62 ?H:.
63 ?F:!.foo
64 : see how many register declarations we want to use
65 case "$registers" in
66 '')
67         if ./Cppsym vax; then
68                 dflt=6
69         elif ./Cppsym sun mc68000 mips; then
70                 dflt=10
71         elif ./Cppsym pyr; then
72                 dflt=14
73         elif ./Cppsym ns32000 ns16000; then
74                 dflt=5
75         elif ./Cppsym $smallmach; then
76                 dflt=3
77         else
78                 : if you have any other numbers for me, please send them in
79                 dflt=6
80         fi;;
81 *) dflt=$registers ;;
82 esac
83 ?LINT:set reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11
84 ?LINT:set reg12 reg13 reg14 reg15 reg16
85 cat <<EOM
86  
87 Different C compilers on different machines pay attention to different numbers
88 of register declarations.  About how many register declarations in each routine
89 does your C compiler pay attention to?  (OK to guess)
90
91 EOM
92 rp="Maximum register declarations?"
93 . ./myread
94 registers=$ans
95 reg1=''
96 $awk "BEGIN { for (i=1; i<=16; i++) printf \"reg%d=''\n\", i}" \
97         </dev/null >.foo
98 . ./.foo
99 $awk "BEGIN { for (i=1; i<=$registers; i++) printf \"reg%d=register\n\", i}" \
100         </dev/null >.foo
101 . ./.foo
102 $rm -f .foo
103