[llvm-commits] [PATCH] Invariants (and Assume Aligned) - LLVM
hfinkel at anl.gov
hfinkel at anl.gov
Wed Dec 5 16:14:26 PST 2012
Thanks!
Chandler was requested (on IRC) that I split this into 4 patches. I'll do that now, then I'll work on your comments.
-Hal
----- Original Message -----
> From: "Dmitri Gribenko" <gribozavr at gmail.com>
> To: hfinkel at anl.gov
> Cc: gribozavr at gmail.com, llvm-commits at cs.uiuc.edu, chandlerc at gmail.com
> Sent: Wednesday, December 5, 2012 4:06:31 PM
> Subject: Re: [PATCH] Invariants (and Assume Aligned) - LLVM
>
>
>
> ================
> Comment at: docs/LangRef.html:9083-9085
> @@ +9082,5 @@
> +
> +<p>The intrinsic allows the optimizer to assume that the provided
> condition is
> + always true. No code is generated for this intrinsic, and
> instructions that
> + contribute only to the provided condition are not used for code
> generation.</p>
> +</div>
> ----------------
> What about adding explicitly: "If the condition does not hold during
> execution, the behavior is undefined"?
>
> ================
> Comment at: include/llvm/Analysis/EphemeralValues.h:9-11
> @@ +8,5 @@
> +//===----------------------------------------------------------------------===//
> +//
> +// Calculate ephemeral values - those used only (indirectly) by
> invariants.
> +//
> +//===----------------------------------------------------------------------===//
> ----------------
> Three slashes and '\file', please.
>
>
> ================
> Comment at: include/llvm/Analysis/EphemeralValues.h:35
> @@ +34,3 @@
> + // Returns true if the provided value is ephemeral.
> + bool isEphemeralValue(Value *V) const {
> + return EphValues.count(V);
> ----------------
> Three slashes please.
>
> ================
> Comment at: include/llvm/Analysis/InlineCost.h:110
> @@ -108,1 +109,3 @@
> const DataLayout *TD;
> + // EphemeralValues if available, or null.
> + const EphemeralValues *EV;
> ----------------
> Three slashes...
>
> ================
> Comment at: lib/Analysis/CaptureTracking.cpp:139-142
> @@ -125,19 +138,6 @@
> }
> - case Instruction::Load:
> - // Loading from a pointer does not cause it to be captured.
> - break;
> - case Instruction::VAArg:
> - // "va-arg" from a pointer does not cause it to be captured.
> - break;
> - case Instruction::Store:
> - if (V == I->getOperand(0))
> - // Stored the pointer - conservatively assume it may be
> captured.
> - if (Tracker->captured(U))
> - return;
> - // Storing to the pointee does not cause the pointer to be
> captured.
> - break;
> case Instruction::BitCast:
> case Instruction::GetElementPtr:
> case Instruction::PHI:
> case Instruction::Select:
> // The original value is not captured via this if the new
> value isn't.
> ----------------
> Did you really intend to just move this piece of code a few lines
> down?
>
> ================
> Comment at: lib/Analysis/EphemeralValues.cpp:10-12
> @@ +9,5 @@
> +//===----------------------------------------------------------------------===//
> +//
> +// This file implements ephemeral value determination.
> +//
> +//===----------------------------------------------------------------------===//
> ----------------
> Three slashes and '\file', please.
>
> ================
> Comment at: include/llvm/Analysis/EphemeralValues.h:44
> @@ +43,3 @@
> + static char ID;
> + explicit EphemeralValues();
> +
> ----------------
> Does this need 'explicit'?
>
> ================
> Comment at: lib/Analysis/InlineCost.cpp:47
> @@ -45,1 +46,3 @@
> const DataLayout *const TD;
> + // EphemeralValues if available, or null.
> + const EphemeralValues *const EV;
> ----------------
> Three slashes, please.
>
> ================
> Comment at: lib/CodeGen/IntrinsicLowering.cpp:458
> @@ -456,3 +457,3 @@
> case Intrinsic::var_annotation:
> break; // Strip out annotate intrinsic
>
> ----------------
> Please correct the comment (something like "strip out these
> intrinsics")
>
> ================
> Comment at: lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:5023
> @@ -5021,3 +5022,3 @@
> case Intrinsic::var_annotation:
> // Discard annotate attributes
> return 0;
> ----------------
> Please correct the comment.
>
> ================
> Comment at: lib/Transforms/Scalar/AlignmentInvProp.cpp:10-12
> @@ +9,5 @@
> +//===----------------------------------------------------------------------===//
> +//
> +// This file implements alignment invariant propagation.
> +//
> +//===----------------------------------------------------------------------===//
> ----------------
> Three slashes and '\file'
>
> ================
> Comment at: lib/Transforms/Scalar/AlignmentInvProp.cpp:243
> @@ +242,3 @@
> + unsigned(sizeof(unsigned) * CHAR_BIT - 1));
> + Alignment = std::min(1u << TrailingOnes,
> +Value::MaximumAlignment);
> +
> ----------------
> Is the '+' required here?
>
>
> http://llvm-reviews.chandlerc.com/D150
>
http://llvm-reviews.chandlerc.com/D150
More information about the llvm-commits
mailing list