diff options
| author | Artyom Skrobov <Artyom.Skrobov@arm.com> | 2014-01-10 16:42:55 +0000 | 
|---|---|---|
| committer | Artyom Skrobov <Artyom.Skrobov@arm.com> | 2014-01-10 16:42:55 +0000 | 
| commit | 4d91d944aeb9930177071fa08de563852e522f7b (patch) | |
| tree | 8a5f8277502874ea17e2b6601ba54a7667fcdee8 /llvm/lib/Target/ARM | |
| parent | b16c09f241814641e821325d31515a53100e2a51 (diff) | |
| download | bcm5719-llvm-4d91d944aeb9930177071fa08de563852e522f7b.tar.gz bcm5719-llvm-4d91d944aeb9930177071fa08de563852e522f7b.zip  | |
Must not produce Tag_CPU_arch_profile for pre-ARMv7 cores (e.g. cortex-m0)
llvm-svn: 198945
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 22 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp | 1 | 
2 files changed, 13 insertions, 10 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 84d1476d044..c4303f03003 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -630,15 +630,19 @@ void ARMAsmPrinter::emitAttributes() {    ATS.emitAttribute(ARMBuildAttrs::CPU_arch,                      getArchForCPU(CPUString, Subtarget)); -  if (Subtarget->isAClass()) { -    ATS.emitAttribute(ARMBuildAttrs::CPU_arch_profile, -                      ARMBuildAttrs::ApplicationProfile); -  } else if (Subtarget->isRClass()) { -    ATS.emitAttribute(ARMBuildAttrs::CPU_arch_profile, -                      ARMBuildAttrs::RealTimeProfile); -  } else if (Subtarget->isMClass()){ -    ATS.emitAttribute(ARMBuildAttrs::CPU_arch_profile, -                      ARMBuildAttrs::MicroControllerProfile); +  // Tag_CPU_arch_profile must have the default value of 0 when "Architecture +  // profile is not applicable (e.g. pre v7, or cross-profile code)".  +  if (Subtarget->hasV7Ops()) { +    if (Subtarget->isAClass()) { +      ATS.emitAttribute(ARMBuildAttrs::CPU_arch_profile, +                        ARMBuildAttrs::ApplicationProfile); +    } else if (Subtarget->isRClass()) { +      ATS.emitAttribute(ARMBuildAttrs::CPU_arch_profile, +                        ARMBuildAttrs::RealTimeProfile); +    } else if (Subtarget->isMClass()) { +      ATS.emitAttribute(ARMBuildAttrs::CPU_arch_profile, +                        ARMBuildAttrs::MicroControllerProfile); +    }    }    ATS.emitAttribute(ARMBuildAttrs::ARM_ISA_use, Subtarget->hasARMOps() ? diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index fd9151f2d20..ec3c5fe8422 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -692,7 +692,6 @@ void ARMTargetELFStreamer::emitArchDefaultAttributes() {      break;    case ARM::ARMV6M: -    setAttributeItem(CPU_arch_profile, MicroControllerProfile, false);      setAttributeItem(THUMB_ISA_use, Allowed, false);      break;  | 

