Hi David, > I think Nathan might've been asking not only about what currently happens, but what we think should happen? Yes. > Is that consistent with `-o`? (I assume so, but don't know - I guess there aren't many cases where `-o` is unused (maybe `-fsyntax-only`), so that behavior might be a bit less well specified) `-o` wouldn't emit a warning if it is not used. (with `-fsyntax-only` for example). Since we want to make the behavior of `-fmodule-output` to be consistent with `-o`. I've changed the behavior in https://reviews.llvm.org/D140001. > This seems surprising/possibly wrong to me - do we have precedent from other flags to draw from? I feel it makes sense since `-fmodule-output=` will provide more information than `-fmodule-output`. So it is naturally to me that `-fmodule-output=` has higher priority. For examples, I don't enumerate all the flags but I find the following cases in minutes: - `-fpack-struct=` has higher priority than `-fpack-struct`. - `-fsave-optimization-record=` has higher priority than `-fsave-optimization-record=`. - `-ftime-report=` has higher priority than `-ftime-report`. - `-ftime-trace=` has higher priority than `-ftime-trace`. So I think the bahavior should be correct. Thanks, Chuanqi ------------------------------------------------------------------ From:David Blaikie Send Time:2022年12月13日(星期二) 23:56 To:chuanqi.xcq Cc:Iain Sandoe ; GCC Development ; Nathan Sidwell ; Jonathan Wakely ; ben.boeckel Subject:Re: Naming flag for specifying the output file name for Binary Module Interface files I think Nathan might've been asking not only about what currently happens, but what we think should happen? On Mon, Dec 12, 2022 at 7:11 PM chuanqi.xcq wrote: > > Hi Nathan, > > > 1) Are these flags silently ignored, if no module output is to be generated? Or is some kind of diagnostic generated? > > Currently, clang will generate the unused-command-line-argument warning for this case: > > ``` > argument unused during compilation: '-fmodule-output' [-Wunused-command-line-argument] > ``` Is that consistent with `-o`? (I assume so, but don't know - I guess there aren't many cases where `-o` is unused (maybe `-fsyntax-only`), so that behavior might be a bit less well specified) > > 2) what happens if you specify both -- do you get two outputs, a diagnostic, or > is one silently selected? > > If someone specify both `-fmodule-output` and `-fmodule-output=/path`, > the `-fmodule-output=/path` will be selected always no matter what the order is. This seems surprising/possibly wrong to me - do we have precedent from other flags to draw from? > And if multiple `-fmodule-output=/path` are specified, the last one will be selected. > > > 3) What is the behaviour if compilation fails? Does nothing happen to the file > indicated (potentially leaving an older version there), or does the equivalent > of 'rm -f $MODULE.pcm' happen? > > The module file will be deleted. The behavior is the same with `-o`. > > Thanks, > Chuanqi > > > ------------------------------------------------------------------ > From:Nathan Sidwell > Send Time:2022年12月12日(星期一) 22:30 > To:Iain Sandoe ; GCC Development > Cc:Nathan Sidwell ; Jonathan Wakely ; David Blaikie ; ben.boeckel ; chuanqi.xcq > Subject:Re: Naming flag for specifying the output file name for Binary Module Interface files > > On 12/9/22 12:33, Iain Sandoe wrote: > > Hello all. > > > >> On 9 Dec 2022, at 01:58, chuanqi.xcq wrote: > >> > >> It looks like `-fmodule-file` is better from the discussion. So let's take it. Thanks for everyone here > > > > So FAOD (after this discussion) Chuanqi's current patchset implements the following in clang: > > > > -fmodule-output > > > > - this causes the BMI to be saved in the CWG with the basename of the source file and a suffix of .pcm. > > > > -fmodule-output= > > > > - this causes the BMI to be saved at the path specified. > > > > 1) Are these flags silently ignored, if no module output is to be generated? Or > is some kind of diagnostic generated? > > 2) what happens if you specify both -- do you get two outputs, a diagnostic, or > is one silently selected? > > 3) What is the behaviour if compilation fails? Does nothing happen to the file > indicated (potentially leaving an older version there), or does the equivalent > of 'rm -f $MODULE.pcm' happen? > > nathan > > -- > Nathan Sidwell > >