[LLVMdev] CodeGen fails for CallInst with label
Chris Lattner
sabre at nondot.org
Sat Apr 19 13:44:08 PDT 2008
On Apr 19, 2008, at 1:30 PM, Edward Lee wrote:
> On Sat, Apr 19, 2008 at 2:16 PM, Chris Lattner <sabre at nondot.org>
> wrote:
>> No. The reason we don't allow this is because it violates the CFG.
> So if I *don't* violate the CFG, would I still need to do something
> close to "big and nasty"?
It sounds like you're doing something STM like, have you contacted
Torvald to see if he has ideas or insight?
http://llvm.org/pubs/2008-02-23-TRANSACT-TangerObjBased.html
-Chris
> ; save the address of %otherPath to use later
> call @llvm.checkpoint(label %otherPath)
> ; trick the rest of the compiler to think data flows to both paths
> *from here*
> br i1 @opaqueButAlwaysTrue, label %normalPath, label %otherPath
>
> normalPath:
> ; do some work..
> call void @work()
> ; rollback and erase any data changes since the checkpoint and
> ; continue at the label given to @checkpoint
> call @llvm.rollback()
> unreachable
>
> otherPath:
> ; we arrive here because @rollback reverted data to @checkpoint
> ; and it said to go to label %otherPath
>
> Right now I'm looking into making a new Inst that inherits BranchInst
> because I can give it BasicBlock*/labels and potentially change the
> CodeGen to emit a series of x86 instructions that does the
> functionality while not being optimized away by the rest of the
> compiler.
>
> Ed
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list