search for: guaranteedtailcallopt

Displaying 20 results from an estimated 22 matches for "guaranteedtailcallopt".

2011 Jun 17
0
[LLVMdev] ARM support status (GHC/ARM new calling convention)
I don't know if GuaranteedTailCallOpt is in anyone's plans. It might be a good idea to implement some time. I am not sure what GHC's exact needs are, though. Cameron On Jun 17, 2011, at 1:49 PM, Karel Gardas wrote: > > Hello Cameron, > > thanks a lot for your fast answer, which just makes me curious if making A...
2019 Sep 18
2
Setting llvm::TargetOptions::GuaranteedTailCallOpt in LTO Code Generation
...usttail` because the callee and caller often have >>> different signatures. >>> >>> We would like to support link time optimization in our programming >>> language, because performance is important to us. However, there is no >>> clang flag to enable the GuaranteedTailCallOpt flag, and the only way to >>> pass target options to the lto plugin currently is via an unsupported API >>> that parses those flags to static variables. >>> >> >> I assume you mean passing internal options via -mllvm through the linker? >> > > Yes...
2011 Jun 17
2
[LLVMdev] ARM support status (GHC/ARM new calling convention)
...development plans already? If not, then what do you think is the complexity of such work? Thanks! Karel On 06/17/11 10:41 PM, Cameron Zwarich wrote: > They work pretty well now, at least on Thumb2 / Darwin. It is still fairly conservative about when to use tail calls, and doesn't support GuaranteedTailCallOpt, which might be necessary for GHC. > > Cameron > > On Jun 17, 2011, at 1:31 PM, Karel Gardas wrote: > >> >> John, >> >> I've moved with patches to HEAD and unfortunately the comments about >> disabling tailcalls do not go away with this update. Pleas...
2019 Sep 16
2
Setting llvm::TargetOptions::GuaranteedTailCallOpt in LTO Code Generation
...ne another in deeply nested recursive calls. We can't use `musttail` because the callee and caller often have different signatures. We would like to support link time optimization in our programming language, because performance is important to us. However, there is no clang flag to enable the GuaranteedTailCallOpt flag, and the only way to pass target options to the lto plugin currently is via an unsupported API that parses those flags to static variables. This works on Linux, but the Mac OS linker does not actually initialize the TargetOptions that it passes as an llvm::lto::Config based on the parsed stati...
2019 Sep 18
2
Setting llvm::TargetOptions::GuaranteedTailCallOpt in LTO Code Generation
...t be fixable? > We can't use `musttail` because the callee and caller often have different > signatures. > > We would like to support link time optimization in our programming > language, because performance is important to us. However, there is no > clang flag to enable the GuaranteedTailCallOpt flag, and the only way to > pass target options to the lto plugin currently is via an unsupported API > that parses those flags to static variables. > I assume you mean passing internal options via -mllvm through the linker? > This works on Linux, but the Mac OS linker does not actua...
2019 Sep 18
3
Setting llvm::TargetOptions::GuaranteedTailCallOpt in LTO Code Generation
...lag was created. > > > We can't use `musttail` because the callee and caller often have different signatures. > > We would like to support link time optimization in our programming language, because performance is important to us. However, there is no clang flag to enable the GuaranteedTailCallOpt flag, and the only way to pass target options to the lto plugin currently is via an unsupported API that parses those flags to static variables. > > I assume you mean passing internal options via -mllvm through the linker? > > Yes that's correct, we are passing -mllvm -tailcallopt...
2011 Jan 02
2
[LLVMdev] X86 -tailcallopt and C calling conversion
Happy 2011, everybody! It seems -tailcallopt prevents tailcall optimization when both caller and callee have ccc, even when it is optimized without an option -tailcallopt. Is it intended or misoptimized? In X86ISelLowering.cpp:X86TargetLowering::IsEligibleForTailCallOptimization(): if (GuaranteedTailCallOpt) { if (IsTailCallConvention(CalleeCC) && CCMatch) return true; return false; } I know -tailcallopt changes calling conversion of fastcc to callee-pop. ps. I am tweaking tailcallopt on Win64. ...Takumi
2013 Jul 18
2
[LLVMdev] LLVM 3.3 JIT code speed
...PU(llvm::sys::getHostCPUName()); TargetOptions targetOptions; targetOptions.NoFramePointerElim = true; targetOptions.LessPreciseFPMADOption = true; targetOptions.UnsafeFPMath = true; targetOptions.NoInfsFPMath = true; targetOptions.NoNaNsFPMath = true; targetOptions.GuaranteedTailCallOpt = true; builder.setTargetOptions(targetOptions); TargetMachine* tm = builder.selectTarget(); fJIT = builder.create(tm); if (!fJIT) { return false; } …. Any idea? Thanks. Stéphane Letz
2012 Feb 29
1
[LLVMdev] Tail Call Optimization
...the list. --> #include "llvm/Target/TargetOptions.h" #include <iostream> extern "C" { using namespace std; void enable_tail_call_opt() { cout << "Enabling TCO" << endl; //llvm::PerformTailCallOpt = true; <-- pre-2.7 name llvm::GuaranteedTailCallOpt = true; } } </code> Compiling 3.0 (but not 2.8 or earlier) I also had to run: touch llvm-3.0.src/bindings/ocaml/llvm/Release/META.llvm to passify make install, since it tried to install metadata, but didn't have any. Trouble was that just about all test cases would cause "Stac...
2010 Feb 18
2
[LLVMdev] What happened to llvm::PerformTailCallOpt?
I'm just trying to test HLVM with the latest SVN of LLVM and discovered that llvm::PerformTailCallOpt has disappeared from the code but it is still referred to from LangRef.html. Where did it go? -- Dr Jon Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/?e
2010 Feb 18
0
[LLVMdev] What happened to llvm::PerformTailCallOpt?
...n Feb 18, 2010, at 2:12 AM, Jon Harrop wrote: > > I'm just trying to test HLVM with the latest SVN of LLVM and discovered that > llvm::PerformTailCallOpt has disappeared from the code but it is still > referred to from LangRef.html. > > Where did it go? It got renamed to GuaranteedTailCallOpt, to better reflect what it actually represents. --Owen -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2620 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100218/be3e2c7...
2011 Jan 04
0
[LLVMdev] X86 -tailcallopt and C calling conversion
...en it is optimized without an option -tailcallopt. Sorry, I don't understand your question. What do you mean by both caller and callee have ccc? Evan > Is it intended or misoptimized? > > In X86ISelLowering.cpp:X86TargetLowering::IsEligibleForTailCallOptimization(): > > if (GuaranteedTailCallOpt) { > if (IsTailCallConvention(CalleeCC) && CCMatch) > return true; > return false; > } > > I know -tailcallopt changes calling conversion of fastcc to callee-pop. > > ps. I am tweaking tailcallopt on Win64. > > ...Takumi > ____________________...
2012 May 08
2
[LLVMdev] 3.1 API Breakage
...ch is local to each TargetMachine." Unfortunately, they don't say anything about how to fix existing source to work around this. In my application I create a JIT using ExecutionEngine::create() after initializing the native target using InitializeNativeTarget(). I also need to set the GuaranteedTailCallOpt flag beforehand. However, with LLVM 3.1 the global GuaranteedTailCallOpt flag is gone and neither ExecutionEngine::create() nor InitializeNativeTarget() accept a TargetOptions argument. Nor could I find a way to retrieve and change the target options later. Is that an oversight, or is there so...
2013 Jul 18
0
[LLVMdev] LLVM 3.3 JIT code speed
...t; > TargetOptions targetOptions; > targetOptions.NoFramePointerElim = true; > targetOptions.LessPreciseFPMADOption = true; > targetOptions.UnsafeFPMath = true; > targetOptions.NoInfsFPMath = true; > targetOptions.NoNaNsFPMath = true; > targetOptions.GuaranteedTailCallOpt = true; > > builder.setTargetOptions(targetOptions); > > TargetMachine* tm = builder.selectTarget(); > > fJIT = builder.create(tm); > if (!fJIT) { > return false; > } > …. > > Any idea? It's hard to say much without seeing the...
2011 Jun 17
0
[LLVMdev] ARM support status (GHC/ARM new calling convention)
They work pretty well now, at least on Thumb2 / Darwin. It is still fairly conservative about when to use tail calls, and doesn't support GuaranteedTailCallOpt, which might be necessary for GHC. Cameron On Jun 17, 2011, at 1:31 PM, Karel Gardas wrote: > > John, > > I've moved with patches to HEAD and unfortunately the comments about > disabling tailcalls do not go away with this update. Please see > ARMTargetLowering::LowerCa...
2011 Jun 17
2
[LLVMdev] ARM support status (GHC/ARM new calling convention)
John, I've moved with patches to HEAD and unfortunately the comments about disabling tailcalls do not go away with this update. Please see ARMTargetLowering::LowerCall in lib/Target/ARM/ARMISelLowering.cpp line 1208 and later. It looks like man can use -arm-tail-calls, but one never knows how good it is since the comment tells it clearly: // Temporarily disable tail calls so things
2013 Jul 18
2
[LLVMdev] LLVM 3.3 JIT code speed
...Options targetOptions; >> targetOptions.NoFramePointerElim = true; >> targetOptions.LessPreciseFPMADOption = true; >> targetOptions.UnsafeFPMath = true; >> targetOptions.NoInfsFPMath = true; >> targetOptions.NoNaNsFPMath = true; >> targetOptions.GuaranteedTailCallOpt = true; >> >> builder.setTargetOptions(targetOptions); >> >> TargetMachine* tm = builder.selectTarget(); >> >> fJIT = builder.create(tm); >> if (!fJIT) { >> return false; >> } >> …. >> >> Any idea? &...
2013 Jul 18
0
[LLVMdev] LLVM 3.3 JIT code speed
...Options targetOptions; >> targetOptions.NoFramePointerElim = true; >> targetOptions.LessPreciseFPMADOption = true; >> targetOptions.UnsafeFPMath = true; >> targetOptions.NoInfsFPMath = true; >> targetOptions.NoNaNsFPMath = true; >> targetOptions.GuaranteedTailCallOpt = true; >> >> builder.setTargetOptions(targetOptions); >> >> TargetMachine* tm = builder.selectTarget(); >> >> fJIT = builder.create(tm); >> if (!fJIT) { >> return false; >> } >> .. >> >> Any idea? &...
2011 May 07
0
[LLVMdev] Question about linking llvm-mc when porting a new backend
...jectFileELFin libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o) typeinfo for llvm::TargetLoweringObjectFileMachOin libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o) typeinfo for llvm::TargetLoweringObjectFileCOFFin libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o) "llvm::GuaranteedTailCallOpt", referenced from: __ZN4llvm21GuaranteedTailCallOptE$non_lazy_ptr in libLLVMCodeGen.a(Analysis.cpp.o) "llvm::TargetLoweringObjectFile::SectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const", referenced from:...
2014 Sep 19
2
[LLVMdev] More careful treatment of floating point exceptions
Hi Sanjay, Thanks, I saw this flag and it's definitely should be considered, but it appeared to me to be static characteristic of target platform. I'm not sure how appropriate it would be to change its value from a front-end. It says "Has", while optional flag would rather say "Uses" meaning that implementation cares about floating point exceptions. Regards, Sergey