From c650f1f141e966d3f8b14f5556937b8473784076 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 1 May 2009 23:54:26 +0000 Subject: [PATCH] 'The attached patch fixes an issue where llc -march=cpp fails with "Invalid primitive type" on input containing the x86_fp80 type.' Patch by Collin Winter! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70610 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/CppBackend/CPPBackend.cpp | 7 ++++--- test/CodeGen/CPP/2009-05-01-Long-Double.ll | 13 +++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 test/CodeGen/CPP/2009-05-01-Long-Double.ll diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp index ffb805691fa..6adb73ae259 100644 --- a/lib/Target/CppBackend/CPPBackend.cpp +++ b/lib/Target/CppBackend/CPPBackend.cpp @@ -359,9 +359,10 @@ namespace { unsigned BitWidth = cast(Ty)->getBitWidth(); return "IntegerType::get(" + utostr(BitWidth) + ")"; } - case Type::FloatTyID: return "Type::FloatTy"; - case Type::DoubleTyID: return "Type::DoubleTy"; - case Type::LabelTyID: return "Type::LabelTy"; + case Type::X86_FP80TyID: return "Type::X86_FP80Ty"; + case Type::FloatTyID: return "Type::FloatTy"; + case Type::DoubleTyID: return "Type::DoubleTy"; + case Type::LabelTyID: return "Type::LabelTy"; default: error("Invalid primitive type"); break; diff --git a/test/CodeGen/CPP/2009-05-01-Long-Double.ll b/test/CodeGen/CPP/2009-05-01-Long-Double.ll new file mode 100644 index 00000000000..9d132ec00f7 --- /dev/null +++ b/test/CodeGen/CPP/2009-05-01-Long-Double.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as < %s | llc -march=cpp -cppgen=program -f -o %t + +define x86_fp80 @some_func() nounwind { +entry: + %retval = alloca x86_fp80 ; [#uses=2] + %call = call i32 (...)* @other_func() ; [#uses=1] + %conv = sitofp i32 %call to x86_fp80 ; [#uses=1] + store x86_fp80 %conv, x86_fp80* %retval + %0 = load x86_fp80* %retval ; [#uses=1] + ret x86_fp80 %0 +} + +declare i32 @other_func(...) -- 2.11.0