[LLVMdev] arch-specific predefines in LLVM's source

Hal Finkel hfinkel at anl.gov
Fri Jul 26 14:03:24 PDT 2013


----- Original Message -----
> Hi all,
>  	My recent commit r187027 fixed a simple oversight of forgetting to
> check for __ppc__ (only checking __powerpc__), which broke my
> powerpc-apple-darwin8 stage1 tests, since the system gcc only
> provided
> __ppc__.  I was wondering if this justifies using simpler macros like
> 
> #define LLVM_PPC	(defined(__ppc__) || defined(__powerpc__) ...)
> #define LLVM_PPC64	(defined(__ppc64__) || defined(__powerpc64__) ...)

A general note: Given all of the compiler variance out there regarding whether the 32-bit macros are also defined on the 64-bit systems, I really think that you'll need to arrange these as:

#define LLVM_PPC64	(defined(__ppc64__) || defined(__powerpc64__) ...)
#define LLVM_PPC	!LLVM_PPC64 && (defined(__ppc__) || defined(__powerpc__) ...)

> 
> I've even seen __POWERPC__, _POWER, _ARCH_PPC being tested in
> conditionals.
> 
> These proposed standardized macros would only be used in LLVM project
> sources; there's no reason to exported them.
> The standardized macros would simplify conditionals and make their
> use
> less error-prone.
> 
> What predefines do other architectures use?

Would all uses of these macros be restricted to the PPC backend, or would they appear elsewhere as well?

 -Hal

> 
> What would be a suitable place for these proposed macros?
> include/llvm/Support/Compiler.h?
> include/llvm/Support/Arch.h (new)?
> 
> Fang
> 
> --
> David Fang
> http://www.csl.cornell.edu/~fang/
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list