forked from OSchip/llvm-project
[clang][AVR] Set '-fno-use-cxa-atexit' to default
AVR is baremetal environment, so the avr-libc does not support '__cxa_atexit()'. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D118445
This commit is contained in:
parent
ac3894cf1e
commit
653836251a
|
@ -8304,12 +8304,14 @@ public:
|
|||
// Check if global/static variable is defined in address space
|
||||
// 1~6 (__flash, __flash1, __flash2, __flash3, __flash4, __flash5)
|
||||
// but not constant.
|
||||
LangAS AS = D->getType().getAddressSpace();
|
||||
if (isTargetAddressSpace(AS) && 1 <= toTargetAddressSpace(AS) &&
|
||||
toTargetAddressSpace(AS) <= 6 && !D->getType().isConstQualified())
|
||||
CGM.getDiags().Report(D->getLocation(),
|
||||
diag::err_verify_nonconst_addrspace)
|
||||
<< "__flash*";
|
||||
if (D) {
|
||||
LangAS AS = D->getType().getAddressSpace();
|
||||
if (isTargetAddressSpace(AS) && 1 <= toTargetAddressSpace(AS) &&
|
||||
toTargetAddressSpace(AS) <= 6 && !D->getType().isConstQualified())
|
||||
CGM.getDiags().Report(D->getLocation(),
|
||||
diag::err_verify_nonconst_addrspace)
|
||||
<< "__flash*";
|
||||
}
|
||||
return TargetCodeGenInfo::getGlobalVarAddressSpace(CGM, D);
|
||||
}
|
||||
|
||||
|
|
|
@ -379,6 +379,11 @@ void AVRToolChain::addClangTargetOptions(
|
|||
if (!DriverArgs.hasFlag(options::OPT_fuse_init_array,
|
||||
options::OPT_fno_use_init_array, false))
|
||||
CC1Args.push_back("-fno-use-init-array");
|
||||
// Use `-fno-use-cxa-atexit` as default, since avr-libc does not support
|
||||
// `__cxa_atexit()`.
|
||||
if (!DriverArgs.hasFlag(options::OPT_fuse_cxa_atexit,
|
||||
options::OPT_fno_use_cxa_atexit, false))
|
||||
CC1Args.push_back("-fno-use-cxa-atexit");
|
||||
}
|
||||
|
||||
Tool *AVRToolChain::buildLinker() const {
|
||||
|
|
|
@ -25,7 +25,12 @@
|
|||
// CHECK3-SAME: {{^}} "[[SYSROOT]]/usr/avr/include"
|
||||
|
||||
// RUN: %clang %s -### -target avr 2>&1 | FileCheck -check-prefix=CC1 %s
|
||||
// CC1: clang{{.*}} "-cc1" "-triple" "avr" {{.*}} "-fno-use-init-array"
|
||||
// CC1: clang{{.*}} "-cc1" "-triple" "avr" {{.*}} "-fno-use-init-array" "-fno-use-cxa-atexit"
|
||||
|
||||
// RUN: %clang %s -### -target avr -fuse-init-array -fuse-cxa-atexit 2>&1 | FileCheck -check-prefix=CHECK4 %s
|
||||
// CHECK4: clang{{.*}} "-cc1" "-triple" "avr"
|
||||
// CHECK4-NOT: "-fno-use-init-array"
|
||||
// CHECK4-NOT: "-fno-use-cxa-atexit"
|
||||
|
||||
// RUN: %clang %s -### -target avr --sysroot %S/Inputs/basic_avr_tree 2>&1 -nostdinc | FileCheck --check-prefix=NOSTDINC %s
|
||||
// RUN: %clang %s -### -target avr --sysroot %S/Inputs/basic_avr_tree 2>&1 -nostdlibinc | FileCheck --check-prefix=NOSTDINC %s
|
||||
|
|
Loading…
Reference in New Issue