From 8bd8e90853ec347c5cf68ff7d01fa195d2ab22fc Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 31 May 2017 09:58:36 +0000 Subject: Merging r298177: ------------------------------------------------------------------------ r298177 | niravd | 2017-03-17 20:43:39 -0400 (Fri, 17 Mar 2017) | 7 lines [X86] Add NumRegisterParameters Module Flag. Reviewers: rnk, mkuper Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27051 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_40@304294 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CodeGenModule.cpp | 7 +++++++ test/CodeGen/pr3997.c | 13 +++++++++++++ test/Headers/altivec-header.c | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/pr3997.c diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index 36005430ae..f14354a12d 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -159,6 +159,12 @@ CodeGenModule::CodeGenModule(ASTContext &C, const HeaderSearchOptions &HSO, // CoverageMappingModuleGen object. if (CodeGenOpts.CoverageMapping) CoverageMapping.reset(new CoverageMappingModuleGen(*this, *CoverageInfo)); + + // Record mregparm value now so it is visible through rest of codegen. + if (Context.getTargetInfo().getTriple().getArch() == llvm::Triple::x86) + getModule().addModuleFlag(llvm::Module::Error, "NumRegisterParameters", + CodeGenOpts.NumRegisterParameters); + } CodeGenModule::~CodeGenModule() {} @@ -416,6 +422,7 @@ void CodeGenModule::Release() { (Context.getLangOpts().Modules || !LinkerOptionsMetadata.empty())) { EmitModuleLinkOptions(); } + if (CodeGenOpts.DwarfVersion) { // We actually want the latest version when there are conflicts. // We can change from Warning to Latest if such mode is supported. diff --git a/test/CodeGen/pr3997.c b/test/CodeGen/pr3997.c new file mode 100644 index 0000000000..814144cd14 --- /dev/null +++ b/test/CodeGen/pr3997.c @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 %s -triple i386-unknown-linux-gnu -mregparm 3 -emit-llvm -o - | FileCheck %s + +void *memcpy(void *dest, const void *src, unsigned int n); + +void use_builtin_memcpy(void *dest, const void *src, unsigned int n) { + __builtin_memcpy(dest, src, n); +} + +void use_memcpy(void *dest, const void *src, unsigned int n) { + memcpy(dest, src, n); +} + +//CHECK: !{i32 1, !"NumRegisterParameters", i32 3} diff --git a/test/Headers/altivec-header.c b/test/Headers/altivec-header.c index 0ea9e2b52d..26f42e1400 100644 --- a/test/Headers/altivec-header.c +++ b/test/Headers/altivec-header.c @@ -9,4 +9,4 @@ // CHECK: target triple = "powerpc64- // CHECK-NEXT: {{^$}} -// CHECK-NEXT: llvm.ident +// CHECK-NEXT: {{llvm\..*}} -- cgit v1.2.3