[PATCH] D38366: Fix a warning about casting a const pointer to void*

2017-09-28 Thread Nikolai Bozhenov via Phabricator via cfe-commits
n.bozhenov abandoned this revision.
n.bozhenov added a comment.

Seems that it has been just fixed by https://reviews.llvm.org/rL314424 :-)
Abandoning this review.


https://reviews.llvm.org/D38366



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D38366: Fix a warning about casting a const pointer to void*

2017-09-28 Thread Nikolai Bozhenov via Phabricator via cfe-commits
n.bozhenov created this revision.

https://reviews.llvm.org/rL314336 introduced a new compile time warning about 
casting a const pointer to void*. Because of that the compiler fails to be 
built with `-Werror` flag. The suggested patch fixes the issue.


https://reviews.llvm.org/D38366

Files:
  clang/lib/AST/ExternalASTMerger.cpp


Index: clang/lib/AST/ExternalASTMerger.cpp
===
--- clang/lib/AST/ExternalASTMerger.cpp
+++ clang/lib/AST/ExternalASTMerger.cpp
@@ -212,7 +212,7 @@
 }
 if (!DidCallback && LoggingEnabled())
   logs() << "(ExternalASTMerger*)" << (void*)this
- << " asserting for (DeclContext*)" << (void*)DC
+ << " asserting for (DeclContext*)" << (const void*)DC
  << ", (ASTContext*)" << (void*)
  << "\n";
 assert(DidCallback && "Couldn't find a source context matching our DC");


Index: clang/lib/AST/ExternalASTMerger.cpp
===
--- clang/lib/AST/ExternalASTMerger.cpp
+++ clang/lib/AST/ExternalASTMerger.cpp
@@ -212,7 +212,7 @@
 }
 if (!DidCallback && LoggingEnabled())
   logs() << "(ExternalASTMerger*)" << (void*)this
- << " asserting for (DeclContext*)" << (void*)DC
+ << " asserting for (DeclContext*)" << (const void*)DC
  << ", (ASTContext*)" << (void*)
  << "\n";
 assert(DidCallback && "Couldn't find a source context matching our DC");
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D36453: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h)

2017-08-08 Thread Nikolai Bozhenov via Phabricator via cfe-commits
n.bozhenov closed this revision.
n.bozhenov added a comment.

committed r310359


https://reviews.llvm.org/D36453



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D36453: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h)

2017-08-08 Thread Nikolai Bozhenov via Phabricator via cfe-commits
n.bozhenov added a comment.

If the patch is accepted, it should also be merged into 5.0, I believe.


https://reviews.llvm.org/D36453



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D36453: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h)

2017-08-08 Thread Nikolai Bozhenov via Phabricator via cfe-commits
n.bozhenov created this revision.

Fixes a regression introduced by r308218.


https://reviews.llvm.org/D36453

Files:
  clang/include/clang-c/Index.h


Index: clang/include/clang-c/Index.h
===
--- clang/include/clang-c/Index.h
+++ clang/include/clang-c/Index.h
@@ -3206,6 +3206,8 @@
   CXCallingConv_X86RegCall = 8,
   CXCallingConv_IntelOclBicc = 9,
   CXCallingConv_Win64 = 10,
+  /* Alias for compatibility with older versions of API. */
+  CXCallingConv_X86_64Win64 = CXCallingConv_Win64,
   CXCallingConv_X86_64SysV = 11,
   CXCallingConv_X86VectorCall = 12,
   CXCallingConv_Swift = 13,


Index: clang/include/clang-c/Index.h
===
--- clang/include/clang-c/Index.h
+++ clang/include/clang-c/Index.h
@@ -3206,6 +3206,8 @@
   CXCallingConv_X86RegCall = 8,
   CXCallingConv_IntelOclBicc = 9,
   CXCallingConv_Win64 = 10,
+  /* Alias for compatibility with older versions of API. */
+  CXCallingConv_X86_64Win64 = CXCallingConv_Win64,
   CXCallingConv_X86_64SysV = 11,
   CXCallingConv_X86VectorCall = 12,
   CXCallingConv_Swift = 13,
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D33356: [Nios2] Changes in frontend to support Nios2 LLVM target

2017-06-08 Thread Nikolai Bozhenov via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL304994: Frontend support for Nios2 target. (authored by 
n.bozhenov).

Changed prior to commit:
  https://reviews.llvm.org/D33356?vs=100674=101941#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D33356

Files:
  cfe/trunk/include/clang/Basic/BuiltinsNios2.def
  cfe/trunk/include/clang/Basic/TargetBuiltins.h
  cfe/trunk/lib/Basic/Targets.cpp
  cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
  cfe/trunk/test/Driver/nios2-cpu.c

Index: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
===
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
@@ -215,6 +215,21 @@
   return "";
 }
 
+static std::string getNios2TargetCPU(const ArgList ) {
+  Arg *A = Args.getLastArg(options::OPT_mcpu_EQ);
+  if (!A)
+A = Args.getLastArg(options::OPT_march_EQ);
+
+  if (!A)
+return "";
+
+  const char *name = A->getValue();
+  return llvm::StringSwitch(name)
+  .Case("r1", "nios2r1")
+  .Case("r2", "nios2r2")
+  .Default(name);
+}
+
 static std::string getLanaiTargetCPU(const ArgList ) {
   if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
 return A->getValue();
@@ -267,6 +282,10 @@
   return A->getValue();
 return "";
 
+  case llvm::Triple::nios2: {
+return getNios2TargetCPU(Args);
+  }
+
   case llvm::Triple::mips:
   case llvm::Triple::mipsel:
   case llvm::Triple::mips64:
Index: cfe/trunk/lib/Basic/Targets.cpp
===
--- cfe/trunk/lib/Basic/Targets.cpp
+++ cfe/trunk/lib/Basic/Targets.cpp
@@ -7702,6 +7702,148 @@
   }
 };
 
+class Nios2TargetInfo : public TargetInfo {
+  void setDataLayout() {
+if (BigEndian)
+  resetDataLayout("E-p:32:32:32-i8:8:32-i16:16:32-n32");
+else
+  resetDataLayout("e-p:32:32:32-i8:8:32-i16:16:32-n32");
+  }
+
+  static const Builtin::Info BuiltinInfo[];
+  std::string CPU;
+  std::string ABI;
+
+public:
+  Nios2TargetInfo(const llvm::Triple , const TargetOptions )
+  : TargetInfo(triple), CPU(opts.CPU), ABI(opts.ABI) {
+SizeType = UnsignedInt;
+PtrDiffType = SignedInt;
+MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 32;
+setDataLayout();
+  }
+
+  StringRef getABI() const override { return ABI; }
+  bool setABI(const std::string ) override {
+if (Name == "o32" || Name == "eabi") {
+  ABI = Name;
+  return true;
+}
+return false;
+  }
+
+  bool setCPU(const std::string ) override {
+if (Name == "nios2r1" || Name == "nios2r2") {
+  CPU = Name;
+  return true;
+}
+return false;
+  }
+
+  void getTargetDefines(const LangOptions ,
+MacroBuilder ) const override {
+DefineStd(Builder, "nios2", Opts);
+DefineStd(Builder, "NIOS2", Opts);
+
+Builder.defineMacro("__nios2");
+Builder.defineMacro("__NIOS2");
+Builder.defineMacro("__nios2__");
+Builder.defineMacro("__NIOS2__");
+  }
+
+  ArrayRef getTargetBuiltins() const override {
+return llvm::makeArrayRef(BuiltinInfo, clang::Nios2::LastTSBuiltin -
+   Builtin::FirstTSBuiltin);
+  }
+
+  bool isFeatureSupportedByCPU(StringRef Feature, StringRef CPU) const {
+const bool isR2 = CPU == "nios2r2";
+return llvm::StringSwitch(Feature)
+.Case("nios2r2mandatory", isR2)
+.Case("nios2r2bmx", isR2)
+.Case("nios2r2mpx", isR2)
+.Case("nios2r2cdx", isR2)
+.Default(false);
+  }
+
+  bool initFeatureMap(llvm::StringMap ,
+  DiagnosticsEngine , StringRef CPU,
+  const std::vector ) const override {
+static const char *allFeatures[] = {
+  "nios2r2mandatory", "nios2r2bmx", "nios2r2mpx", "nios2r2cdx"
+};
+for (const char *feature : allFeatures) {
+  Features[feature] = isFeatureSupportedByCPU(feature, CPU);
+}
+return true;
+  }
+
+  bool hasFeature(StringRef Feature) const override {
+return isFeatureSupportedByCPU(Feature, CPU);
+  }
+
+  BuiltinVaListKind getBuiltinVaListKind() const override {
+return TargetInfo::VoidPtrBuiltinVaList;
+  }
+
+  ArrayRef getGCCRegNames() const override {
+static const char *const GCCRegNames[] = {
+  // CPU register names
+  // Must match second column of GCCRegAliases
+  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
+  "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
+  "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30",
+  "r31",
+  // Floating point register names
+  "ctl0", "ctl1", "ctl2", "ctl3", "ctl4", "ctl5", "ctl6", "ctl7", "ctl8",
+  "ctl9", "ctl10", "ctl11", "ctl12", "ctl13", "ctl14", "ctl15"
+};
+return llvm::makeArrayRef(GCCRegNames);
+  }
+
+  bool validateAsmConstraint(const char *,
+ 

[PATCH] D32543: [X86] Clang option -fuse-init-array has no effect when generating for MCU target

2017-05-09 Thread Nikolai Bozhenov via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL302513: [X86] Clang option -fuse-init-array has no effect 
when generating for MCU target (authored by n.bozhenov).

Changed prior to commit:
  https://reviews.llvm.org/D32543?vs=97866=98262#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D32543

Files:
  llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
  llvm/trunk/test/CodeGen/X86/constructor.ll


Index: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
===
--- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
+++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
@@ -87,7 +87,7 @@
 
   if (TT.isOSFreeBSD())
 return llvm::make_unique();
-  if (TT.isOSLinux() || TT.isOSNaCl())
+  if (TT.isOSLinux() || TT.isOSNaCl() || TT.isOSIAMCU())
 return llvm::make_unique();
   if (TT.isOSFuchsia())
 return llvm::make_unique();
Index: llvm/trunk/test/CodeGen/X86/constructor.ll
===
--- llvm/trunk/test/CodeGen/X86/constructor.ll
+++ llvm/trunk/test/CodeGen/X86/constructor.ll
@@ -3,6 +3,8 @@
 ; RUN: llc -mtriple x86_64-pc-linux < %s | FileCheck --check-prefix=INIT-ARRAY 
%s
 ; RUN: llc -mtriple x86_64-unknown-freebsd < %s | FileCheck 
--check-prefix=INIT-ARRAY %s
 ; RUN: llc -mtriple x86_64-unknown-nacl < %s | FileCheck --check-prefix=NACL %s
+; RUN: llc -mtriple i586-intel-elfiamcu -use-ctors < %s | FileCheck %s 
--check-prefix=MCU-CTORS
+; RUN: llc -mtriple i586-intel-elfiamcu < %s | FileCheck %s 
--check-prefix=MCU-INIT-ARRAY
 @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [{ i32, 
void ()*, i8* } { i32 65535, void ()* @f, i8* null}, { i32, void ()*, i8* } { 
i32 15, void ()* @g, i8* @v }]
 
 @v = weak_odr global i8 0
@@ -37,3 +39,6 @@
 ; NACL-NEXT:   .section.init_array,"aw",@init_array
 ; NACL-NEXT:   .p2align2
 ; NACL-NEXT:   .long   f
+
+; MCU-CTORS: .section.ctors,"aw",@progbits
+; MCU-INIT-ARRAY:.section.init_array,"aw",@init_array


Index: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
===
--- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
+++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
@@ -87,7 +87,7 @@
 
   if (TT.isOSFreeBSD())
 return llvm::make_unique();
-  if (TT.isOSLinux() || TT.isOSNaCl())
+  if (TT.isOSLinux() || TT.isOSNaCl() || TT.isOSIAMCU())
 return llvm::make_unique();
   if (TT.isOSFuchsia())
 return llvm::make_unique();
Index: llvm/trunk/test/CodeGen/X86/constructor.ll
===
--- llvm/trunk/test/CodeGen/X86/constructor.ll
+++ llvm/trunk/test/CodeGen/X86/constructor.ll
@@ -3,6 +3,8 @@
 ; RUN: llc -mtriple x86_64-pc-linux < %s | FileCheck --check-prefix=INIT-ARRAY %s
 ; RUN: llc -mtriple x86_64-unknown-freebsd < %s | FileCheck --check-prefix=INIT-ARRAY %s
 ; RUN: llc -mtriple x86_64-unknown-nacl < %s | FileCheck --check-prefix=NACL %s
+; RUN: llc -mtriple i586-intel-elfiamcu -use-ctors < %s | FileCheck %s --check-prefix=MCU-CTORS
+; RUN: llc -mtriple i586-intel-elfiamcu < %s | FileCheck %s --check-prefix=MCU-INIT-ARRAY
 @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @f, i8* null}, { i32, void ()*, i8* } { i32 15, void ()* @g, i8* @v }]
 
 @v = weak_odr global i8 0
@@ -37,3 +39,6 @@
 ; NACL-NEXT:	.section	.init_array,"aw",@init_array
 ; NACL-NEXT:	.p2align	2
 ; NACL-NEXT:	.long	f
+
+; MCU-CTORS: .section.ctors,"aw",@progbits
+; MCU-INIT-ARRAY:.section.init_array,"aw",@init_array
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits