[clang] [clang][codegen] Don't mark "int" TBAA on FP libcalls with indirect args (PR #108853)
Zahira Ammarguellat via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 17 07:05:48 PDT 2024
zahiraam wrote:
> > > > How does this interact with #107598?
> > >
> > >
> > > Though this also changes things to ensure when TBAA data is set, it's always set on the call.
> >
> >
> > Wasn't already doing that? (setting the TBAA on the call?).
>
> It was setting it on `cast<llvm::Instruction>(Call.getScalarVal())` not necessarily the call (which you can get via an output on `EmitCall()`). At least in this case that meant it was putting the TBAA metadata on the `load x86_fp80` after the call. I'm not sure if there's other cases where something similar could happen.
> > > > How does this interact with #107598?
> > >
> > >
> > > Though this also changes things to ensure when TBAA data is set, it's always set on the call.
> >
> >
> > Wasn't already doing that? (setting the TBAA on the call?).
>
> It was setting it on `cast<llvm::Instruction>(Call.getScalarVal())` not necessarily the call (which you can get via an output on `EmitCall()`). At least in this case that meant it was putting the TBAA metadata on the `load x86_fp80` after the call. I'm not sure if there's other cases where something similar could happen.
Without this patch and without (https://github.com/llvm/llvm-project/pull/107598) the function `pow` doesn't generate `int TBAA` info on the call, but it does on a call to `cargl` with `-triple aarch64-unknown-unknown`.
`# | %call = tail call fp128 @cargl([2 x fp128] noundef alignstack(16) undef) #1, !tbaa !2`
https://github.com/llvm/llvm-project/pull/108853
More information about the cfe-commits
mailing list