From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,bf14abf90022db2,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-09-29 17:52:46 PST Path: archiver1.google.com!postnews1.google.com!not-for-mail From: Mike_Harrison80@yahoo.com (Mike Harrison) Newsgroups: comp.lang.ada Subject: Little function generates lots of object code. Date: 29 Sep 2001 17:52:46 -0700 Organization: http://groups.google.com/ Message-ID: <14df6e36.0109291652.73e61d20@posting.google.com> NNTP-Posting-Host: 142.73.16.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1001811166 2465 127.0.0.1 (30 Sep 2001 00:52:46 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: 30 Sep 2001 00:52:46 GMT Xref: archiver1.google.com comp.lang.ada:13524 Date: 2001-09-30T00:52:46+00:00 List-Id: Hello group, I am using AdaMulti 3.1 with a Sun target (optimized for size). The following little function seems to be generating a lot more object code than it deserves. Is this what other people would expect? Is there something that I could do to reduce this? .Mike. ---------------------------------------------------------- function "-" (Right : in Matrix) return Matrix is Result : Matrix (Right'range(1), Right'range(2)); begin for Row in Right'range(1) loop for Column in Right'range(2) loop Result(Row,Column) := -Right(Row,Column); end loop; end loop; return Result; end "-"; ---------------------------------------------------------- 0x5c230: .byte 00,00,00,01 function "-" (Right : in Matrix) return Matrix is Result : Matrix (Right'range(1), Right'range(2)); begin 0x5c234 M: 0x9de3bfa0 save %o6,-96,%o6 0x5c238 M+0x4: 0xe406a00c ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+12],%l2 0x5c23c M+0x8: 0xe206a000 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope],%l1 0x5c240 M+0xc: 0xe606a004 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+4],%l3 0x5c244 M+0x10: 0xe006a008 ld [%i2=_matrix_functions.extended_float_array.operations.M__7.right___dope+8],%l0 0x5c248 M+0x14: 0x9007bffc add %i6,-4,%o0 0x5c24c M+0x18: 0x40013692 call rts_ss_mark (0xa9c94) (0xa9c94) 0x5c250 M+0x1c: 0xb8100019 mov %i1,%i4=right 0x5c254 M+0x20: 0x80a4c011 cmp %l3,%l1 0x5c258 M+0x24: 0x06800004 bl M+0x34 (0x5c268) (0x5c268) 0x5c25c M+0x28: 0x90102000 mov 0,%o0 0x5c260 M+0x2c: 0x9a24c011 sub %l3,%l1,%o5 0x5c264 M+0x30: 0x90036001 add %o5,1,%o0 0x5c268 M+0x34: 0x80a48010 cmp %l2,%l0 0x5c26c M+0x38: 0x06800004 bl M+0x48 (0x5c27c) (0x5c27c) 0x5c270 M+0x3c: 0x92102000 mov 0,%o1 0x5c274 M+0x40: 0x98248010 sub %l2,%l0,%o4 0x5c278 M+0x44: 0x92032001 add %o4,1,%o1 0x5c27c M+0x48: 0x400188a4 call .mul (0xbe50c) (0xbe50c) 0x5c280 M+0x4c: 0x01000000 nop 0x5c284 M+0x50: 0x400136bc call rts_ss_allocate (0xa9d74) (0xa9d74) 0x5c288 M+0x54: 0x912a2003 sll %o0,3,%o0 for Row in Right'range(1) loop 0x5c28c M+0x58: 0xd606a000 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope],%o3 0x5c290 M+0x5c: 0xd406a004 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+4],%o2 0x5c294 M+0x60: 0x80a2c00a cmp %o3,%o2 0x5c298 M+0x64: 0x1480002e bg M+0x11c (0x5c350) (0x5c350) 0x5c29c M+0x68: 0xb2100008 mov %o0,%i1=result 0x5c2a0 M+0x6c: 0xc806a000 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope],%g4=row for Column in Right'range(2) loop 0x5c2a4 M+0x70: 0xd006a008 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+8],%o0 0x5c2a8 M+0x74: 0xd206a00c ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+12],%o1 0x5c2ac M+0x78: 0x80a20009 cmp %o0,%o1 0x5c2b0 M+0x7c: 0x34800023 bg,a M+0x108 (0x5c33c) (0x5c33c) 0x5c2b4 M+0x80: 0xda06a004 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+4],%o5 0x5c2b8 M+0x84: 0xac100008 mov %o0,%l6=column Result(Row,Column) := -Right(Row,Column); 0x5c2bc M+0x88: 0xf606a008 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+8],%i3 0x5c2c0 M+0x8c: 0x90248010 sub %l2,%l0,%o0 0x5c2c4 M+0x90: 0x92022001 add %o0,1,%o1 0x5c2c8 M+0x94: 0x40018891 call .mul (0xbe50c) (0xbe50c) 0x5c2cc M+0x98: 0x90210011 sub %g4=row,%l1,%o0 0x5c2d0 M+0x9c: 0xde06a000 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope],%o7 0x5c2d4 M+0xa0: 0xfa06a00c ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+12],%i5 0x5c2d8 M+0xa4: 0x92258010 sub %l6=column,%l0,%o1 0x5c2dc M+0xa8: 0x90024008 add %o1,%o0,%o0 0x5c2e0 M+0xac: 0xaf2a2003 sll %o0,3,%l7 0x5c2e4 M+0xb0: 0x9027401b sub %i5,%i3,%o0 0x5c2e8 M+0xb4: 0x92022001 add %o0,1,%o1 0x5c2ec M+0xb8: 0x9021000f sub %g4=row,%o7,%o0 0x5c2f0 M+0xbc: 0x40018887 call .mul (0xbe50c) (0xbe50c) 0x5c2f4 M+0xc0: 0x01000000 nop 0x5c2f8 M+0xc4: 0x9225801b sub %l6=column,%i3,%o1 0x5c2fc M+0xc8: 0x90024008 add %o1,%o0,%o0 0x5c300 M+0xcc: 0x912a2003 sll %o0,3,%o0 0x5c304 M+0xd0: 0xc102001c ld [%o0+%i4=right],%f0 0x5c308 M+0xd4: 0x8602001c add %o0,%i4=right,%g3 0x5c30c M+0xd8: 0x81a000a0 fnegs %f0,%f0 0x5c310 M+0xdc: 0xc300e004 ld [%g3+4],%f1 0x5c314 M+0xe0: 0xc125c019 st %f0,[%l7+%i1=result] 0x5c318 M+0xe4: 0xa805c019 add %l7,%i1=result,%l4 0x5c31c M+0xe8: 0xc3252004 st %f1,[%l4+4] end loop; 0x5c320 M+0xec: 0xd006a00c ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+12],%o0 0x5c324 M+0xf0: 0x80a58008 cmp %l6=column,%o0 0x5c328 M+0xf4: 0x22800005 be,a M+0x108 (0x5c33c) (0x5c33c) 0x5c32c M+0xf8: 0xda06a004 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+4],%o5 0x5c330 M+0xfc: 0x10bfffe3 ba M+0x88 (0x5c2bc) (0x5c2bc) 0x5c334 M+0x100: 0xac05a001 add %l6=column,1,%l6=column end loop; 0x5c338 M+0x104: 0xda06a004 ld [%i2=matrix_functions.extended_float_array.operations.M__7.right___dope+4],%o5 0x5c33c M+0x108: 0x80a1000d cmp %g4=row,%o5 0x5c340 M+0x10c: 0x22800005 be,a M+0x120 (0x5c354) (0x5c354) 0x5c344 M+0x110: 0x90102000 mov 0,%o0 0x5c348 M+0x114: 0x10bfffd7 ba M+0x70 (0x5c2a4) (0x5c2a4) 0x5c34c M+0x118: 0x88012001 add %g4=row,1,%g4=row return Result; 0x5c350 M+0x11c: 0x90102000 mov 0,%o0 0x5c354 M+0x120: 0xe6262004 st %l3,[%i0=implicit_dope_for_result+4] 0x5c358 M+0x124: 0xe0262008 st %l0,[%i0=implicit_dope_for_result+8] 0x5c35c M+0x128: 0xe426200c st %l2,[%i0=implicit_dope_for_result+12] 0x5c360 M+0x12c: 0x80a4c011 cmp %l3,%l1 0x5c364 M+0x130: 0x06800004 bl M+0x140 (0x5c374) (0x5c374) 0x5c368 M+0x134: 0xe2262000 st %l1,[%i0=implicit_dope_for_result] 0x5c36c M+0x138: 0x9824c011 sub %l3,%l1,%o4 0x5c370 M+0x13c: 0x90032001 add %o4,1,%o0 0x5c374 M+0x140: 0x80a48010 cmp %l2,%l0 0x5c378 M+0x144: 0x06800004 bl M+0x154 (0x5c388) (0x5c388) 0x5c37c M+0x148: 0x92102000 mov 0,%o1 0x5c380 M+0x14c: 0x96248010 sub %l2,%l0,%o3 0x5c384 M+0x150: 0x9202e001 add %o3,1,%o1 0x5c388 M+0x154: 0x40018861 call .mul (0xbe50c) (0xbe50c) 0x5c38c M+0x158: 0x01000000 nop 0x5c390 M+0x15c: 0x952a2003 sll %o0,3,%o2 0x5c394 M+0x160: 0x9207bffc add %i6,-4,%o1 0x5c398 M+0x164: 0x400136f1 call rts_ss_copy_and_release (0xa9f5c) (0xa9f5c) 0x5c39c M+0x168: 0x90100019 mov %i1=result,%o0 0x5c3a0 M+0x16c: 0xb0100008 mov %o0,%i0=implicit_dope_for_result 0x5c3a4 M+0x170: 0x81c7e008 ret 0x5c3a8 M+0x174: 0x91ea0000 restore %o0,%g0,%o0 end "-";