From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id BFBD95D5 for ; Thu, 14 Jan 2021 21:32:56 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.79,347,1602540000"; d="asc'?scan'208";a="487164824" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 14 Jan 2021 22:32:53 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 9FD5DE03B6; Thu, 14 Jan 2021 22:32:53 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id BBD3DE03B5 for ; Thu, 14 Jan 2021 22:32:50 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=christophe@raffalli.eu; spf=Pass smtp.mailfrom=christophe@raffalli.eu; spf=None smtp.helo=postmaster@mail.raffalli.eu IronPort-PHdr: =?us-ascii?q?9a23=3AKm5bsRKEKJ3EuJBIF9mcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgeLfvxwZ3uMQTl6Ol3ixeRBMOHsqMC07Kd6vq6ESxYuNDd6S9EKMQNHzY+yu?= =?us-ascii?q?wu1zQ6B8CEDUCpZNXLVAcdWPp4aVl+4nugOlJUEsutL3fbo3m18CJAUk6nbVk9?= =?us-ascii?q?Kev6AJPdgNqq3O6u5ZLTfx9IhD2gar9uMRm6twrcutQSjId4Nqo91hTFrmZWd+?= =?us-ascii?q?hI2GhkIU6fkwvm6sq/4ZJu8T5ct+49+8JFTK73Y7k2QbtEATo8Lms7/tfrtR7N?= =?us-ascii?q?TQuO4nsTTGAbmQdWDgbG8R/3QI7/vjP1ueRh1iaaO9b2Ta0vVjS586hrUh7ohz?= =?us-ascii?q?wZODM/7Wral9Z/jKNfoBKmuhx/34vZa5ybOfZiYq/Qe84RSGxcVchTSiNBGJux?= =?us-ascii?q?YYUPAeQfIOhWrIbyqEcTohalCgmgGPnixyVUinPq36A31fkqHwHc3AwnGtIDqG?= =?us-ascii?q?rZrNXvNKcTSuC10K7IzS3Db/xIxDzz9JLHch4vof6WWbJwdcvRwlQoGgzZjlWQ?= =?us-ascii?q?s43lPyiJ1uQKq2ib7/RvWPm1i2E9pQFxrCKgxsMoionInI4a1E3E+Dx/zY0oKt?= =?us-ascii?q?K2VFR1bsS4EJtMqS6aLY12T9sgTm9opCs0yrkLtIOncCYK1JkpyBzSZvKEfoSU?= =?us-ascii?q?/B7uVuacLSlmiX9qd7+yhwi//0euxODzVsS50FhHojRYn9XRsH0Gyh/d6tCfR/?= =?us-ascii?q?dg8Uqs1iyD2gTO5u1eJU04ibDXJ4Avz7M+jpYfrFjPEyHslEnojKKbeV8o9vam?= =?us-ascii?q?5unneLnquJ+ROolpgQ/kKKsugNawAeEgPwgOQWeb/eO82aXm/ULjQbVKiuc6kr?= =?us-ascii?q?PDv5DUK8QUvKq5AwtU0oo59Rm/Ei+q0NUenXYZMFJIYA+LgofmNl3UJP30EO2z?= =?us-ascii?q?jlCwnDtx2fzLMLPsDo3ILnfZkbfhebh961RbyAo21d1Q+5JUCqsAIPLoRk/xs8?= =?us-ascii?q?TYDh8nPAGv2eboEtt91o0EVmKLBq+ZMbnevkGV5u43OemDeJcVuCrhK/gi//Ph?= =?us-ascii?q?kWU2mVoZfaWw2ZsXaWu4Huh9LkWCYXvsh88BHn0Qsgo/SuzqklyCXiRJa3a8Ra?= =?us-ascii?q?Jvrg08XYmvCIOGQoG2nJSA2j26F9tYfDNoEFeJRFzobYSfR/AUaC/aGMZvnDUA?= =?us-ascii?q?UbnpH4QhzxC1qAjiy7dPNOPa9CQcsZOl2cUjtL6brg076TEhV5fV6GqKVWwhxj?= =?us-ascii?q?pUFQ9z57h2pAlG8nnGybJx2qcKD9Vd6fpNVgZ8OIOOl7UrWeC3YRrIe5KycHjj?= =?us-ascii?q?R9ynBT8rSddomI0UakhzEtGmj1bOwnjzWuJHp/mwHJUxt5nk8T3xKsJ6kiaU0a?= =?us-ascii?q?Agix88S8VBPGmih+hy6lqLCg=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CQBQCrtwBg/+laW5BiHgENLwwOC4R5W?= =?us-ascii?q?CASL4Q/iQSNaYpUFimMDgsBAwEIBRsSAgQBAYUdBYEYHgcBBDQTAhABAQUBAQE?= =?us-ascii?q?CAQMDBAFwhWEMgjgig0MEGQEBOFwCEkGDRoMFAbARfzODBQEBBoYOgToJgTiBU?= =?us-ascii?q?4QPT4MYg2pBPoFCiXOCS4Jgg0ATAYE7kSYLin2BdZtXgwGBHIcHgQuSaoETgzi?= =?us-ascii?q?eDIkep20TIoRKgW0jgVdNJoM2CUcZDY4tF4RPgx+GWh8zNwIGCgEBAwlWJhOMN?= =?us-ascii?q?AEB?= X-IPAS-Result: =?us-ascii?q?A0CQBQCrtwBg/+laW5BiHgENLwwOC4R5WCASL4Q/iQSNaYp?= =?us-ascii?q?UFimMDgsBAwEIBRsSAgQBAYUdBYEYHgcBBDQTAhABAQUBAQECAQMDBAFwhWEMg?= =?us-ascii?q?jgig0MEGQEBOFwCEkGDRoMFAbARfzODBQEBBoYOgToJgTiBU4QPT4MYg2pBPoF?= =?us-ascii?q?CiXOCS4Jgg0ATAYE7kSYLin2BdZtXgwGBHIcHgQuSaoETgzieDIkep20TIoRKg?= =?us-ascii?q?W0jgVdNJoM2CUcZDY4tF4RPgx+GWh8zNwIGCgEBAwlWJhOMNAEB?= X-IronPort-AV: E=Sophos;i="5.79,347,1602540000"; d="asc'?scan'208";a="370049701" X-MGA-submission: =?us-ascii?q?MDEjl85wy0dRrKLoVd/Yx8sOeYoge+x54sWpFl?= =?us-ascii?q?EmDrJ8g5VLkiwTxKkMpjhztaRyx3LC9bsA0BvT0+57+7FogfLbaCl8Oe?= =?us-ascii?q?kA3MTRDmzKD/6v/wzajNP9jew7xwNBTZWv9vXWmjlg/u6tO8ccv/pJk4?= =?us-ascii?q?m0tNYanZffbHRBDzF1BLIhvA=3D=3D?= Received: from vmi311709.contaboserver.net (HELO mail.raffalli.eu) ([144.91.90.233]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Jan 2021 22:32:50 +0100 Received: from localhost (25.235.254.103.dsl.dyn.mana.pf [103.254.235.25]) by mail.raffalli.eu (Postfix) with ESMTPSA id 6D09C6405C4 for ; Thu, 14 Jan 2021 22:32:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=raffalli.eu; s=mail; t=1610659943; bh=ffPoFs9RFY2+txRAHdyhq0BXO0+X9MtanDt8Ua0cAxY=; h=Date:From:To:Subject; b=lLCiPHJ6R6ntUldAuF9L32wHXk/Kipcof0xEUJ5XZdQa5/IED/XNAClttMEsVOL3Q LyaVS81DnKy4qSVTa/7YGyg5OAPP267WRZ1bCvsQGyw072/GaFZNnInnTW+OYqaccD /0NfQCRfBO2mRheH6o37OVbD7Y/xwUwr9kHz6Cjye5dtZSUHSnGjgrplTMAwd+55BP 5xyElfMzHGY25y2VBNl32qHcAfnDyW710lPxjod05wK2g32KPCieNVmGSf3nSCNg7T ruIOeXxyv+d9Hvg2VLGHIio5DIMtX3ok8oyJMXlShbSXRJvhHxrbNmwS3GuqGc0aLL bZrkwgOySxG7w== Date: Thu, 14 Jan 2021 12:31:46 -0900 From: Christophe Raffalli To: caml-list@inria.fr Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="A3r3bQxdUYR0C/1s" Content-Disposition: inline Subject: [Caml-list] functor inlining Reply-To: Christophe Raffalli X-Loop: caml-list@inria.fr X-Sequence: 18364 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --A3r3bQxdUYR0C/1s Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Hello I try to inline some module application. It works when I compile with ocamlopt or ocamlc manually: ocamlopt -w a -warn-error a mat.ml test.ml But fails using dune: dune build gives this error without flambda: File "test.ml", line 12, characters 18-52: 12 | module FloatMat = Mat.Make [@inlined always] (Float) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error (warning 55): Cannot inline: Unknown function and this error with flambda: File "test.ml", line 12, characters 18-52: 12 | module FloatMat = Mat.Make [@inlined always] (Float) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error (warning 55): Cannot inline: [@inlined] attribute was not used on this function application (the optimizer did not know what function was being applied) Am I missing something ? Here are the files to reproduce: ------------------------- mat.ml ---------------------- module type Field = sig type t val zero : t val one : t val ( + ) : t -> t -> t val ( * ) : t -> t -> t end module Make (R:Field) = struct open R type v = t array type m = t array array let ( *. ) v1 v2 = let r = ref zero in for i = 0 to Array.length v1 do r := !r + v1.(i) * v2.(i) done; !r let ( ** ) m v = Array.map (fun w -> w *. v) m end -------------------------------------------------------- ------------------------- test.ml ---------------------- module Float = struct type t = float let zero = 0.0 let one = 1.0 let ( + ) = ( +. ) let ( * ) = ( *. ) end module FloatMat = Mat.Make [@inlined always] (Float) -------------------------------------------------------- ------------------------- dune ------------------------- ; Add project-wide flags here. (env (dev (flags :standard -w -9-32) (ocamlopt_flags -O3)) (release (flags :standard -w -9-32) (ocamlopt_flags -O3))) (executable (name Test) (modules :standard)) --------------------------------------------------------- --A3r3bQxdUYR0C/1s Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEJ369adg37nCCF0BCVXIaPfvmsfAFAmAAuD0ACgkQVXIaPfvm sfDSIAf9HoAGnmCNtncYge+c3e90jO0rKEYozhb++2i3CiQVij1QfuGpidY2EIc1 5qs3AvLjmWZ7pVvwloapAc2HlnsD6ytj9dkW4OrIQcytLHeL/x4g0BpfvbB5L9BH iR69cv+kqC9uJE2yTpbHJ9u4UiXcGB8Lw43fAQYAHHFCQV/eHvm948a4dzwds74Y AcnJSiQB6JfYnG//mhN4/KuqvjKXAS5JBDnmqLp/mUsBhx72xwh5190WOKB008PN 7Mati3JjFEk6W+Mw8TbZf3+1xEjOi5JYbej8we6dGKhCgeWikqZl9ifDLqdgf29r VLbhgetsVNPZ3vxhMNrde/pQBpX7Vg== =R+pD -----END PGP SIGNATURE----- --A3r3bQxdUYR0C/1s--