From 6c9d5827388d5b5a84ed5d1c5d5c8261ffcf014f Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Fri, 12 Dec 2003 15:38:06 +0000 Subject: [PATCH] Dynamically get the right-sized member of a GenericValue to hold a size_t, and use it to return the result of strlen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10433 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp index b547e5231f8..2b9cda4a6a4 100644 --- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp +++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp @@ -481,11 +481,17 @@ GenericValue lle_X_strcpy(FunctionType *M, const vector &Args) { return PTOGV(strcpy((char*)GVTOP(Args[0]), (char*)GVTOP(Args[1]))); } -// long strlen(const char *src); +// size_t strlen(const char *src); GenericValue lle_X_strlen(FunctionType *M, const vector &Args) { assert(Args.size() == 1); + size_t strlenResult = strlen ((char *) GVTOP (Args[0])); GenericValue Ret; - Ret.LongVal = strlen((char*)GVTOP(Args[0])); + if (sizeof (size_t) == sizeof (uint64_t)) { + Ret.ULongVal = strlenResult; + } else { + assert (sizeof (size_t) == sizeof (unsigned int)); + Ret.UIntVal = strlenResult; + } return Ret; }