Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8346645
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T07:05:14+00:00 2026-06-09T07:05:14+00:00

Is there any advantage to specifying the MSVC/GCC non-standard __restrict qualifier on a function

  • 0

Is there any advantage to specifying the MSVC/GCC non-standard __restrict qualifier on a function pointer parameter if it is the only pointer parameter? For example,

int longCalculation(int a, int* __restrict b)

My guess is it should allow better optimization since it implies b does not point to a, but all examples I’ve seen __restrict two pointers to indicate no aliasing between them.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T07:05:15+00:00Added an answer on June 9, 2026 at 7:05 am

    As mentioned in the comments b can’t point to a anyways, so there is no aliasing potential there anyways. So if the function is pure in the sense that it works only on its parameters there shouldn’t be any real benefits.

    However if the function uses global variables internally then __restrict might offer benefits once again, since it makes clear that b doesn’t point to any of those global variables.

    An interesting case might be the situation where you allocate and deallocate memory inside the function. The compiler could theoretically be sure that b doesn’t point to that memory, however whether or not it realizes that I’m not sure and might depend how the allocation is called.

    Personally however I prefer to keep __restrict out of the signature and do something like this

    int longCalculation(int a, int* b){ 
       assert(...);//ensure that b doesn't point to anything used
       int* __restrict bx = b;
       ...
    }
    

    IMO this has the following advantages:

    • The function signature doesn’t expose the non standard __restrict used
    • The ability to ensure that the variables actually conform to __restrict using assert, since passing aliasing pointers to a function expecting them to be nonaliasing can lead to hard to track down bugs.
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there any advantage to conditionally defining functions in PHP? For example, if I
Is there any advantage for either approach? Example 1: class A { B b
linux gcc 4.4.1 C99 I am just wondering is there any advantage using the
Is there any advantage of using {} instead of string concatenation? An example from
is there any advantage to providing types for arguments: public static function DoStuff( string
Is there any advantage of wrapping a function with an anonymous function? I mean
Is there any advantage or where returning a iterator is more desirable that a
Is there any advantage of using XAMPP compiled with VC9 as compared to one
Is there any advantage of using int vs varbinary for storing bit masks in
Is there any advantage of having the option of using private extension methods? I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.