diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2016-02-14 09:14:30 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2016-02-14 09:14:30 +0000 |
commit | 6e0e354551de19f736de7ee2d19cd24b302b9257 (patch) | |
tree | 5f5cc4d78c5c967c4e9d88d805165470f5a3cba1 /tools/llvm-c-test | |
parent | a1d1faf8dddb2a727c44f399860dca86096ffb6e (diff) |
Move clone_params around
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260846 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-c-test')
-rw-r--r-- | tools/llvm-c-test/echo.cpp | 154 |
1 files changed, 76 insertions, 78 deletions
diff --git a/tools/llvm-c-test/echo.cpp b/tools/llvm-c-test/echo.cpp index 8d679b6928a..99e3cf0940c 100644 --- a/tools/llvm-c-test/echo.cpp +++ b/tools/llvm-c-test/echo.cpp @@ -149,7 +149,82 @@ struct TypeCloner { } }; -static ValueMap clone_params(LLVMValueRef Src, LLVMValueRef Dst); +static ValueMap clone_params(LLVMValueRef Src, LLVMValueRef Dst) { + unsigned Count = LLVMCountParams(Src); + if (Count != LLVMCountParams(Dst)) { + fprintf(stderr, "Parameter count mismatch\n"); + exit(-1); + } + + ValueMap VMap; + if (Count == 0) + return VMap; + + LLVMValueRef SrcFirst = LLVMGetFirstParam(Src); + LLVMValueRef DstFirst = LLVMGetFirstParam(Dst); + LLVMValueRef SrcLast = LLVMGetLastParam(Src); + LLVMValueRef DstLast = LLVMGetLastParam(Dst); + + LLVMValueRef SrcCur = SrcFirst; + LLVMValueRef DstCur = DstFirst; + LLVMValueRef SrcNext = nullptr; + LLVMValueRef DstNext = nullptr; + while (true) { + const char *Name = LLVMGetValueName(SrcCur); + LLVMSetValueName(DstCur, Name); + + VMap[SrcCur] = DstCur; + + Count--; + SrcNext = LLVMGetNextParam(SrcCur); + DstNext = LLVMGetNextParam(DstCur); + if (SrcNext == nullptr && DstNext == nullptr) { + if (SrcCur != SrcLast) { + fprintf(stderr, "SrcLast param does not match End\n"); + exit(-1); + } + + if (DstCur != DstLast) { + fprintf(stderr, "DstLast param does not match End\n"); + exit(-1); + } + + break; + } + + if (SrcNext == nullptr) { + fprintf(stderr, "SrcNext was unexpectedly null\n"); + exit(-1); + } + + if (DstNext == nullptr) { + fprintf(stderr, "DstNext was unexpectedly null\n"); + exit(-1); + } + + LLVMValueRef SrcPrev = LLVMGetPreviousParam(SrcNext); + if (SrcPrev != SrcCur) { + fprintf(stderr, "SrcNext.Previous param is not Current\n"); + exit(-1); + } + + LLVMValueRef DstPrev = LLVMGetPreviousParam(DstNext); + if (DstPrev != DstCur) { + fprintf(stderr, "DstNext.Previous param is not Current\n"); + exit(-1); + } + + SrcCur = SrcNext; + DstCur = DstNext; + } + + if (Count != 0) { + fprintf(stderr, "Parameter count does not match iteration\n"); + exit(-1); + } + + return VMap; +} struct FunCloner { LLVMValueRef Fun; @@ -535,83 +610,6 @@ struct FunCloner { } }; -static ValueMap clone_params(LLVMValueRef Src, LLVMValueRef Dst) { - unsigned Count = LLVMCountParams(Src); - if (Count != LLVMCountParams(Dst)) { - fprintf(stderr, "Parameter count mismatch\n"); - exit(-1); - } - - ValueMap VMap; - if (Count == 0) - return VMap; - - LLVMValueRef SrcFirst = LLVMGetFirstParam(Src); - LLVMValueRef DstFirst = LLVMGetFirstParam(Dst); - LLVMValueRef SrcLast = LLVMGetLastParam(Src); - LLVMValueRef DstLast = LLVMGetLastParam(Dst); - - LLVMValueRef SrcCur = SrcFirst; - LLVMValueRef DstCur = DstFirst; - LLVMValueRef SrcNext = nullptr; - LLVMValueRef DstNext = nullptr; - while (true) { - const char *Name = LLVMGetValueName(SrcCur); - LLVMSetValueName(DstCur, Name); - - VMap[SrcCur] = DstCur; - - Count--; - SrcNext = LLVMGetNextParam(SrcCur); - DstNext = LLVMGetNextParam(DstCur); - if (SrcNext == nullptr && DstNext == nullptr) { - if (SrcCur != SrcLast) { - fprintf(stderr, "SrcLast param does not match End\n"); - exit(-1); - } - - if (DstCur != DstLast) { - fprintf(stderr, "DstLast param does not match End\n"); - exit(-1); - } - - break; - } - - if (SrcNext == nullptr) { - fprintf(stderr, "SrcNext was unexpectedly null\n"); - exit(-1); - } - - if (DstNext == nullptr) { - fprintf(stderr, "DstNext was unexpectedly null\n"); - exit(-1); - } - - LLVMValueRef SrcPrev = LLVMGetPreviousParam(SrcNext); - if (SrcPrev != SrcCur) { - fprintf(stderr, "SrcNext.Previous param is not Current\n"); - exit(-1); - } - - LLVMValueRef DstPrev = LLVMGetPreviousParam(DstNext); - if (DstPrev != DstCur) { - fprintf(stderr, "DstNext.Previous param is not Current\n"); - exit(-1); - } - - SrcCur = SrcNext; - DstCur = DstNext; - } - - if (Count != 0) { - fprintf(stderr, "Parameter count does not match iteration\n"); - exit(-1); - } - - return VMap; -} - static LLVMValueRef clone_function(LLVMValueRef Src, LLVMModuleRef M) { const char *Name = LLVMGetValueName(Src); LLVMValueRef Fun = LLVMGetNamedFunction(M, Name); |