// { dg-lto-do link }
// { dg-lto-options {{-O3 -Wno-multichar -Wno-return-type }} } 
// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }

     extern "C" {
   typedef struct __locale_struct {
  }
   *__locale_t;
   }
       typedef void * POVMSContext;
       struct POVMSData {
   };
        int POVMS_OpenContext (POVMSContext *contextrefptr);
       enum {
    kPOVMsgIdent_InitInfo = 'InIn',  kPOVMsgIdent_RenderOptions = 'ROpt',  kPOVMsgIdent_RenderAll = 'RAll',  kPOVMsgIdent_RenderArea = 'RAre',  kPOVMsgIdent_RenderPause = 'RPau',  kPOVMsgIdent_RenderStop = 'RSto',  kPOVMsgIdent_RenderStarted = 'RRun',  kPOVMsgIdent_RenderDone = 'REnd',  kPOVMsgIdent_FrameStatistics = 'FSta',  kPOVMsgIdent_ParseStatistics = 'PSta',  kPOVMsgIdent_RenderStatistics = 'RSta',  kPOVMsgIdent_Progress = 'Prog',  kPOVMsgIdent_Warning = 'Warn',  kPOVMsgIdent_Error = 'ErrW',  kPOVMsgIdent_FatalError = 'ErrF',  kPOVMsgIdent_Debug = 'Dbug' };
       namespace pov {
   }
       using namespace pov;
       namespace pov {
   int pre_init_flag = 0;
   }
       POVMSContext POVMS_Render_Context = __null;
       void povray_init() {
      if (pre_init_flag == 0)    {
        int err;
        err = POVMS_OpenContext(&POVMS_Render_Context);
     }
   }
