Do some refactoring in constant generation in the C API echo test. NFC

llvm-svn: 260941
This commit is contained in:
Amaury Sechet 2016-02-16 07:33:23 +00:00
parent 7ffd22e2c1
commit b292899083

View File

@ -221,14 +221,12 @@ LLVMValueRef clone_constant(LLVMValueRef Cst, LLVMModuleRef M) {
const char *Name = LLVMGetValueName(Cst);
// Try function
LLVMValueRef Dst = LLVMGetNamedFunction(M, Name);
if (Dst != nullptr)
return Dst;
if (LLVMIsAFunction(Cst))
return LLVMGetNamedFunction(M, Name);
// Try global variable
Dst = LLVMGetNamedGlobal(M, Name);
if (Dst != nullptr)
return Dst;
if (LLVMIsAGlobalVariable(Cst))
return LLVMGetNamedGlobal(M, Name);
fprintf(stderr, "Could not find @%s\n", Name);
exit(-1);
@ -243,8 +241,12 @@ LLVMValueRef clone_constant(LLVMValueRef Cst, LLVMModuleRef M) {
if (LLVMIsUndef(Cst))
return LLVMGetUndef(TypeCloner(M).Clone(Cst));
// This kind of constant is not supported.
report_fatal_error("Unsupported contant type");
// This kind of constant is not supported
if (!LLVMIsAConstantExpr(Cst))
report_fatal_error("Expected a constant expression");
// At this point, it must be a constant expression
report_fatal_error("ConstantExpression are not supported");
}
struct FunCloner {