GLEW compiler error when creating shader storage buffer

When building while defining a shader storage buffer like below, Visual Studio gives me the error "too few arguments for call" and multiple undeclared identifier and syntax errors on the line with glBufferData. I am using the newest version of GLEW, c++17, Visual Studio 2019 and my graphics card supports OpenGL 4.6. The same thing happens with glNamedBufferData other opengl functions work perfectly.

vector<int> data;  GLuint ssbo; glGenBuffers(1, &ssbo); glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo); glBufferData(GL_SHADER_STORAGE_BUFFER, data.size() * sizeof(int), &data[0]​, GL_DYNAMIC_DRAW);  glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 3, ssbo); glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); // unbind 

Is there any compiler IR paradigms other than Three Address Code and Static Single Assignment (SSA) Form?

Specifically, I have tried boiling down the operations of a VM into the smallest possible standardized units and arrived at this:

allocate_stack(size) fetch(offset_from_stack_pointer) store(offset_from_stack_pointer) call(index) 

So you might have:

allocate_stack 6 fetch -2 store 0 fetch -1 store 1 call 72 

Basically, the allocate_stack would tell you how much space you are allocating for fields in the stack. Then the fetch would queue up something relative to the stack to be stored (or fetch_a would fetch an absolute address). Then store would store the fetched value in the space relative to the stack (or store_a for absolute position). And finally, call <index> would call that specific function.

So basically these are 2-address codes instead of 3-address codes. Does anything like this exist out there where they’ve expanded upon the idea to find compiler optimizations and such, like 3-address-code and SSA form? If not like this, does anything else exist outside of 3-address-code and SSA form?

Why can’t a compiler just “think more” about optimization?

This happens to me from time to time: I compile my code with the highest optimization level (-Ofast) of the allegedly fastest compiler (GCC) of one of the fastest languages (C/C++). It takes 3 seconds. I run the compiled program, measuring performance. Then I make some trivial change (say, marking a function inline), compile it again, and it runs 20% faster.

Why? Often I’d rather wait a few minutes or even hours, but be sure that my code is at least hard to optimize further. Why does the compiler give up so quickly?

As far as I know modern architectures are super complicated and hard to a priori optimize for. Couldn’t a compiler test many possibilities and see which one is the fastest? I effectively do this by making random changes in the source code, but that doesn’t sound optimal.

Proof of the undecidability of compiler code optimization

While reading Compilers by Alfred Aho, I came across this statement:

The problem of generating the optimal target code from a source program is undecidable in general.

The Wikipedia entry on optimizing compilers reiterates the same without a proof.

Here’s my question: Is there a proof (formal or informal) of why this statement is true? If so, please provide it.

Compiler Design Assignment

1.grammar G which is context-free has the productions

S → aAB

A → Bba

B → bB

B → c

Compute the string w = ‘acbabc’ with left most derivation, right most derivation and draw Top Down parse tree.

2.Compute the First and Follow sets

S→ Aa

A→ BD

B→ b|λ

D→ d|λ

Determining Attribute Flow Compiler Construction

I am trying to determine how to actually answer these questions in my textbook. I have 3 questions which is as stated below.

These questions, i do not quite understand what the uparrow and downarrows have to do with the attribute flow and definition of this grammar.

For each of the following grammar indicate whether overall, general attribute value flow is bottom-up, top-down, left-to-right, and right-to-left.    (a).          G -> A(downarrow)l          A(downarrow)n -> B(downarrow)3n A(downarrow)7n          ->”c” C(downarrow)n-1          B(downarrow)n -> ”a” B(downarrow)n+4 “b” C(downarrow)2n          -> ”b”          -> ”c”        (b)         G -> A(uparrow)x          A(uparrow)n -> B(uparrow)u (uparrow)v  A(uparrow)y        [x=uy+v]          -> ”c” C(uparrow)z                                        [x=2z]          B(uparrow)v -> ”a” B(uparrow)r(uparrow)s“b” C(uparrow)x   [u=2r+x-s; v=s+1]          -> ”b”                                                    [u=1; v=2]          C(uparrow)x  -> ”c”                                       [x=3]   (c)          G -> A(downarrow)0(uparrow)r          A(downarrow)x(uparrow)z -> B(downarrow)y (uparrow)z  A(downarrow) x(uparrow)y                            -> ”c”  C(downarrow)x(uparrow)y                                       [z=10y+3]          B x w -> “a” B(downarrow)10y+2(uparrow)z “b” C(downarrow)x(uparrow)y  [w=10z+1]          -> ”b”                                                                [w=10x+2]          C x y -> ”c”                                                         [y=10x+3] 

Compiler Shows: Abort Called [migrated]

When does a C++ compiler give a this message : “terminate called after throwing an instance of ‘std::out_of_range'”? I was trying this problem a website. I wrote an algorithm but the code won’t compile.

enter image description here

The algorithm I wrote was this:

int stringSimilarity(string s) { int size=s.size(), sum=0;  for(int i=0; i<size; i++) {     string sub_str; int temp_sum=0;     //Creating a substring for comparison     for(int j=i, l=0; j<size, l<size-i; j++, l++)                {         sub_str.at(l)=s.at(j);     }      if(sub_str.at(0)==s.at(0))     {         temp_sum++;         int k=1;         while(sub_str.at(k)==s.at(k))         {             temp_sum++;             k++;         }     }     sum=sum+temp_sum; }  return sum;} 

Can someone please tell me where am I going wrong?

enter image description here

CLion wont track compiler via wsl

downloaded compiler and everything. Tho for some reason it downloads only cmake 3.10 and I need 3.15. I updated it following this guide How do I install the latest version of cmake from the command line? but my clion just wont use the cmake 3.15 prntscr of terminal and clion toolchain settings. Im quite begginer to this, I used to code in C, but I had to learn c++ in which I need newer version of cmake. Thank you very much for every advice.