Xiaochu Liu via llvm-dev
2016-Mar-16 18:49 UTC
[llvm-dev] How to prevent clang/llvm from generating floating-point instructions?
Dear there, I was trying to compile a code with only integer type variables and integer operations. Clang/llvm kept showing me llvm code with floating-point instructions (fmul, fadd, fptosi, etc.). Is there a way in Clang or llvm to stop the compiler from doing that? My experiment does not allow floating-point operations... Thanks, Xiaochu
Tim Northover via llvm-dev
2016-Mar-16 19:00 UTC
[llvm-dev] How to prevent clang/llvm from generating floating-point instructions?
Hi Xiaochu, On 16 March 2016 at 11:49, Xiaochu Liu via llvm-dev <llvm-dev at lists.llvm.org> wrote:> I was trying to compile a code with only integer type variables and > integer operations. Clang/llvm kept showing me llvm code with > floating-point instructions (fmul, fadd, fptosi, etc.). Is there a way > in Clang or llvm to stop the compiler from doing that? My experiment > does not allow floating-point operations...I think Clang's "-mno-implicit-float" is probably the option you want. I'm very surprised you're getting real floating operations like fadd if your source really contains no floats though (it's mostly only used implicitly for things like memcpy). So if that doesn't work, you should probably investigate where they're coming from more deeply. Maybe it's some external header you've included? Cheers. Tim.
Xiaochu Liu via llvm-dev
2016-Mar-16 22:19 UTC
[llvm-dev] How to prevent clang/llvm from generating floating-point instructions?
Hi Tim, Thanks for your message! It turns out that the infrastructure (an outdated one) that I am working on is using gcc+dragonegg to generate llvm code: gcc -m32 -S -c -O0 -fplugin=$(DRAGONEGG_SO) -fplugin-arg-dragonegg-emit-ir $< -o $@.tmp It directly generates llvm code with fadd, etc. I'm not familiar with dragonegg plugin... Thanks, XIaochu On Wed, Mar 16, 2016 at 12:00 PM, Tim Northover <t.p.northover at gmail.com> wrote:> Hi Xiaochu, > > On 16 March 2016 at 11:49, Xiaochu Liu via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >> I was trying to compile a code with only integer type variables and >> integer operations. Clang/llvm kept showing me llvm code with >> floating-point instructions (fmul, fadd, fptosi, etc.). Is there a way >> in Clang or llvm to stop the compiler from doing that? My experiment >> does not allow floating-point operations... > > I think Clang's "-mno-implicit-float" is probably the option you want. > > I'm very surprised you're getting real floating operations like fadd > if your source really contains no floats though (it's mostly only used > implicitly for things like memcpy). So if that doesn't work, you > should probably investigate where they're coming from more deeply. > Maybe it's some external header you've included? > > Cheers. > > Tim.
Reasonably Related Threads
- How to prevent clang/llvm from generating floating-point instructions?
- [LLVMdev] API change: add, sub, and mul no longer do floating-point
- [LLVMdev] Does DragonEgg support parameters like -fno-builtin in clang?
- [LLVMdev] SIMD instructions and memory alignment on X86
- [LLVMdev] spilling & xmm register usage