zlaski      02/08/28 11:24:32

  Modified:    gcc      builtins.c
  Added:       gcc/testsuite/gcc.dg const-cfstring-2.c
  Log:
  Give a graceful error message when attempting to use constant CFStrings
  without the '-fconstant-cfstrings' flag.
  Bug #: 3016169, 3021042
  Submitted by: zlaski
  Reviewed by: shebs
  
  Revision  Changes    Path
  1.28      +7 -0      gcc3/gcc/builtins.c
  
  Index: builtins.c
  ===================================================================
  RCS file: /cvs/Darwin/gcc3/gcc/builtins.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- builtins.c        2002/08/26 05:39:26     1.27
  +++ builtins.c        2002/08/28 18:24:31     1.28
  @@ -4172,6 +4172,13 @@
   
       /* APPLE LOCAL begin constant cfstrings */
       case BUILT_IN___CFSTRINGMAKECONSTANTSTRING:
  +      /* This may only be used in conjunction with '-fconstant-cfstrings'.  */
  +      if (!flag_constant_cfstrings)
  +     {
  +       error ("built-in function `%s' requires `-fconstant-cfstrings' flag",
  +              IDENTIFIER_POINTER (DECL_NAME (fndecl)));
  +       return error_mark_node;
  +     }
         if (validate_arglist (arglist, POINTER_TYPE, VOID_TYPE))
        {
          tree offset_node;
  
  
  
  1.1                  gcc3/gcc/testsuite/gcc.dg/const-cfstring-2.c
  
  Index: const-cfstring-2.c
  ===================================================================
  /* APPLE LOCAL file constant cfstrings */
  /* Test whether the __builtin__CFStringMakeConstantString 
     "function" fails gracefully when used without the
     -fconstant-cfstrings flag.  */
  /* Developed by Ziemowit Laski <[EMAIL PROTECTED]>.  */
  
  /* { dg-options "-fno-constant-cfstrings" } */
  /* { dg-do compile { target *-*-darwin* } } */
  
  #include <CoreFoundation/CFBase.h>
  
  const CFStringRef S = 
((CFStringRef)__builtin___CFStringMakeConstantString("Testing"));
  /* { dg-error "built-in" "built-in function .* requires .* flag" { target *-*-* } 12 
} */
  
  
  


Reply via email to