]> granicus.if.org Git - clang/commitdiff
Restore and update documentation comment for EmitPointerWithAlignment
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>
Fri, 19 May 2017 12:03:34 +0000 (12:03 +0000)
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>
Fri, 19 May 2017 12:03:34 +0000 (12:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@303419 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CodeGenFunction.h

index ae73903d22bae97157e7bd50fa828e7d48c059ee..526ef9a1e5796e33f3fe290d1398dedcbc55832b 100644 (file)
@@ -3746,12 +3746,23 @@ public:
                     unsigned ParamsToSkip = 0,
                     EvaluationOrder Order = EvaluationOrder::Default);
 
-  /// EmitPointerWithAlignment - Given an expression with a pointer
-  /// type, emit the value and compute our best estimate of the
-  /// alignment of the pointee.
+  /// EmitPointerWithAlignment - Given an expression with a pointer type,
+  /// emit the value and compute our best estimate of the alignment of the
+  /// pointee.
   ///
-  /// Note that this function will conservatively fall back on the type
-  /// when it doesn't 
+  /// \param BaseInfo - If non-null, this will be initialized with
+  /// information about the source of the alignment and the may-alias
+  /// attribute.  Note that this function will conservatively fall back on
+  /// the type when it doesn't recognize the expression and may-alias will
+  /// be set to false.
+  ///
+  /// One reasonable way to use this information is when there's a language
+  /// guarantee that the pointer must be aligned to some stricter value, and
+  /// we're simply trying to ensure that sufficiently obvious uses of under-
+  /// aligned objects don't get miscompiled; for example, a placement new
+  /// into the address of a local variable.  In such a case, it's quite
+  /// reasonable to just ignore the returned alignment when it isn't from an
+  /// explicit source.
   Address EmitPointerWithAlignment(const Expr *Addr,
                                    LValueBaseInfo *BaseInfo = nullptr);