public inbox for gcc-rust@gcc.gnu.org
 help / color / mirror / Atom feed
* ppc64le added to buildbot
@ 2021-05-31 22:31 Mark Wielaard
  2021-06-01 22:34 ` debian-i386 target (Was: ppc64le added to buildbot) Mark Wielaard
  0 siblings, 1 reply; 5+ messages in thread
From: Mark Wielaard @ 2021-05-31 22:31 UTC (permalink / raw)
  To: gcc-rust

Hi,

Since the ppc64le target is now zero-fail I added it to my buildbot
setup: https://builder.wildebeest.org/buildbot/#/builders/60
You can find the status off all the builders at
https://builder.wildebeest.org/buildbot/#/builders?tags=gccrust

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.

Are there any other targets people are working on?

Cheers,

Mark


^ permalink raw reply	[flat|nested] 5+ messages in thread

* debian-i386 target (Was: ppc64le added to buildbot)
  2021-05-31 22:31 ppc64le added to buildbot Mark Wielaard
@ 2021-06-01 22:34 ` Mark Wielaard
  2021-06-02 10:22   ` Philip Herron
  0 siblings, 1 reply; 5+ messages in thread
From: Mark Wielaard @ 2021-06-01 22:34 UTC (permalink / raw)
  To: gcc-rust

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.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: debian-i386 target (Was: ppc64le added to buildbot)
  2021-06-01 22:34 ` debian-i386 target (Was: ppc64le added to buildbot) Mark Wielaard
@ 2021-06-02 10:22   ` Philip Herron
  2021-06-02 10:25     ` John Paul Adrian Glaubitz
  2021-06-02 21:14     ` Mark Wielaard
  0 siblings, 2 replies; 5+ messages in thread
From: Philip Herron @ 2021-06-02 10:22 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: gcc-rust

[-- Attachment #1: Type: text/plain, Size: 8464 bytes --]

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

[-- Attachment #2: Type: text/html, Size: 10032 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: debian-i386 target (Was: ppc64le added to buildbot)
  2021-06-02 10:22   ` Philip Herron
@ 2021-06-02 10:25     ` John Paul Adrian Glaubitz
  2021-06-02 21:14     ` Mark Wielaard
  1 sibling, 0 replies; 5+ messages in thread
From: John Paul Adrian Glaubitz @ 2021-06-02 10:25 UTC (permalink / raw)
  To: Philip Herron, Mark Wielaard; +Cc: gcc-rust

Hi Philip!

On 6/2/21 12:22 PM, Philip Herron wrote:
> 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```.

I have access to quite a number of different architectures and I will start
testing gccrs on all of them now, starting with ia64 :-).

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz@debian.org
`. `'   Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: debian-i386 target (Was: ppc64le added to buildbot)
  2021-06-02 10:22   ` Philip Herron
  2021-06-02 10:25     ` John Paul Adrian Glaubitz
@ 2021-06-02 21:14     ` Mark Wielaard
  1 sibling, 0 replies; 5+ messages in thread
From: Mark Wielaard @ 2021-06-02 21:14 UTC (permalink / raw)
  To: Philip Herron; +Cc: gcc-rust

Hi Philip,

On Wed, Jun 02, 2021 at 11:22:43AM +0100, Philip Herron wrote:
> > 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
> 
> 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.

I looked a bit but am still struggling with how to debug the gimple generation.
The following is a simpler variant that shows the issue:

fn sum(x: f64, y: f64) -> f64
{
  x + y
}

fn main()
{
  let _sum = sum(3.0, 4.0);
}

Interestingly the following, using an mutable temporary variable to hold the result does pass:

fn sum(x: f64, y: f64) -> f64
{
   let mut z:f64 = x;
   z += y;
   z
}

fn main()
{
  let _sum = sum(3.0, 4.0);
}

As far as I can tell the second variant still uses float:80 for the
temporaries, but because z is f64 it gets cast to (f64) when
returning, making the gimple check pass.

So I assumed it was because the arguments got the wrong type somehow.
But the following also doesn't pass:

fn sum(x: f64, y: f64) -> f64
{
   let a:f64 = x;
   let b:f64 = y;
   a + b
}

fn main()
{
  let _sum = sum(3.0, 4.0);
}

So it is as if the plus expression gets its variable types wrong.
I don't know where that is generated though, or why it is using float:80.

Cheers,

Mark


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-06-02 21:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-31 22:31 ppc64le added to buildbot Mark Wielaard
2021-06-01 22:34 ` debian-i386 target (Was: ppc64le added to buildbot) Mark Wielaard
2021-06-02 10:22   ` Philip Herron
2021-06-02 10:25     ` John Paul Adrian Glaubitz
2021-06-02 21:14     ` Mark Wielaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).