diff options
-rw-r--r-- | docs/LangRef.html | 20 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 11 |
2 files changed, 23 insertions, 8 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index 7adb89621f..c590579181 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -7018,8 +7018,9 @@ LLVM</a>.</p> object's lifetime.</p> <h5>Arguments:</h5> -<p>The first argument is a the size of the object, or -1 if it is variable - sized. The second argument is a pointer to the object.</p> +<p>The first argument is a constant integer representing the size of the + object, or -1 if it is variable sized. The second argument is a pointer to + the object.</p> <h5>Semantics:</h5> <p>This intrinsic indicates that before this point in the code, the value of the @@ -7047,8 +7048,9 @@ LLVM</a>.</p> object's lifetime.</p> <h5>Arguments:</h5> -<p>The first argument is a the size of the object, or -1 if it is variable - sized. The second argument is a pointer to the object.</p> +<p>The first argument is a constant integer representing the size of the + object, or -1 if it is variable sized. The second argument is a pointer to + the object.</p> <h5>Semantics:</h5> <p>This intrinsic indicates that after this point in the code, the value of the @@ -7075,8 +7077,9 @@ LLVM</a>.</p> a memory object will not change.</p> <h5>Arguments:</h5> -<p>The first argument is a the size of the object, or -1 if it is variable - sized. The second argument is a pointer to the object.</p> +<p>The first argument is a constant integer representing the size of the + object, or -1 if it is variable sized. The second argument is a pointer to + the object.</p> <h5>Semantics:</h5> <p>This intrinsic indicates that until an <tt>llvm.invariant.end</tt> that uses @@ -7103,8 +7106,9 @@ LLVM</a>.</p> <h5>Arguments:</h5> <p>The first argument is the matching <tt>llvm.invariant.start</tt> intrinsic. - The second argument is a the size of the object, or -1 if it is variable - sized and the third argument is a pointer to the object.</p> + The second argument is a constant integer representing the size of the + object, or -1 if it is variable sized and the third argument is a pointer + to the object.</p> <h5>Semantics:</h5> <p>This intrinsic indicates that the memory is mutable again.</p> diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 257b2495a8..75ea4c3e2f 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -1578,6 +1578,17 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) { "llvm.stackprotector parameter #2 must resolve to an alloca.", &CI); break; + case Intrinsic::lifetime_start: + case Intrinsic::lifetime_end: + case Intrinsic::invariant_start: + Assert1(isa<ConstantInt>(CI.getOperand(1)), + "size argument of memory use markers must be a constant integer", + &CI); + break; + case Intrinsic::invariant_end: + Assert1(isa<ConstantInt>(CI.getOperand(2)), + "llvm.invariant.end parameter #2 must be a constant integer", &CI); + break; } } |