Skip to content

c gen error on multi return values with fixed arrays #25626

Description

@blackshirt

Describe the bug

Code: https://play.vlang.io/p/fcf5dbed11

import rand
import x.crypto.poly1305

fn bundle(x []u8) !([12]u8, &poly1305.Poly1305) {
	mut x12 := [12]u8{}
	mut x32 := []u8{len: 32}

	unsafe {
		vmemcpy(x12, x.data, 12)
		vmemcpy(x32.data, x.data, 32)
	}
	po := poly1305.new(x32)!
	return x12, po
}

fn main() {
	x := rand.bytes(45)!
	a, b := bundle(x)!
	dump(a)
	dump(b)
}

Reproduction Steps

See the link above

Expected Behavior

Should not c gen error, at least support for it

Current Behavior

Output:

/box/code.v:16: error: field not found: arg0
builder error: 
==================
C error found. It should never happen, when compiling pure V code.
This is a V compiler bug, please report it using `v bug file.v`,
or goto https://github.com/vlang/v/issues/new/choose .
You can also use #help on Discord: https://discord.gg/vlang .
Exited with error status 1

Possible Solution

No response

Additional Information/Context

No response

V version

V 0.4.12 7801f5b

Environment details (OS name and version, etc.)

|V full version      |V 0.4.12 7801f5b16b087d765c2f398fc3cd3531a2f01a1c
|:-------------------|:-------------------
|OS                  |linux, Debian GNU/Linux 12 (bookworm) (VM)
|Processor           |2 cpus, 64bit, little endian, Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
|Memory              |0.62GB/2.02GB
|                    |
|V executable        |/home/admin/v/v
|V last modified time|2025-10-30 02:25:30
|                    |
|V home dir          |OK, value: /home/admin/v
|VMODULES            |OK, value: .vmodules
|VTMP                |OK, value: /tmp/v_0
|Current working dir |OK, value: /home/admin/playground
|                    |
|Git version         |git version 2.39.5
|V git status        |N/A
|.git/config present |true
|                    |
|cc version          |cc (Debian 12.2.0-14+deb12u1) 12.2.0
|gcc version         |gcc (Debian 12.2.0-14+deb12u1) 12.2.0
|clang version       |Debian clang version 14.0.6
|tcc version         |tcc version 0.9.28rc 2025-02-13 HEAD@f8bd136d (x86_64 Linux)
|tcc git status      |Error: fatal: detected dubious ownership in repository at '/home/admin/v/thirdparty/tcc'
To add an exception for this directory, call:

	git config --global --add safe.directory /home/admin/v/thirdparty/tcc
 Error: fatal: detected dubious ownership in repository at '/home/admin/v/thirdparty/tcc'
To add an exception for this directory, call:

	git config --global --add safe.directory /home/admin/v/thirdparty/tcc

|emcc version        |N/A
|glibc version       |ldd (Debian GLIBC 2.36-9+deb12u10) 2.36

Note

You can use the 👍 reaction to increase the issue's priority for developers.

Please note that only the 👍 reaction to the issue itself counts as a vote.
Other reactions and those to comments will not be taken into account.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugThis tag is applied to issues which reports bugs.Status: ConfirmedThis bug has been confirmed to be valid by a contributor.Unit: cgenBugs/feature requests, that are related to the default C generating backend.

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions