Nios2 arch=r1/r2

2016-03-09 Thread BELBACHIR Selim
Hi, I'm looking at gcc-nios2 options -march. It seems two instruction sets can be selected (r1/r2) but I cannot find out where theses instructions set are described. On the other end I found this document https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/nios2/n2cpu_n

LTO + conditional jump + delay slot

2014-04-30 Thread BELBACHIR Selim
Hi, I encountered a problem on test 'gcc.c-torture/execute/loop-7.c' (gcc4.7.3) on my private port during test case "-O2 -flto -fuse-linker-plugin -fno-fat-lto-objects" Here is the tested code : void foo (unsigned int n) { int i, j = -1; for (i = 0; i < 10 && j < 0; i++) { if ((

Gimplilfy ICE in gnat.dg/array18.adb

2014-06-05 Thread BELBACHIR Selim
Hi, On my private port, I'm unable to debug an ICE on GCC4.7.3 (GNAT 7.1.2) during the internal test testsuite/gnat.dg/array18.adb. Here is the test source code: - with Array18_Pkg; use Array18_Pkg; procedure Array18 is A : String (1 .. 1); begin A := F; end; -

RE: Gimplilfy ICE in gnat.dg/array18.adb

2014-06-06 Thread BELBACHIR Selim
context RM size RM min RM max chain > chain > context chain > There are also differenced in the gnu_result_type I cannot explain ... -Message d'origine- De : Eric Botcazou [mailto:ebotca...@adacore.com] Envoyé : vendredi 6 juin 2014 00:00 À : BEL

RE: Gimplilfy ICE in gnat.dg/array18.adb

2014-06-06 Thread BELBACHIR Selim
(TREE_CODE (TREE_TYPE (gnu_target)) == RECORD_TYPE && TREE_CODE (TYPE_SIZE (TREE_TYPE (gnu_target))) == INTEGER_CST) -Message d'origine- De : gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] De la part de Eric Botcazou Envoyé : vendredi 6 juin 2014 10:20 À : BELBACHIR

RE: gnat.dg test: div_no_warning.adb

2014-06-06 Thread BELBACHIR Selim
Hi, I've noticed that Constraint_error warning produced by gcc/testsuite/gnat.dg/div_no_warning.adb disappears if the target runtime contains : "Configurable_Run_Time : constant Boolean := False;" * x86 native gnat contains Configurable_Run_Time := False ==> no warning * Cross gnat port w

implicit gnat_malloc seen as vararg function

2014-06-10 Thread BELBACHIR Selim
Hi, I'm working on a private port of GCC 4.7.3/GNAT 7.1.2. Calls to ADA 'new' operator generates implicit gnat_malloc(size) calls (which has to be provided by user program or runtime). In my macro INIT_CUMULATIVE_ARGS I noticed that gnat_malloc(size) calls are seen as vararg function because t

RE: implicit gnat_malloc seen as vararg function

2014-06-11 Thread BELBACHIR Selim
Hi, I have more info concerning my gnat_malloc problem. I watched the code in gcc/ada/gcc-interface/trans.c and found the location where malloc_decl tree is built. In gigi ()function (trans.c:411), the ftype for malloc_decl is done this way : ftype = build_function_type_list (ptr_void_type_no

g++.dg/lto/lto.exp bug

2014-07-10 Thread BELBACHIR Selim
Hi, In gcc 4.7.3 I found a bug in the testsuite script g++.dg/lto/lto.exp when a target does not support LTO (ENABLE_LTO not defined) The following lines : if { ![check_effective_target_lto] } { return } Should be called before : g++_init lto_init n

bug in lra-constraints.c (simple_move_p register_move_cost)

2014-12-16 Thread BELBACHIR Selim
Hi, I may have found a bug when I was trying to port my private backend to new LRA pass (using gcc 4.9.2+patches). In lra-constraints.c, in function simple_move_p, the target hook targetm.register_move_cost is called with two badly swapped parameters : targetm.register_move_cost (GET_M

try_merge_delay_insn with delay list > 1

2015-03-10 Thread BELBACHIR Selim
Hi, I'm still working on a private backend on gcc 4.9.2. My processor provides instructions with 2 delay slots. I'm well aware that this feature is very uncommon and not fully tested. Nevertheless I submit the problem and the solution I've found. The bug is located in the function try_merge_de

RE: try_merge_delay_insn with delay list > 1

2015-03-10 Thread BELBACHIR Selim
Me again :) I enhanced my patch because it was not generalized for instructions with N delay_slots. Selim try_merge_patch2 Description: try_merge_patch2

RE: try_merge_delay_insn with delay list > 1

2015-04-20 Thread BELBACHIR Selim
t.com] Envoyé : vendredi 17 avril 2015 18:41 À : BELBACHIR Selim; gcc@gcc.gnu.org Objet : Re: try_merge_delay_insn with delay list > 1 On 03/10/2015 07:40 AM, BELBACHIR Selim wrote: > Me again :) > > I enhanced my patch because it was not generalized for instructions with N > delay

RE: try_merge_delay_insn with delay list > 1

2015-04-21 Thread BELBACHIR Selim
Great, I'll read more closely formatting rules next time I'll submit something. Regards, Selim -Message d'origine- De : Jeff Law [mailto:l...@redhat.com] Envoyé : lundi 20 avril 2015 19:47 À : BELBACHIR Selim; gcc@gcc.gnu.org Objet : Re: try_merge_delay_insn with delay

postreload problem using reload_inm and SECONDARY_RELOAD macros

2011-09-14 Thread BELBACHIR Selim
Hi, I'm writing a backend for gcc3.4.6 and I'm a bit confused about reload passes. -> my constraints : 'b' = arithmetic/logical unit register ($R, class R_REGS) 'c' = counter register ($C, class C_REGS) 'v' = memory with several special constraint (also described in predicate my_mem_or_reg_op

RE: postreload problem using reload_inm and SECONDARY_RELOAD macros

2011-09-14 Thread BELBACHIR Selim
3 for all valid moves (C_REGS <-> R_REGS). Is there a way to prevent totally the allocation of a hard register in specific context using 'costs'? -Message d'origine- De : Ian Lance Taylor [mailto:i...@google.com] Envoyé : mercredi 14 septembre 2011 15:40 À : BELBA

RE: postreload problem using reload_inm and SECONDARY_RELOAD macros

2011-09-15 Thread BELBACHIR Selim
further hints : The immediate which gcc wants to move in R_REGS is a (const_int 8) as described in the error message below : arithmetic.c:197: error: insn does not satisfy its constraints: (insn 1505 903 1506 0 (set (reg:SI 25 $R9) (const_int 8 [0x8])) 0 {movsi_in

Instruction scheduler question

2011-10-07 Thread BELBACHIR Selim
Hello, I'm trying to express the instruction latency time constraints of a private processor. * Overview : Two cycles are necessary between a comparison instruction and a conditionnal jump instruction (GSR is updated 2 cycles after comparison). If nothing better than 'nop' can be used betwee

arithmetic standard pattern using only memory_operand

2011-10-21 Thread BELBACHIR Selim
Hi, My target has arithmetic instruction whose operands can ONLY be memory (offseted, post/pre inc, ...). For example 'add' can only have a memory operand as its first operand : add mem($C1), $C2, $C3 I tried to simply write the addsi3 pattern with using memory_operand as predicate for oper

gnat cross compilation

2011-10-26 Thread BELBACHIR Selim
Hi, Is it possible to compile a gnat cross compiler based on gcc 4.5.2 using my pre-installed gnat native compiler based on gcc 3.4.6 ? Or should I try to build my own local native compiler based on gcc 4.5.2 ? I ask the question because for the moment, I'm stuck with the following erro

Building cross gnat + minimal RTS

2011-11-15 Thread BELBACHIR Selim
Hi, I'm trying to build a gnat cross compiler based on gcc 4.5.2 for my private target (named prism). To do this, I'm using a native gnat-6.4.2 (containing gcc 4.5.2). I want the minimal amount of lib and runtime so I presume that I nearly only need to provide 'system.ads'. (I will add seconda

maddsidi4 detection

2011-11-22 Thread BELBACHIR Selim
Hi, I'm trying to define the standard pattern maddsidi4. To do this I wrote this in my backend (gcc4.5.2) : (define_insn "maddsidi4" [(set (match_operand:DI 0 "register_operand" "=a") (plus:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "

dse2 remove wrong insn

2011-12-09 Thread BELBACHIR Selim
Hi, I'm still working on a new gcc-4.5.2 backend for a private processor. I encountered a strange behavior and I'm unable to find what causes this behavior. As an overview, it seems that dse2 pass removes insn where it should not (optim -O2, -O3) Here is the code giving me headachs which return

RE: dse2 remove wrong insn

2011-12-12 Thread BELBACHIR Selim
mb ? I don't know ... Selim -Message d'origine- De : gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] De la part de Andrew Haley Envoyé : vendredi 9 décembre 2011 18:37 À : gcc@gcc.gnu.org Objet : Re: dse2 remove wrong insn On 12/09/2011 03:05 PM, BELBACHIR Selim wrote: &

add and compare combination

2011-12-15 Thread BELBACHIR Selim
Hi, I'd like to know if there a way to express 'add' and 'compare' insn so that the combiner transform it in and 'add_and_compare' insn. I watch arm backend and it seems possible when I look at 'addsi3', 'cbranchsi4' and '*addsi3_compare0'. In my backend I have written the following insn/expan

RE: add and compare combination

2011-12-16 Thread BELBACHIR Selim
ded one (with a clobbered result because I have no cmp_plus instruction), everything run ok. I watched in arm backend and I found a similar insn... So the solution was in front of me but I did not see it :) Selim -Message d'origine- De : gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@g

reverse conditionnal jump

2012-01-05 Thread BELBACHIR Selim
Hi, I'm still developping a new private target backend (gcc4.5.2) and I noticed something strange in the assembler generated for conditionnal jump. The compiled C code source is : void funct (int c) { int a; a = 7; if (c < 0) a = 4; return a; } The assembler generated i

readonly register

2012-01-18 Thread BELBACHIR Selim
Hi, I'm trying to support an 'in' instruction which reads a value on a peripheral and writes it into a $INP register. The $INP register can be used in almost every insn as input operand (add, sub, mul ...). I defined a builting to access the 'in' instruction. How should I express to gcc that th

RE: readonly register

2012-01-19 Thread BELBACHIR Selim
pass without turning them into fixed register ? Selim -Message d'origine- De : Ian Lance Taylor [mailto:i...@google.com] Envoyé : jeudi 19 janvier 2012 00:17 À : BELBACHIR Selim Cc : gcc@gcc.gnu.org Objet : Re: readonly register BELBACHIR Selim writes: > I'm trying to s

DWARF2 offset for local variables

2013-05-03 Thread BELBACHIR Selim
Hi, I'm (still) working on a new gcc-4.5.2 backend for a private processor. Today i'm concerned about the debug mode using DWARF2. Here is my problem: When I use GDB on a executable compiled with -g option I notice that the addresses of all my local variables are wrong. I read gccint doc and tri

delay slot of conditionnal branch with no annuled jump strategy

2013-10-10 Thread BELBACHIR Selim
Hi, I'm porting gcc 4.5.2 on a private processor. I encountered a problem concerning delay slots of conditionnal branch instructions (Note : the processor has no 'annuled jump strategy') Here is my delay slot definition : (define_delay (eq_attr "type" "jump") [(and (eq_attr "delaya

RE: delay slot of conditionnal branch with no annuled jump strategy

2013-10-11 Thread BELBACHIR Selim
> Does this happen systematically with the compare insn or is it isolated? I encountered this problem only once in gcc testsuite (gcc.c-torture/execute/builtins/strncat-chk.c). I think the problem is quite rare because gcc does not put often a parallel compare insn into the delay slot of a cond

RE: delay slot of conditionnal branch with no annuled jump strategy

2013-10-11 Thread BELBACHIR Selim
> I have a gcc 4.6.1 port that has the same sort of problems. I tried > selectively porting some patches from later 4.6 releases, but they didn't > seem to actually address the issue. I haven't looked at the trunk to see if > there are patches that are more apropos. I looked at the revision

RE: delay slot of conditionnal branch with no annuled jump strategy

2013-10-14 Thread BELBACHIR Selim
ginning of the target path. Let's hope this correction does not hide another problem by just applying a side effect on my specific test case :) Regards, Selim -Message d'origine- De : Jeff Law [mailto:l...@redhat.com] Envoyé : vendredi 11 octobre 2013 22:34 À : BELBACHIR Sel

how to use -fomit-frame-pointer by default

2013-11-19 Thread BELBACHIR Selim
Hi, I'm migrating my private port from gcc 4.5.2 to gcc 4.7.3. I noticed that -fomit-frame-pointer was not triggered when using -O1 -O2 or -O3. Could you indicate me how to modify my port to use -fomit-frame-pointer by default (as it was in gcc 4.5.2 I presume) ? Regards, Selim

cross compile & exceptions

2013-11-20 Thread BELBACHIR Selim
Hi, I'm trying to migrate from gcc4.5.2 to gcc4.7.3. Here are a part of my makefile to build gcc (same config used with gcc4.5.2 and gcc4.7.3) : cd $(GCC_OBJDIR); CFLAGS="-g -O0" $(GCC_SRCDIR)/configure -quiet --prefix=$(INSTALLDIR) --target=$(TARGET) --enab

RE: how to use -fomit-frame-pointer by default

2013-11-20 Thread BELBACHIR Selim
Thx that's what I was looking for :) I forgot the new gcc/common/config part ... -Message d'origine- De : Joseph Myers [mailto:jos...@codesourcery.com] Envoyé : mercredi 20 novembre 2013 17:41 À : BELBACHIR Selim Cc : gcc@gcc.gnu.org Objet : Re: how to use -fomit-frame-

RE: cross compile & exceptions

2013-11-22 Thread BELBACHIR Selim
I did this in order to build gcc, libgcc and libstdc++ independently. when I do the simple integrated build process (following http://gcc.gnu.org/install) : cd $(GCC_OBJDIR); CFLAGS="-g -O0" $(GCC_SRCDIR)/configure -quiet --prefix=$(INSTALLDIR) --target=$(TARGET)

post_inc mem in parallel rtx

2013-11-22 Thread BELBACHIR Selim
Hi, I encountered a bug in cselib.c:2360 using gnat7.1.2 (gcc4.7.3) /* The register should have been invalidated. */ gcc_assert (REG_VALUES (dreg)->elt == 0);<<== assert(false) I investigated the dump and found that the crash occurred during 207r.dse2 pass.

RE: cross compile & exceptions

2013-11-22 Thread BELBACHIR Selim
>> >> So, to build libgcc I would need --without-header to compensate for my small >> libc, and to build libstdc++ I would have to use --with-header in order to >> provide stdio.h ... >> >> >> Do you know a better way to solve that than building gcc, libgcc & libstdc++ >> independently ? > W

RE: post_inc mem in parallel rtx

2013-11-22 Thread BELBACHIR Selim
Ok so I should avoid the auto_inc alternatives in PARALLEL. It's certainly a quite rare RTL and I doubt the effort worth it. -Message d'origine- De : Jeff Law [mailto:l...@redhat.com] Envoyé : vendredi 22 novembre 2013 17:55 À : BELBACHIR Selim; gcc@gcc.gnu.org Objet : Re: po

dwarf2out & var-tracking & cond_exec call

2013-11-29 Thread BELBACHIR Selim
Hi, I'm still porting my private backing from gcc 4.5.2 to gcc 4.7.3. When compiling the following code with -g option, I encountered "internal compiler error: in dwarf2out_var_location, at dwarf2out.c:20883" void toto(int* , float); void foo(int a, float b, int * c) { if (b) toto(c, b);

RE: dwarf2out & var-tracking & cond_exec call

2013-11-29 Thread BELBACHIR Selim
I found my problem totally elsewhere (sorry to bother) I was loosing proper NOTES during a COND_EXEC((..)(CALL(..))) split ... Selim -Message d'origine- De : gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] De la part de BELBACHIR Selim Envoyé : vendredi 29 novembre 2013 14

Controling reloads of movsicc pattern

2013-12-04 Thread BELBACHIR Selim
Hi, My target has : - 2 registers class to store SImode (like m68k, data $D & address $A). - moves from wide offset MEM to $D or $A (ex: mov d($A1+50),$A2 ormov d($A1+50),$D1) - conditional moves from offset MEM to $D or $A but with a restriction : offset MEM conditionally move

RE: Controling reloads of movsicc pattern

2013-12-06 Thread BELBACHIR Selim
LRA will be merged in 4.7.4 ?) Thanks Selim -Message d'origine- De : Jeff Law [mailto:l...@redhat.com] Envoyé : mercredi 4 décembre 2013 18:02 À : BELBACHIR Selim; gcc@gcc.gnu.org Objet : Re: Controling reloads of movsicc pattern On 12/04/13 03:22, BELBACHIR Selim wrote: > Hi,

RE: Controling reloads of movsicc pattern

2013-12-06 Thread BELBACHIR Selim
Any gnat official release ? Maybe gnat 7.2 beta is based on 4.8, I'll try to get this one. -Message d'origine- De : Andrew Pinski [mailto:pins...@gmail.com] Envoyé : vendredi 6 décembre 2013 09:54 À : BELBACHIR Selim Cc : Jeff Law; gcc@gcc.gnu.org Objet : Re: Controling

cpp0x test suite PASS/FAIL

2013-12-10 Thread BELBACHIR Selim
Hi, I'm playing c++ testsuite on my gcc.4.7.3 port and I encounter the following result on test auto27.C PASS: g++.dg/cpp0x/auto27.C -std=c++98 std (test for errors, line 3) PASS: g++.dg/cpp0x/auto27.C -std=c++98 auto (test for errors, line 3) PASS: g++.dg/cpp0x/auto27.C -std=c++98 no type (test

RE: cpp0x test suite PASS/FAIL

2013-12-10 Thread BELBACHIR Selim
3) FAIL: g++.dg/cpp0x/auto27.C -std=c++11 no type (test for errors, line 3) PASS: g++.dg/cpp0x/auto27.C -std=c++11 (test for excess errors) -Message d'origine- De : Joseph Myers [mailto:jos...@codesourcery.com] Envoyé : mardi 10 décembre 2013 18:22 À : BELBACHIR Selim Cc : gcc@gc

RE: cpp0x test suite PASS/FAIL

2013-12-11 Thread BELBACHIR Selim
the same way. I'll try to investigate further (tcl is a pain for me :) ) Selim -Message d'origine- De : Joseph Myers [mailto:jos...@codesourcery.com] Envoyé : mardi 10 décembre 2013 18:57 À : BELBACHIR Selim Cc : gcc@gcc.gnu.org Objet : RE: cpp0x test suite PASS/FAIL On Tue,

RE: cpp0x test suite PASS/FAIL

2013-12-11 Thread BELBACHIR Selim
s far as it is the last compiler flag. Answer : (a) bug in the test harness code Am I right ? Selim -Message d'origine- De : Joseph Myers [mailto:jos...@codesourcery.com] Envoyé : mardi 10 décembre 2013 18:57 À : BELBACHIR Selim Cc : gcc@gcc.gnu.org Objet : RE: cpp0x test suite PA

Why __builtin_sqrt do not totally replace sqrt in asm

2014-01-03 Thread BELBACHIR Selim
Hi, When the standard pattern 'sqrtm2' is defined I don't understand why calls to sqrt or __builtin_sqrt is always followed by a comparison of the result with itself (checking the NaN ?) and a conditional branch to sqrt symbol (so linking with libm is always mandatory). ---

lto testsuite may erase mathlib variable

2014-01-03 Thread BELBACHIR Selim
Hi, I noticed a problem in gcc/testsuite/g++.dg/lto/lto.exp If the target does not support LTO (check_effective_target_lto) a brutal return is performed so the mathlib variable modified in lto_init will not be restored properly by lto_finish at the end of the script. Subsequent testsuites will

wrong assertion in caller-save.c

2014-01-10 Thread BELBACHIR Selim
Hi, I think I found a bug in gcc 4.7.3 in gcc/caller-save.c at line 158 : gcc_assert (cached_reg_save_code[reg][mode]); should be : gcc_assert (cached_reg_save_code[reg][mode] != -1); because cached_reg_save_code contains INSN_CODES that can be equal to 0 (see attached patch) In

type argument in FUNCTION_ARG macro

2012-05-04 Thread BELBACHIR Selim
Hi, I'm working on an architecture where the calling convention depends on the type of the parameter (i.e. pointers are passed into $C regs and non-pointers are passed into $R regs). I've implemented this difference by using the POINTER_TYPE_P() macro on the 'type' argument of the FUNCTION_ARG

RE: type argument in FUNCTION_ARG macro

2012-05-04 Thread BELBACHIR Selim
That's the only option ? Is there a more general method to do this ? -Message d'origine- De : amyl...@spamcop.net [mailto:amyl...@spamcop.net] Envoyé : vendredi 4 mai 2012 15:48 À : BELBACHIR Selim Cc : gcc@gcc.gnu.org Objet : Re: type argument in FUNCTION_ARG macro Quoting

RE: type argument in FUNCTION_ARG macro

2012-05-04 Thread BELBACHIR Selim
Ok thanks, I'll keep on with plan B (INIT_CUMULATIVE_LIBCALL_ARGS with special libcall handling) Selim -Message d'origine- De : Ian Lance Taylor [mailto:i...@google.com] Envoyé : vendredi 4 mai 2012 15:58 À : BELBACHIR Selim Cc : gcc@gcc.gnu.org Objet : Re: type a

ADA runtime System.Address type

2013-02-01 Thread BELBACHIR Selim
Hi, I'm working on a gcc/gnat port for a private target (gcc 4.5.2, gnat 6.4.2). On this target, scalar values shall be stored in $R registers whereas pointer values shall be stored in $C registers. My current ABI for procedure/function calls uses $R and $C registers depending on arguments and