[llvm-bugs] [Bug 31917] New: [feature request] provide a __ctfe builtin for detecting compile-time execution
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Thu Feb  9 04:38:18 PST 2017
    
    
  
https://llvm.org/bugs/show_bug.cgi?id=31917
            Bug ID: 31917
           Summary: [feature request] provide a __ctfe builtin for
                    detecting compile-time execution
           Product: clang
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: gonzalobg88 at gmail.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified
>From the D language docs:
"The __ctfe boolean pseudo-variable, which evaluates to true at compile time,
but false at run time, can be used to provide an alternative execution path to
avoid operations which are forbidden at compile time. Every usage of __ctfe is
evaluated before code generation and therefore has no run-time cost, even if no
optimizer is used."
It would be nice to have such an intrinsic in clang to be able to switch
algorithms optimized for compile-time or run-time usage in constexpr functions. 
For example, a constexpr function that wants to use SIMD intrinsics at
run-time, currently cannot, because the intrinsics are not constexpr, and
clang's constant evaluator cannot handle them (and the one in LLVM cannot be
leveraged for this). 
Providing such an intrinsic would be a way easier task than, say, teaching
clang's constant expression evaluator how to handle _all_ intrinsics so that
one can make them constexpr.
-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170209/50801c8e/attachment.html>
    
    
More information about the llvm-bugs
mailing list