[llvm-dev] By default clang does not emit trap insn

kamlesh kumar via llvm-dev llvm-dev at lists.llvm.org
Tue May 26 23:59:58 PDT 2020


cced the author.

On Wed, May 27, 2020 at 11:41 AM David Blaikie <dblaikie at gmail.com> wrote:

> looks like experimental/work in progress support:
> https://reviews.llvm.org/D62731
>
> On Tue, May 26, 2020 at 10:39 PM kamlesh kumar via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>>
>>
>> On Wed, May 27, 2020 at 11:06 AM kamlesh kumar <kamleshbhalui at gmail.com>
>> wrote:
>>
>>> Hi Devs,
>>> going by this link https://llvm.org/docs/LangRef.html#floatenv
>>> it says that floating point operation does not have side effects by
>>> defaults.
>>> but when compile a test case
>>> i.e.
>>> cat a.c
>>> float foo(float a, float b)
>>> {
>>> return a+b;
>>> }
>>>
>>> $clang a.c -O2 -S -emit-llvm
>>> emit ir like:
>>> $cat a.ll
>>> ---------------------------------------
>>> ; ModuleID = 'a.c'
>>> source_filename = "a.c"
>>> target datalayout =
>>> "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
>>> target triple = "x86_64-unknown-linux-gnu"
>>>
>>> ; Function Attrs: norecurse nounwind readnone uwtable
>>> define dso_local float @foo(float %a, float %b) local_unnamed_addr #0 {
>>> entry:
>>>   %add = fadd float %a, %b
>>>   ret float %add
>>> }
>>>
>>> attributes #0 = { norecurse nounwind readnone uwtable
>>> "correctly-rounded-divide-sqrt-fp-math"="false"
>>> "disable-tail-calls"="false" "frame-pointer"="none"
>>> "less-precise-fpmad"="false" "min-legal-vector-width"="0"
>>> "no-infs-fp-math"="false" "no-jump-tables"="false"
>>> "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false"
>>> "no-trapping-math"="false" "stack-protector-buffer-size"="8"
>>> "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87"
>>> "unsafe-fp-math"="false" "use-soft-float"="false" }
>>> ---------------------
>>> and the setting "no-trapping-math"="false" should mean -ftrapping-math
>>> but it does not and it also contradict with documentation.
>>>
>>> I think clang should emit this "no-trapping-math"="true" by default if
>>> it goes with this assumption
>>> https://llvm.org/docs/LangRef.html#floatenv ?
>>> what is default behavior of clang -fno-trapping-math or -ftrapping-math?
>>> also clang default behavior does not match gcc?
>>> https://godbolt.org/z/B3YvxE
>>>
>>> ./kamlesh
>>>
>>>
>>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200527/98e3847b/attachment.html>


More information about the llvm-dev mailing list