r253117 - Clarify and elaborate the conditions on which we're checking target

Eric Christopher via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 13 17:56:04 PST 2015


Author: echristo
Date: Fri Nov 13 19:56:04 2015
New Revision: 253117

URL: http://llvm.org/viewvc/llvm-project?rev=253117&view=rev
Log:
Clarify and elaborate the conditions on which we're checking target
features for calls.

Modified:
    cfe/trunk/lib/CodeGen/CGExpr.cpp

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=253117&r1=253116&r2=253117&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Fri Nov 13 19:56:04 2015
@@ -3748,10 +3748,12 @@ RValue CodeGenFunction::EmitCall(QualTyp
          "Call must have function pointer type!");
 
   if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(TargetDecl))
-    // If this isn't an always_inline function we can't guarantee that any
-    // function isn't being used correctly so only check if we have the
-    // attribute and a set of target attributes that might be different from
-    // our default.
+    // We can only guarantee that a function is called from the correct
+    // context/function based on the appropriate target attributes,
+    // so only check in the case where we have both always_inline and target
+    // since otherwise we could be making a conditional call after a check for
+    // the proper cpu features (and it won't cause code generation issues due to
+    // function based code generation).
     if (TargetDecl->hasAttr<AlwaysInlineAttr>() &&
         TargetDecl->hasAttr<TargetAttr>())
       checkTargetFeatures(E, FD);




More information about the cfe-commits mailing list