[PATCH] Update {skylake, icelake, alderlake}_cost to add a bit preference to vector store.

2022-05-31 Thread Cui,Lili via Gcc-patches
This patch is to update {skylake,icelake,alderlake}_cost to add a bit preference to vector store. Since the interger vector construction cost has changed, we need to adjust the load and store costs for intel processers. With the patch applied 538.imagic_r:gets ~6% improvement on ADL for

[PATCH v4 33/34] RISC-V: Add vssex.C

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/vssex.C: New test. --- gcc/testsuite/g++.target/riscv/rvv/vssex.C | 1704 1 file changed, 1704 insertions(+) create mode 100644 gcc/testsuite/g++.target/riscv/rvv/vssex.C diff --git

[PATCH v4 30/34] RISC-V: Add vluxeix_4.C

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/vluxeix_4.C: New test. --- .../g++.target/riscv/rvv/vluxeix_4.C | 2503 + 1 file changed, 2503 insertions(+) create mode 100644 gcc/testsuite/g++.target/riscv/rvv/vluxeix_4.C diff --git

[PATCH v4 31/34] RISC-V: Add vsex.C

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/vsex.C: New test. --- gcc/testsuite/g++.target/riscv/rvv/vsex.C | 1704 + 1 file changed, 1704 insertions(+) create mode 100644 gcc/testsuite/g++.target/riscv/rvv/vsex.C diff --git

[PATCH v4 25/34] RISC-V: Add vloxeix_4.C

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/vloxeix_4.C: New test. --- .../g++.target/riscv/rvv/vloxeix_4.C | 2503 + 1 file changed, 2503 insertions(+) create mode 100644 gcc/testsuite/g++.target/riscv/rvv/vloxeix_4.C diff --git

[PATCH v4 17/34] RISC-V: Add vsex.c

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/intrinsic/vsex.c: New test. --- .../gcc.target/riscv/rvv/intrinsic/vsex.c | 4776 + 1 file changed, 4776 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/intrinsic/vsex.c diff

[PATCH v4 12/34] RISC-V: Add vlsex_2.c

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/intrinsic/vlsex_2.c: New test. --- .../gcc.target/riscv/rvv/intrinsic/vlsex_2.c | 1251 + 1 file changed, 1251 insertions(+) create mode 100644

[PATCH v4 06/34] RISC-V: Add vlexff_2.c

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/intrinsic/vlexff_2.c: New test. --- .../gcc.target/riscv/rvv/intrinsic/vlexff_2.c | 1251 + 1 file changed, 1251 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/intrinsic/vlexff_2.c

[PATCH v4 04/34] RISC-V: Add mask load store testcases

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/intrinsic/mask_load_store.c: New test. * gcc.target/riscv/rvv/intrinsic/mask_load_store_31.c: New test. * gcc.target/riscv/rvv/intrinsic/mask_load_store_32.c: New test. ---

[PATCH v4 02/34] RISC-V: Add vlex_2.c

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/intrinsic/vlex_2.c: New test. --- .../gcc.target/riscv/rvv/intrinsic/vlex_2.c | 1251 + 1 file changed, 1251 insertions(+) create mode 100644

[PATCH 00/34] RISC-V: Add RVV (RISC-V 'V' Extension) support

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe This patche add the testcases that are missed in v1. *** BLURB HERE *** zhongjuzhe (34): RISC-V: Add vlex_1.c RISC-V: Add vlex_2.c RISC-V: Add vlex_1.C RISC-V: Add mask load store testcases RISC-V: Add vlexff_1.c RISC-V: Add vlexff_2.c RISC-V: Add vloxeix_1.c

[PATCH v3] RISC-V: Add load and store intrinsics support for RVV support

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe This patch is supplemental patch for [PATCH 14/21] which is missed in v1. gcc/ChangeLog: * config/riscv/constraints.md (vi): New constraint. (vj): New constraint. (vk): New constraint. (vc): New constraint. (Wn5): New constraint.

Re: [PATCH v2, rs6000] Fix ICE on expand bcd__ [PR100736]

2022-05-31 Thread Segher Boessenkool
Hi! On Mon, May 30, 2022 at 06:12:26PM +0800, Kewen.Lin wrote: > on 2022/5/26 15:35, HAO CHEN GUI wrote: > > This patch fixes the ICE reported in PR100736. It removes the condition > > check of finite math only flag not setting in "*_cc" pattern. > > With or without this flag, we still can use

Re: [PATCH] Add a bit dislike for separate mem alternative when op is REG_P.

2022-05-31 Thread Hongtao Liu via Gcc-patches
On Wed, Jun 1, 2022 at 12:40 AM Richard Sandiford wrote: > > Vladimir Makarov via Gcc-patches writes: > > On 2022-05-29 23:05, Hongtao Liu wrote: > >> On Fri, May 27, 2022 at 5:12 AM Vladimir Makarov via Gcc-patches > >> wrote: > >>> > >>> On 2022-05-24 23:39, liuhongt wrote: > Rigt now,

Re: [PATCH] libgo: Recognize off64_t / loff_t type definition of musl libc

2022-05-31 Thread Sören Tempel via Gcc-patches
PING. If there is anything else that needs to be addressed please let me know. Sören Tempel wrote: > I modified your patch to also define libgo_off_t_type (along to > libgo_loff_t_type) and used that to define Offset_t in mksysinfo.sh. > Furthermore, I fixed the include for the loff_t feature

[pushed] build: TAGS and .cc transition

2022-05-31 Thread Jason Merrill via Gcc-patches
A few globs missed in the .c -> .cc transition. Some targets were looking at both *.c and *.cc, but there are no longer any .c files to scan. Applying as obvious. gcc/ChangeLog: * Makefile.in (TAGS): Look at libcpp/*.cc. gcc/c/ChangeLog: * Make-lang.in (c.tags): Look at *.cc.

Re: [PATCH] c++: use auto_timevar instead of timevar_push/pop

2022-05-31 Thread Jason Merrill via Gcc-patches
On 5/31/22 13:47, Patrick Palka wrote: On Tue, 31 May 2022, Patrick Palka wrote: r12-5487-g9bf69a8558638c replaced uses of timevar_cond_push/pop with auto_cond_timevar and removed now unnecessary wrapper functions. This patch does the same for timevar_push/pop and auto_timevar. Bootstrapped

Re: [PATCH] c++: constexpr init of union sub-aggr w/ base [PR105491]

2022-05-31 Thread Jason Merrill via Gcc-patches
On 5/31/22 12:41, Patrick Palka wrote: On Wed, 18 May 2022, Jason Merrill wrote: On 5/17/22 12:34, Patrick Palka wrote: On Sat, May 7, 2022 at 5:18 PM Jason Merrill wrote: On 5/6/22 16:46, Patrick Palka wrote: On Fri, 6 May 2022, Jason Merrill wrote: On 5/6/22 16:10, Patrick Palka

Re: [PATCH] c++: squash cp_build_qualified_type/_real

2022-05-31 Thread Jason Merrill via Gcc-patches
On 5/31/22 13:13, Patrick Palka wrote: This replaces the two differently named versions of the same function with a single function using a default function argument. Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for trunk? OK. gcc/cp/ChangeLog: * cp-tree.h

Re: [PATCH] c++: non-dep call with empty TYPE_BINFO [PR105758]

2022-05-31 Thread Jason Merrill via Gcc-patches
On 5/31/22 12:28, Patrick Palka wrote: Here the out-of-line definition of Z::z causes duplicate_decls to change z's type to use the implicit instantiation Z rather than the corresponding primary template type (which is also the type of the injected class name), and the former, being a dependent

Re: [PATCH] c++: don't substitute TEMPLATE_PARM_CONSTRAINT [PR100374]

2022-05-31 Thread Jason Merrill via Gcc-patches
On 5/31/22 08:56, Patrick Palka wrote: On Sun, 29 May 2022, Jason Merrill wrote: On 5/29/22 22:10, Jason Merrill wrote: On 5/27/22 14:05, Patrick Palka wrote: This makes us avoid substituting into the TEMPLATE_PARM_CONSTRAINT of each template parameter except as necessary for (friend)

Re: [PATCH] c++: use auto_timevar instead of timevar_push/pop

2022-05-31 Thread Patrick Palka via Gcc-patches
On Tue, 31 May 2022, Patrick Palka wrote: > r12-5487-g9bf69a8558638c replaced uses of timevar_cond_push/pop with > auto_cond_timevar and removed now unnecessary wrapper functions. This > patch does the same for timevar_push/pop and auto_timevar. > > Bootstrapped and regtested on

[PATCH] c++: use auto_timevar instead of timevar_push/pop

2022-05-31 Thread Patrick Palka via Gcc-patches
r12-5487-g9bf69a8558638c replaced uses of timevar_cond_push/pop with auto_cond_timevar and removed now unnecessary wrapper functions. This patch does the same for timevar_push/pop and auto_timevar. Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for trunk? gcc/cp/ChangeLog:

[PATCH] c++: squash cp_build_qualified_type/_real

2022-05-31 Thread Patrick Palka via Gcc-patches
This replaces the two differently named versions of the same function with a single function using a default function argument. Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for trunk? gcc/cp/ChangeLog: * cp-tree.h (cp_build_qualified_type_real): Rename to ...

Re: [PATCH v4] DSE: Use the constant store source if possible

2022-05-31 Thread H.J. Lu via Gcc-patches
On Mon, May 30, 2022 at 09:35:43AM +0100, Richard Sandiford wrote: > "H.J. Lu" writes: > > --- > > RTL DSE tracks redundant constant stores within a basic block. When RTL > > loop invariant motion hoists a constant initialization out of the loop > > into a separate basic block, the constant

RE: [ping][vect-patterns] Refactor widen_plus/widen_minus as internal_fns

2022-05-31 Thread Tamar Christina via Gcc-patches
> Just checking there is still interest in this Definitely, I am waiting for this to be able to send a new patch upstream  Cheers, Tamar. > -Original Message- > From: Gcc-patches bounces+tamar.christina=arm@gcc.gnu.org> On Behalf Of Joel Hutton > via Gcc-patches > Sent: Tuesday,

Re: [PATCH] c++: constexpr init of union sub-aggr w/ base [PR105491]

2022-05-31 Thread Patrick Palka via Gcc-patches
On Wed, 18 May 2022, Jason Merrill wrote: > On 5/17/22 12:34, Patrick Palka wrote: > > On Sat, May 7, 2022 at 5:18 PM Jason Merrill wrote: > > > > > > On 5/6/22 16:46, Patrick Palka wrote: > > > > On Fri, 6 May 2022, Jason Merrill wrote: > > > > > > > > > On 5/6/22 16:10, Patrick Palka wrote:

Re: [PATCH 2/5] Implement generic range temporaries.

2022-05-31 Thread Andrew MacLeod via Gcc-patches
On 5/31/22 02:21, Aldy Hernandez wrote: On Mon, May 30, 2022 at 4:56 PM Andrew MacLeod wrote: On 5/30/22 09:27, Aldy Hernandez wrote: Now that we have generic ranges, we need a way to define generic local temporaries on the stack for intermediate calculations in the ranger and elsewhere. We

Re: [PATCH] Add a bit dislike for separate mem alternative when op is REG_P.

2022-05-31 Thread Richard Sandiford via Gcc-patches
Vladimir Makarov via Gcc-patches writes: > On 2022-05-29 23:05, Hongtao Liu wrote: >> On Fri, May 27, 2022 at 5:12 AM Vladimir Makarov via Gcc-patches >> wrote: >>> >>> On 2022-05-24 23:39, liuhongt wrote: Rigt now, mem_cost for separate mem alternative is 1 * frequency which is pretty

[GCC-12][committed] d: Fix D lexer sometimes fails to compile code read from stdin

2022-05-31 Thread Iain Buclaw via Gcc-patches
Hi, As of gdc-12, the lexer expects there 4 bytes of zero padding at the end of the source buffer to mark the end of input. Sometimes when reading from stdin, the data at the end of input is garbage rather than zeroes. Fix that by explicitly calling memset past the end of the buffer.

Re: [PATCH] Add a bit dislike for separate mem alternative when op is REG_P.

2022-05-31 Thread Vladimir Makarov via Gcc-patches
On 2022-05-29 23:05, Hongtao Liu wrote: On Fri, May 27, 2022 at 5:12 AM Vladimir Makarov via Gcc-patches wrote: On 2022-05-24 23:39, liuhongt wrote: Rigt now, mem_cost for separate mem alternative is 1 * frequency which is pretty small and caused the unnecessary SSE spill in the PR, I've

[PATCH] c++: non-dep call with empty TYPE_BINFO [PR105758]

2022-05-31 Thread Patrick Palka via Gcc-patches
Here the out-of-line definition of Z::z causes duplicate_decls to change z's type to use the implicit instantiation Z rather than the corresponding primary template type (which is also the type of the injected class name), and the former, being a dependent specialization, lacks a TYPE_BINFO

[PATCH] aarch64: Fix build with gcc-4.8

2022-05-31 Thread Christophe Lyon via Gcc-patches
My r13-680-g0dc8e1e7026d9b commit to add support for Decimal Floating Point introduced: case SDmode: case DDmode: case TDmode: which are rejected by gcc-4.8 as build compiler. This patch replaces them with E_SDmode, E_DDmode and E_TD_mode. Committed as obvious. *

Correct spelling of DW_AT_namelist_item

2022-05-31 Thread Alan Modra via Gcc-patches
This typo was fixed a little while ago in binutils-gdb with commit e951225303. I noticed the difference today when importing libiberty from gcc. Committed as obvious. include/ * dwarf2.def: Correct spelling of DW_AT_namelist_item. gcc/ * dwarf2out.cc (gen_namelist_decl): Adjust

Re: [PATCH] [PR105665] ivopts: check defs of names in base for undefs

2022-05-31 Thread Alexandre Oliva via Gcc-patches
On May 30, 2022, Richard Biener wrote: > I don't think you can rely on TREE_VISITED not set at the start of the > pass (and you don't clear it either). I don't clear it, but I loop over all SSA names and set TREE_VISITED to either true or false, so that's covered. I even had a test patch that

Re: [PATCH] c++: don't substitute TEMPLATE_PARM_CONSTRAINT [PR100374]

2022-05-31 Thread Patrick Palka via Gcc-patches
On Sun, 29 May 2022, Jason Merrill wrote: > On 5/29/22 22:10, Jason Merrill wrote: > > On 5/27/22 14:05, Patrick Palka wrote: > > > This makes us avoid substituting into the TEMPLATE_PARM_CONSTRAINT of > > > each template parameter except as necessary for (friend) declaration > > > matching, like

Re: [2/2] PR96463 -- changes to type checking vec_perm_expr in middle end

2022-05-31 Thread Prathamesh Kulkarni via Gcc-patches
On Mon, 23 May 2022 at 22:57, Prathamesh Kulkarni wrote: > > On Mon, 9 May 2022 at 21:21, Prathamesh Kulkarni > wrote: > > > > On Mon, 9 May 2022 at 19:22, Richard Sandiford > > wrote: > > > > > > Prathamesh Kulkarni writes: > > > > On Tue, 3 May 2022 at 18:25, Richard Sandiford > > > >

Re: [1/2] PR96463 - aarch64 specific changes

2022-05-31 Thread Prathamesh Kulkarni via Gcc-patches
On Thu, 12 May 2022 at 16:15, Richard Sandiford wrote: > > Prathamesh Kulkarni writes: > > On Wed, 11 May 2022 at 12:44, Richard Sandiford > > wrote: > >> > >> Prathamesh Kulkarni writes: > >> > On Fri, 6 May 2022 at 16:00, Richard Sandiford > >> > wrote: > >> >> > >> >> Prathamesh Kulkarni

[PATCH v2 0/1] RISC-V: Add RVV (RISC-V 'V' Extension) support

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe This patch adds implementation which missed in the V1 patch. *** BLURB HERE *** zhongjuzhe (1): Add unit-stride load store intrinsics .../riscv/riscv-vector-builtins-functions.cc | 80 +++ .../riscv/riscv-vector-builtins-functions.def | 7 ++

[PATCH v2 1/1] Add unit-stride load store intrinsics

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-vector-builtins-functions.cc (loadstore::assemble_name): New function. (loadstore::get_argument_types): New function. (vle::call_properties): New function. (vle::get_return_type): New function.

RE: [ping][vect-patterns] Refactor widen_plus/widen_minus as internal_fns

2022-05-31 Thread Joel Hutton via Gcc-patches
> Can you post an updated patch (after the .cc renaming, and code_helper > now already moved to tree.h). > > Thanks, > Richard. Patches attached. They already incorporated the .cc rename, now rebased to be after the change to tree.h Joel 0001-Refactor-to-allow-internal_fn-s.patch

Re: [PATCH, OpenMP, v2] Implement uses_allocators clause for target regions

2022-05-31 Thread Jakub Jelinek via Gcc-patches
On Mon, May 30, 2022 at 07:23:55PM +0200, Jakub Jelinek via Gcc-patches wrote: > On Mon, May 30, 2022 at 10:43:30PM +0800, Chung-Lin Tang wrote: > > > This feels like you only accept a single allocator in the new syntax, > > > but that isn't my reading of the spec, I'd understand it as: > > >

[committed] openmp: Add support for firstprivate and allocate clauses on scope construct

2022-05-31 Thread Jakub Jelinek via Gcc-patches
Hi! OpenMP 5.2 adds support for firstprivate and allocate clauses on the scope construct and this patch adds that support to GCC. 5.2 unfortunately (IMNSHO mistakenly) marked scope construct as worksharing, which implies that it isn't possible to nest inside of it other scope, worksharing loop,

Re: [PATCH] unswitch: Fold case label lo/hi values to index type [PR105770]

2022-05-31 Thread Richard Biener via Gcc-patches
> Am 31.05.2022 um 11:33 schrieb Jakub Jelinek via Gcc-patches > : > > Hi! > > The following testcase ICEs because we use different types in comparison, > idx has int type, while CASE_LOW has char type. > > While I believe all CASE_{LOW,HIGH} in the same switch have to use the same > or

[PATCH] unswitch: Fold case label lo/hi values to index type [PR105770]

2022-05-31 Thread Jakub Jelinek via Gcc-patches
Hi! The following testcase ICEs because we use different types in comparison, idx has int type, while CASE_LOW has char type. While I believe all CASE_{LOW,HIGH} in the same switch have to use the same or compatible type, the index expression can have a promoted type as happens in this testcase.

[PATCH 13/21] Adjust scalable frame and full testcases

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-vector.cc (rvv_adjust_frame): Adjust frame manipulation for RVV scalable vector. * config/riscv/riscv-vector.h (rvv_adjust_frame): Adjust frame manipulation for RVV scalable vector. * config/riscv/riscv.cc

[PATCH 12/21] Add set get intrinsic support

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-vector-builtins-functions.cc (vset::assemble_name): New function. (vset::get_argument_types): New function. (vset::expand): New function. (vget::assemble_name): New function.

[PATCH 11/21] Add calling function support

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv.cc (struct riscv_arg_info): Add calling convention support. (riscv_get_arg_info): Add calling convention support. (riscv_function_arg_advance): Add calling convention support. (riscv_pass_by_reference): Add

[PATCH 07/21] Add register spilling support

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-protos.h (rvv_expand_const_vector): New function. (rvv_expand_const_mask): New function. (rvv_const_vec_all_same_in_range_p): New function. * config/riscv/riscv-vector.cc (classify_vtype_field): Move codes

[PATCH 08/21] Add poly manipulation

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-protos.h (riscv_add_offset): Change riscv_add_offset as global function. * config/riscv/riscv-vector.cc (rvv_report_required): New function. (expand_quotient): New function. (rvv_expand_poly_move): New

[PATCH 06/21] Add insert-vsetvl pass

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config.gcc: Add riscv-insert-vsetvl.o extra_objs for RVV support. * config/riscv/constraints.md (Ws5): New constraint. * config/riscv/predicates.md (p_reg_or_const_csr_operand): New predicate. (vector_reg_or_const0_operand): New

[PATCH 05/21] Add RVV configuration intrinsic

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-protos.h (riscv_register_pragmas): New function. (riscv_classify_vlmul_field): New enum. (rvv_classify_vlmul_field): New enum. (rvv_parse_vsew_field): New enum. (rvv_parse_vlmul_field): New enum.

[PATCH 04/21] Add RVV intrinsic enable #pragma riscv intrinsic "vector" and introduce RVV header "riscv_vector.h"

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config.gcc: New header. * config/riscv/riscv-c.cc (riscv_pragma_intrinsic): New function. (riscv_check_builtin_call): New function. (riscv_register_pragmas): New function. * config/riscv/riscv-protos.h

[PATCH 03/21] Add RVV datatypes

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config/riscv/riscv-vector-builtins.cc (make_type_sizeless): New function. (sizeless_type_p): New function. (vector_builtin_mode): New function. (vector_legal_vlmul): New function. (add_vector_type_attribute): New

[PATCH 02/21] Add RVV intrinsic framework

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config.gcc: Add riscv-vector-builtins-functions.o and riscv-vector-builtins.o extra_objs for RVV support. * config/riscv/riscv-builtins.cc (riscv_init_builtins): Add RVV support. (riscv_builtin_decl): Add RVV support.

[PATCH 01/21] Add RVV modes and support scalable vector

2022-05-31 Thread juzhe . zhong
From: zhongjuzhe gcc/ChangeLog: * config.gcc: Add riscv-vector.o extra_objs for RVV support. * config/riscv/constraints.md: New constraints. * config/riscv/predicates.md: New predicates. * config/riscv/riscv-modes.def: New machine mode. *

Re: [PATCH 2/5] Implement generic range temporaries.

2022-05-31 Thread Aldy Hernandez via Gcc-patches
On Mon, May 30, 2022 at 4:56 PM Andrew MacLeod wrote: > > On 5/30/22 09:27, Aldy Hernandez wrote: > > Now that we have generic ranges, we need a way to define generic local > > temporaries on the stack for intermediate calculations in the ranger > > and elsewhere. We need temporaries analogous