Index: llvm/lib/Target/X86/X86TargetMachine.cpp =================================================================== --- llvm/lib/Target/X86/X86TargetMachine.cpp +++ llvm/lib/Target/X86/X86TargetMachine.cpp @@ -56,7 +56,7 @@ if (TT.isOSFreeBSD()) return make_unique(); - if (TT.isOSLinux() || TT.isOSNaCl()) + if (TT.isOSLinux() || TT.isOSNaCl() || TT.isOSIAMCU()) return make_unique(); if (TT.isOSFuchsia()) return make_unique(); Index: llvm/tools/clang/test/CodeGen/init_array_sectionMCU.c =================================================================== --- llvm/tools/clang/test/CodeGen/init_array_sectionMCU.c +++ llvm/tools/clang/test/CodeGen/init_array_sectionMCU.c @@ -0,0 +1,18 @@ +// REQUIRES: x86-registered-target + +// RUN: %clang_cc1 -triple i586-intel-elfiamcu -S -o - < %s | FileCheck %s --check-prefix=CTORS +// RUN: %clang_cc1 -triple i586-intel-elfiamcu -S -fuse-init-array -o - < %s | FileCheck %s --check-prefix=INIT_ARR +// RUN: %clang_cc1 -triple i586-intel-elfiamcu -S -fno-use-init-array -o - < %s | FileCheck %s --check-prefix=CTORS + + +int a = 1; + +void __attribute__((constructor)) foo() +{ + a = 0; +} + +// INIT_ARR: .init_array +// CTORS-NOT: .init_array +// CTORS: .ctors +// CTORS-NOT: .init_array