On Tue, 1 Jun 2021 at 23:34, Mark Wielaard <mark@klomp.org> wrote:
Hi,

On Tue, Jun 01, 2021 at 12:31:02AM +0200, Mark Wielaard wrote:
> There are currently three builders, fedora-x86_64, debian-arm64 and
> fedora-ppc64le which we know are zero fail. It would be nice to see
> how 32bit (debian-i386 or debian-armhf) and big-endian (fedora-s390x
> or fedora-ppc64) targets are doing. I haven't tried them yet.

I tried the simplest 32bit target, debian-i386 and it builds, but make
check-rust fails. It seems to have trouble processing f64
defintions/values.

mark@debian-i386:~/gccrs-build$ gcc/rust1 /home/mark/gccrs/gcc/testsuite/rust.test/compile/methods1.rs
Preparing to parse files.
Attempting to parse file: /home/mark/gccrs/gcc/testsuite/rust.test/compile/methods1.rs
beginning null denotation identifier handling
current peek token when starting path pratt parse: '{'
current token (just about to return path to null denotation): '{'
finished null denotation identifier path parsing - next is branching
values of lookahead: 'identifier' ':' 'float literal' ','
can be struct expr: 'true', not a block: 'true'
struct/enum expr field validated to not be null
struct/enum expr field pushed back
struct/enum expr fields comma skipped
struct/enum expr field validated to not be null
struct/enum expr field pushed back
lack of comma detected in struct/enum expr fields - break
struct/enum expr about to parse struct base
struct/enum expr skipped right curly - done and ready to return
beginning null denotation identifier handling
current peek token when starting path pratt parse: '{'
current token (just about to return path to null denotation): '{'
finished null denotation identifier path parsing - next is branching
values of lookahead: 'identifier' ':' 'identifier' ','
can be struct expr: 'true', not a block: 'true'
beginning null denotation identifier handling
current peek token when starting path pratt parse: ','
current token (just about to return path to null denotation): ','
finished null denotation identifier path parsing - next is branching
struct/enum expr field validated to not be null
struct/enum expr field pushed back
struct/enum expr fields comma skipped
beginning null denotation identifier handling
current peek token when starting path pratt parse: '}'
current token (just about to return path to null denotation): '}'
finished null denotation identifier path parsing - next is branching
struct/enum expr field validated to not be null
struct/enum expr field pushed back
lack of comma detected in struct/enum expr fields - break
struct/enum expr about to parse struct base
struct/enum expr skipped right curly - done and ready to return
successfully parsed inherent impl
beginning null denotation identifier handling
current peek token when starting path pratt parse: '{'
current token (just about to return path to null denotation): '{'
finished null denotation identifier path parsing - next is branching
values of lookahead: 'identifier' ',' 'identifier' '}'
can be struct expr: 'true', not a block: 'true'
struct/enum expr field validated to not be null
struct/enum expr field pushed back
struct/enum expr fields comma skipped
struct/enum expr field validated to not be null
struct/enum expr field pushed back
lack of comma detected in struct/enum expr fields - break
struct/enum expr about to parse struct base
struct/enum expr skipped right curly - done and ready to return
beginning null denotation self/self-alias/dollar/crate/super handling
current peek token when starting path pratt parse: '.'
current token (just about to return path to null denotation): '.'
just finished parsing path (going to disambiguate) - peeked token is '.'
beginning null denotation self/self-alias/dollar/crate/super handling
current peek token when starting path pratt parse: '.'
current token (just about to return path to null denotation): '.'
just finished parsing path (going to disambiguate) - peeked token is '.'
beginning null denotation identifier handling
current peek token when starting path pratt parse: '.'
current token (just about to return path to null denotation): '.'
finished null denotation identifier path parsing - next is branching
beginning null denotation identifier handling
current peek token when starting path pratt parse: '.'
current token (just about to return path to null denotation): '.'
finished null denotation identifier path parsing - next is branching
successfully parsed inherent impl
beginning null denotation identifier handling
current peek token when starting path pratt parse: '::'
current token (just about to return path to null denotation): '('
finished null denotation identifier path parsing - next is branching
beginning null denotation identifier handling
current peek token when starting path pratt parse: '::'
current token (just about to return path to null denotation): '('
finished null denotation identifier path parsing - next is branching
beginning null denotation identifier handling
current peek token when starting path pratt parse: '::'
current token (just about to return path to null denotation): '('
finished null denotation identifier path parsing - next is branching
beginning null denotation identifier handling
current peek token when starting path pratt parse: ','
current token (just about to return path to null denotation): ','
finished null denotation identifier path parsing - next is branching
beginning null denotation identifier handling
current peek token when starting path pratt parse: ')'
current token (just about to return path to null denotation): ')'
finished null denotation identifier path parsing - next is branching
beginning null denotation identifier handling
current peek token when starting path pratt parse: '.'
current token (just about to return path to null denotation): '.'
finished null denotation identifier path parsing - next is branching
SUCCESSFULLY PARSED CRATE
ran register_plugins (with no body)
SUCCESSFULLY REGISTERED PLUGINS
started injection
finished injection
SUCCESSFULLY FINISHED INJECTION
started expansion
finished expansion
SUCCESSFULLY FINISHED EXPANSION
/home/mark/gccrs/gcc/testsuite/rust.test/compile/methods1.rs:38:9: warning: unused name 'sum'
   38 |     let sum = rect.sum_x();
      |         ^

Analyzing compilation unit
/home/mark/gccrs/gcc/testsuite/rust.test/compile/methods1.rs: In function ‘Rectangle_sum_x’:
/home/mark/gccrs/gcc/testsuite/rust.test/compile/methods1.rs:26:5: error: type mismatch in binary expression
   26 |     fn sum_x(self) -> f64 {
      |     ^
f64

<float:80>

<float:80>

D.227 = _2 + _4;
/home/mark/gccrs/gcc/testsuite/rust.test/compile/methods1.rs:26:5: internal compiler error: ‘verify_gimple’ failed
0x8b114e4 verify_gimple_in_seq(gimple*)
        ../../gccrs/gcc/tree-cfg.c:5157
0x881a9e3 gimplify_body(tree_node*, bool)
        ../../gccrs/gcc/gimplify.c:15401
0x881abb2 gimplify_function_tree(tree_node*)
        ../../gccrs/gcc/gimplify.c:15472
0x8675c88 cgraph_node::analyze()
        ../../gccrs/gcc/cgraphunit.c:670
0x8678a58 analyze_functions
        ../../gccrs/gcc/cgraphunit.c:1236
0x8679641 symbol_table::finalize_compilation_unit()
        ../../gccrs/gcc/cgraphunit.c:2514
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
--
Gcc-rust mailing list
Gcc-rust@gcc.gnu.org
https://gcc.gnu.org/mailman/listinfo/gcc-rust


Hi Mark,

This is a good find I will open an issue to track this, I have a local Debian 32 bit machine at home so I can try this on later in the week. Off the top of my head I am wondering if there is something wrong with how we are building up the integer tree nodes. The relevant code starts in gcc/rust/backend/rust-compile-tyty.h inside ```  void visit (TyTy::IntType &type) override```.

Let me know if you get anywhere with this before Friday since I will should be able to look into this issue then.

--Phil